mediantdoc.ps1


<#PSScriptInfo
 
.VERSION 0.0.1
 
.GUID 3f2891e3-e02e-4b8c-ae49-3dcf2a2335b3
 
.AUTHOR Shane Hoey
 
.COMPANYNAME
 
.COPYRIGHT 2018 Shane Hoey
 
.TAGS Mediant
 
.LICENSEURI https://shanehoey.github.io/mediantdoc/license
 
.PROJECTURI https://shanehoey.github.io/mediantdoc
 
.ICONURI
 
.EXTERNALMODULEDEPENDENCIES
 
.REQUIREDSCRIPTS
 
.EXTERNALSCRIPTDEPENDENCIES
 
.RELEASENOTES
https://shanehoey.github.io/mediantdoc
 
#>
 

#Requires -Module WordDoc




<#
 
.DESCRIPTION
Create an As-Built Document for an AudioCodes Mediant Gateway
 
#>
 
<#
MIT License
 
Copyright (c) 2016-2018 Shane Hoey
 
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
 
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
 
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
 
#>

[cmdletbinding(DefaultParameterSetName = "Default")]
Param(  

    [ValidateNotNullOrEmpty()]
    [ValidateScript( {(Test-Path $_) -and ((Get-Item $_).Extension -eq ".ini")})]  
    [Parameter(ValueFromPipeline = $false, Mandatory = $false, ParameterSetName = "MediantConfigFile")]
    [string]$MediantConfigFile,

    [ValidateNotNullOrEmpty()]
    [Parameter(ValueFromPipeline = $false, Mandatory = $false, ParameterSetName = "MediantDevice")]
    [string]$MediantDevice,

    [ValidateNotNullOrEmpty()]
    [Parameter(ValueFromPipeline = $false, Mandatory = $false, ParameterSetName = "MediantDevice")]
    $MediantDeviceCredential,

    [ValidateNotNullOrEmpty()]
    [ValidateSet("HTTP", "HTTPS")]
    [Parameter(ValueFromPipeline = $false, Mandatory = $false, ParameterSetName = "MediantDevice")]
    [string]$MediantDeviceProtocol = "HTTP",

    [ValidateNotNullOrEmpty()]  
    [ValidateScript( {(Test-Path $_) -and ((Get-Item $_).Extension -like ".do*x")})]  
    [Parameter(ValueFromPipeline = $false, Mandatory = $false, ParameterSetName = "MediantConfigFile")]
    [Parameter(ValueFromPipeline = $false, Mandatory = $false, ParameterSetName = "MediantDevice")]
    [Parameter(ValueFromPipeline = $false, Mandatory = $false, ParameterSetName = "Default")]
    [string]$WordTemplate,  
    
    [ValidateNotNullOrEmpty()]  
    [ValidateScript( {(Test-Path $_) -and ((Get-Item $_).Extension -like ".json")})]  
    [Parameter(ValueFromPipeline = $false, Mandatory = $false, ParameterSetName = "MediantConfigFile")]
    [Parameter(ValueFromPipeline = $false, Mandatory = $false, ParameterSetName = "MediantDevice")]
    [Parameter(ValueFromPipeline = $false, Mandatory = $false, ParameterSetName = "Default")]
    [string]$DesignJson,

    [Parameter(ValueFromPipeline = $false, Mandatory = $false, ParameterSetName = "MediantConfigFile")]
    [Parameter(ValueFromPipeline = $false, Mandatory = $false, ParameterSetName = "MediantDevice")]
    [Parameter(ValueFromPipeline = $false, Mandatory = $false, ParameterSetName = "Default")]
    [switch]$DownloadSampleDesignText,

    [Parameter( Mandatory = $false, ParameterSetName = "MediantConfigFile")]
    [Parameter( Mandatory = $false, ParameterSetName = "MediantDevice")]
    [Parameter( Mandatory = $false, ParameterSetName = "Default")]
    [bool]$notifyupdates = $true

)

try { import-module -name WordDoc -ErrorAction Stop } catch { Write-Warning "WordDoc Module is required , to install -> install-module -name worddoc -scope currentuser"; break }
try { import-module -name Mediant -ErrorAction Stop } catch { Write-Warning "Mediant Module is Optional, to install -> install-module -name mediant -scope currentuser`n" ; $mediantimportfail = $true }

$section = @{}
$section["CoverPage"] = $true
$section["MediantOverview"] = $true
$section["IPNetwork"] = $true
$section["SignalingMedia"] = $true
$section["Administration"] = $true
$section["Troubleshoot"] = $true
$section["Appendix"] = $true
$section["Dev"] = $true # this should only be true when developing the script as it adds sections not yet completed

#requires -Version 5.0

#Lists
class Mediant {
  [string]$Mediant_Board
  [string]$Mediant_BoardType
  [string]$Mediant_KeyFeatures
  [string]$Mediant_SerialNumber
  [string]$Mediant_SoftwareVersion
  [string]$Mediant_DSPSoftwareVersion
}
Update-TypeData -TypeName Mediant -MemberType ScriptMethod -MemberName 'view' -Value { $this }  -Force
Update-TypeData -TypeName Mediant -MemberType ScriptMethod -MemberName 'viewDoc' -Value { $this | Select-Object -Property Mediant_Board, Mediant_BoardType, Mediant_SerialNumber, Mediant_SoftwareVersion, Mediant_DSPSoftwareVersion } -Force
Update-TypeData -TypeName Mediant -MemberType ScriptMethod -MemberName 'viewKeyfeatures' -Value { $this.Mediant_KeyFeatures } -Force

$itemindex_mediant.foreach({ update-typedata -typename Mediant -MemberType AliasProperty -Membername $_.split("_")[1] -value $_   })

class SystemParams {
  #Security Settings
  $RequireStrictCert = '0'
  $TLSExpiryCheckStart = '60'
  $TLSExpiryCheckPeriod = '7'
  #NTP
  $NTPServerIP
  $NTPSecondaryServerIP
  $NTPUpdateInterval
  $ntpAuthMd5Key
  $NTPServerUTCOffset
  #Daylight Savings
  $DayLightSavingTimeEnable
  $DayLightSavingTimeStart
  $DayLightSavingTimeEnd
  $DayLightSavingTimeOffset
  #TR069
  $TR069ACSPASSWORD 
  $TR069CONNECTIONREQUESTPASSWORD
  #Telnet
  $TelnetServerEnable = '1'
  $TelnetServerPort = '23'
  $TelnetServerIdleDisconnect = '0'
  $TelnetMaxSessions = '2'
  $CLIPrivPass
  $DefaultTerminalWindowHeight = '-1'
  #SSH
  $SSHServerEnable = '0' 
  $SSHServerPort = '22'
  $SSHAdminKey 
  $SSHRequirePublicKey = '0'
  $SSHMaxPayloadSize = '32768' 
  $SSHMaxBinaryPacketSize = '35000'
  $SSHMaxSessions = '5'
  $SSHMaxLoginAttempts = '3'
  $SSHEnableLastLoginMessage = '1'
  #Syslog
  $EnableSyslog = '0'
  $SyslogServerIP = '0.0.0.0'
  $SyslogServerPort = '514'
  $CDRSyslogServerIP 
  $CDRReportLevel = '0'
  $MediaCDRReportLevel = '0'
  $CDRLocalMaxFileSize = '1024'
  $CDRLocalMaxNumOfFiles = '5'
  $CDRLocalInterval = '60'
  $GwDebugLevel = '0'
  $EnableNonCallCdr  = '0'
  $SyslogOptimization = '0' 
  $MaxBundleSyslogLength = '1220'
  $SyslogCpuProtection = '0'
  $DebugLevelHighThreshold = '90'
  $SyslogFacility = '16' 
  $CallDurationUnits = '0'
  $TimeZoneFormat 
  $CDRSyslogSeqNum = '0'
  $SendAcSessionIDHeader = '0'
  $ActivityListToLog
  $EnableParametersMonitoring = '0'
  $FacilityTrace = '0'
  $DebugRecordingDestIP
  $DebugRecordingDestPort
  $EnableCoreDump = '0'
  $CoreDumpDestIP
  $CallFlowReportMode = '0'
  #HA Settings
  $HARemoteAddress = '0.0.0.0'
  $HARevertiveEnabled = '0' 
  $HAPriority = '5'
  $HAUnitIdName = "" 
  $HAPingEnabled = '0' 
  $HAPingDestination = '::'
  $HAPingSourceIfName
  $HAPingTimeout = '1'
  $HAPingRetries = '2'
  #AuthenticationServerGeneral
  $DefaultAccessLevel =200
  #Unordered
  $EnableActivityTrap
  $LDAPServiceEnable

}
Update-TypeData -TypeName SystemParams -MemberType Scriptmethod -MemberName 'viewHASettings_HighAvailability' -Value { $this | Select-Object -Property HARemoteAddress, HARevertiveEnabled, HAPriority, HAUnitIdName} -Force    
Update-TypeData -TypeName SystemParams -MemberType Scriptmethod -MemberName 'viewHASettings_NetworkReachability' -Value { $this | Select-Object -Property  HAPingEnabled, HAPingDestination, HAPingSourceIfName, HAPingTimeout, HAPingRetries } -Force    
Update-TypeData -TypeName SystemParams -MemberType Scriptmethod -MemberName 'viewSecuritySettings_TLSGeneral' -Value { $this | Select-Object -Property RequireStrictCert, TLSExpiryCheckStart, TLSExpiryCheckPeriod } -Force      
Update-TypeData -TypeName SystemParams -MemberType Scriptmethod -MemberName 'viewAuthenticationServerGeneral' -Value { $this | Select-Object -Property DefaultAccessLevel } -Force      

class BSPParams {
  
  #DHCP
  $DHCPEnable = '0'
  #QosSettings
  $PremiumServiceClassMediaDiffServ ="46"
  $PremiumServiceClassControlDiffServ = "24"
  $GoldServiceClassDiffServ = "26"
  $BronzeServiceClassDiffServ = "10"
  #ICMP
  $DisableICMPRedirects = '0'
  $DisableICMPUnreachable = '0'
  #
  $PCMLawSelect 
  $BaseUDPPort
  $UdpPortSpacing
  $EnterCpuOverloadPercent
  $ExitCpuOverloadPercent
  $RoutingServerGroupStatus
  $QOEServerIp
  $QOEEnableTLS
  $QOERedundantServerIp
  $QoETLSContextName
  $QOEReportMode
  $INIFileVersion
}
Update-TypeData -TypeName BSPParams -MemberType Scriptmethod -MemberName 'viewQosSettings_General' -Value { $this | Select-Object -Property "PremiumServiceClassMediaDiffServ","PremiumServiceClassControlDiffServ","GoldServiceClassDiffServ","BronzeServiceClassDiffServ" } -Force
Update-TypeData -TypeName BSPParams -MemberType Scriptmethod -MemberName 'viewNetworkSettings_ICMP' -Value { $this | Select-Object -Property "DisableICMPRedirects","DisableICMPUnreachable" } -Force
Update-TypeData -TypeName BSPParams -MemberType Scriptmethod -MemberName 'viewNetworkSettings_DHCP' -Value { $this | Select-Object -Property "DHCPEnable" } -Force

class ControlProtocolsParams {
  $RoutingServerGroupStatus
  $AdminStateLockControl
}
Update-TypeData -TypeName ControlProtocolsParams -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | Select-Object -Property @{n="Topology Status";e={$_.RoutingServerGroupStatus} } } -Force

class MEGACOParams {
  $EP_Num_0
  $EP_Num_1
  $EP_Num_2 
  $EP_Num_3
  $EP_Num_4
}

class VoiceEngineParams {

  #General
  $EnableMediaSecurity = 0
  $AriaProtocolSupport
  #Master Key Idenifier
  $SRTPTxPacketMKISize
  #Authentication & Encryption
  $RTPAuthenticationDisableTx
  $RTCPEncryptionDisableTx
  $RTPEncryptionDisableTx
  $SRTPTunnelingValidateRTPRxAuthentication
  $SRTPTunnelingValidateRTCPRxAuthentication
  #Robustness
  $TimeoutToRelatchRTPMsec
  $TimeoutToRelatchSRTPMsec
  $TimeoutToRelatchSilenceMsec
  $TimeoutToRelatchRTCPMsec
  $NewRtpStreamPackets
  $NewSRTPStreamPackets 
  $NewRtcpStreamPackets
  $NewSRtcpStreamPackets
  #MediaSettingsGeneral
  $NatMode
  $EnableContinuityTones = 0
  $L1L1ComplexRxUDPPort = 0
  $L1L1ComplexTxUDPPort = 0
  $EnableSilenceCompression 
  $EnableEchoCanceller
  $VoiceVolume
  $InputGain
  $BrokenConnectionEventTimeout
  $DTMFVolume
  $DTMFTransportType
  $CallerIDTransportType 
  $CallerIDType 
  $FaxTransportMode 
  $V21ModemTransportType
  $V22ModemTransportType  
  $V23ModemTransportType  
  $V32ModemTransportType  
  $V34ModemTransportType  
  $FaxRelayMaxRate 
  $FaxRelayECMEnable 
  $FaxRelayRedundancyDepth 
  $FaxRelayEnhancedRedundancyDepth 
  $CNGDetectorMode  
  $DJBufMinDelay
  $DJBufOptFactor 
  $RTPRedundancyDepth 
  $RTPPackingFactor 
  $RFC2833TxPayloadType 
  $RFC2833RxPayloadType 
  $RFC2198PayloadType
  $FaxBypassPayloadType 
  $ModemBypassPayloadType
  $EnableStandardSIDPayloadType 
  $EnableAnswerDetector 
  $AnswerDetectorActivityDelay 
  $AnswerDetectorSilenceTime 
  $AnswerDetectorRedirection
  $AnswerDetectorSensitivity 
  $EnableEnergyDetector
  $EnergyDetectorQualityFactor
  $EnergyDetectorThreshold
  $EnablePatternDetector
  $EnableDSPIPMDetectors 
  $ACTIVESPEAKERSNOTIFICATIONMININTERVAL
  $DTMFGenerationTwist 
  $AMDDetectionSensitivity
  $G729EVMaxBitRate
  $G729EVLocalMBS
  $G729EVReceiveMBS 
  $NTEMaxDuration 
  $CEDTransferMode 
  $AMDBeepDetectionTimeout 
  $AMDBeepDetectionSensitivity 
  $MSRTAForwardErrorCorrectionEnable  
  $AMDSensitivityLevel 
  $AMDSensitivityParameterSuit 
  $RtpFWNonConfiguredPTHandling 
  $SilkTxInbandFEC  
  $ECHOCANCELLERType
  $ACOUSTICECHOSUPPMAXERLTHRESHOLD 
  $ACOUSTICECHOSUPPATTENUATIONINTENSITY 
  $ACOUSTICECHOSUPPMINREFDELAYx10MS 
  $ACOUSTICECHOSUPPRESSORSUPPORT
  $AmrOctetAlignedEnable 
  $RTPFWInvalidPacketHandling 
  $MediaSecurityBehaviour 
  $EnableSymmetricMKI 
  $SRTPofferedSuites = 0
  $ResetSRTPStateUponRekey 
}
Update-TypeData -TypeName WebParams -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | Select-Object -Property * } -Force
Update-TypeData -TypeName WebParams -MemberType Scriptmethod -MemberName 'viewRobustness' -Value { $this | Select-Object -Property TimeoutToRelatchRTPMsec,TimeoutToRelatchSRTPMsec,TimeoutToRelatchSilenceMsec,TimeoutToRelatchRTCPMsec,NewRtpStreamPackets,NewSRTPStreamPackets,NewRtcpStreamPackets,NewSRtcpStreamPackets } -Force

class WebParams {
  #AUthenticationServerGeneral
  $MGMTUSELOCALUSERSDATABASE = 0
  $MGMTBEHAVIORONTIMEOUT = 1
  $MGMTLOGINCACHEMODE = 1
  $MGMTLOGINCACHETIMEOUT = 900
  #AUthenticationServerRadius
  $EnableRADIUS = 0
  $WEBRADIUSLOGIN = 0
  $RadiusVSAVendorID =5003
  $RadiusVSAAccessAttribute =35
  $RADIUSTo = 2 
  $RADIUSRetransmission = 1 
  #AuthenticationServerLDAP
  $MGMTLDAPLOGIN = 0 
  $CustomerSN 
  $DenyAccessOnFailCount = '3'
  $DenyAuthenticationTimer = '60'
  $DisableWebConfig = '0'
  $DisplayLoginInformation = '0'
  $EnableMgmtTwoFactorAuthentication = '0'
  $EnableWebAccessFromAllInterfaces = '0'
  $EnforcePasswordComplexity = '0'
  $HTTPport = '80'
  $HTTPSCipherString
  $HTTPSPort = '80'
  $HTTPSRequireClientCertificate = '0' 
  $LogoFileName
  $LogoWidth = '145'
  $ResetWebPassword = '0'
  $UseProductName = '0'
  $UserInactivityTimer = '90'
  $UserProductName 
  $UseWebLogo = '0'
  $WebAccessList_0 = '0.0.0.0'
  $WebAccessList_1 = '0.0.0.0'
  $WebAccessList_10 = '0.0.0.0'
  $WebAccessList_11 = '0.0.0.0'
  $WebAccessList_12 = '0.0.0.0'
  $WebAccessList_13 = '0.0.0.0'
  $WebAccessList_14 = '0.0.0.0'
  $WebAccessList_15 = '0.0.0.0'
  $WebAccessList_16 = '0.0.0.0'
  $WebAccessList_17 = '0.0.0.0'
  $WebAccessList_18 = '0.0.0.0'
  $WebAccessList_19 = '0.0.0.0'
  $WebAccessList_2 = '0.0.0.0'
  $WebAccessList_20 = '0.0.0.0'
  $WebAccessList_21 = '0.0.0.0'
  $WebAccessList_22 = '0.0.0.0'
  $WebAccessList_23 = '0.0.0.0'
  $WebAccessList_24 = '0.0.0.0'
  $WebAccessList_25 = '0.0.0.0'
  $WebAccessList_26 = '0.0.0.0'
  $WebAccessList_27 = '0.0.0.0'
  $WebAccessList_28 = '0.0.0.0'
  $WebAccessList_29 = '0.0.0.0'
  $WebAccessList_3 = '0.0.0.0'
  $WebAccessList_30 = '0.0.0.0'
  $WebAccessList_31 = '0.0.0.0'
  $WebAccessList_32 = '0.0.0.0'
  $WebAccessList_33 = '0.0.0.0'
  $WebAccessList_34 = '0.0.0.0'
  $WebAccessList_35 = '0.0.0.0'
  $WebAccessList_36 = '0.0.0.0'
  $WebAccessList_37 = '0.0.0.0'
  $WebAccessList_38 = '0.0.0.0'
  $WebAccessList_39 = '0.0.0.0'
  $WebAccessList_4 = '0.0.0.0'
  $WebAccessList_40 = '0.0.0.0'
  $WebAccessList_41 = '0.0.0.0'
  $WebAccessList_42 = '0.0.0.0'
  $WebAccessList_43 = '0.0.0.0'
  $WebAccessList_44 = '0.0.0.0'
  $WebAccessList_45 = '0.0.0.0'
  $WebAccessList_46 = '0.0.0.0'
  $WebAccessList_47 = '0.0.0.0'
  $WebAccessList_48 = '0.0.0.0'
  $WebAccessList_49 = '0.0.0.0'
  $WebAccessList_5 = '0.0.0.0'
  $WebAccessList_6 = '0.0.0.0'
  $WebAccessList_7 = '0.0.0.0'
  $WebAccessList_8 = '0.0.0.0'
  $WebAccessList_9 = '0.0.0.0'
  $WebLoginBlockAutoComplete = '0'
  $WebLogoText 
  $WebSessionTimeout = '15'
  $WebUserPassChangeInterval = '1140'    
}
Update-TypeData -TypeName WebParams -MemberType Scriptmethod -MemberName 'viewSecuritySettings_Management' -Value { $this | Select-Object -Property EnableMgmtTwoFactorAuthentication } -Force

class SipParams { 
  #SIP Over TLS
  $TLSRehadshaleInterval = '0'
  $SIPSRequireClientCertificate = '0'
  $PeerHostnameVerificationMode = '0'
  $VerifyServerCertificate = '0'
  $TLSRemoteSubjectName = ""
  #HTTPProxy
  $HTTPProxyApplication = '0'
  $HTTPPROXYSYSLOGDEBUGLEVEL =  '0'
  #LDAPSettings
  $LDAPGeneral = '0'
  $LDAPAUTHFILTER = ''
  #LDAPActiveDirectory
  $LDAPNUMERICATTRIBUTES = '' 
  $MSLDAPOCSNUMATTRIBUTENAME = 'msRTCSIP-Line'
  $MSLDAPPBXNUMATTRIBUTENAME = 'telephoneNumber'
  $MSLDAPMOBILENUMATTRIBUTENAME = 'mobile'
  $MSLDAPDISPLAYNAMEATTRIBUTENAME = 'displayName'
  $MSLDAPPRIVATENUMATTRIBUTENAME = 'msRTCSIP-PrivateLine'
  $MSLDAPPRIMARYKEY = 'telephoneNumber'
  $MSLDAPSECONDARYKEY = ''
  #LDAPCACHE
  $LDAPCACHEENABLE = '0'
  $LDAPCACHEENTRYTIMEOUT = ''
  $LDAPCACHEENTRYREMOVALTIMEOUT = ''
  #ApplicationsEnabling
  $ENABLESBCAPPLICATION = '1'
  #MediaSettingsGeneral
  $MEDIACHANNELS = '-1'
  $ENFORCEMEDIAORDER
  #MediaSettingsSBCSettings
  $SBCPREFERENCESMODE
  $SBCENFORCEMEDIAORDER
  #to sort
  $DECLAREAUDCCLIENT
  $RegistrationTime = '180'
  $SIPT1RTX
  $SIPT2RTX
  $SipGatewayName 
  $PROXYREDUNDANCYMODE 
  $GwDebugLevel = '0'
  $SIPMAXRTX
  $DisconnectOnBrokenConnection 
  $NoRTPDetectionTimeout 
  $RegistrationRetryTime = '30'
  $UseGatewayNameForOptions = '0'
  $SipTransportType  = '0'
  $GWREGISTRATIONNAME
  $SBCMaxCallDuration
  $REGISTRATIONTIMEDIVIDER = '50'
  $EnableSips = '0'
  $USETELURIFORASSERTEDID = '0'
  $EnableREASONHEADER = '0'
  $COMFORTNOISENEGOTIATION
  $EnableTCPCONNECTIONREUSE = '0'
  $RtcpXrReportMode
  $PROXYIPLISTREFRESHTIME
  $EnableGRUU 
  $DNSQUERYType
  $PROXYDNSQUERYType 
  $HOTSWAPRTX
  $SIPTCPTIMEOUT = '32'
  $REGISTRATIONTIMETHRESHOLD
  $REGISTERONINVITEFAILURE
  $SIPSDPSESSIONOWNER = 'AudiocodesGW'
  $SIPCHALLENGECACHINGMODE
  $RETRYAFTERTIME 
  $FAXCNGMODE 
  $TLSREHANDSHAKEINTERVAL 
  $REREGISTERONCONNECTIONFAILURE 
  $ReliableConnectionPersistentMode = '0'
  $ALLOWUNCLASSIFIEDCALLS 
  $TRANSCODINGMODE 
  $SBCDirectMedia 
  $EnableSINGLEDSPTRANSCODING = '0'
  $FAKERETRYAFTER 
  $SBC3XXBEHAVIOR 
  $SBCREFERBEHAVIOR
  $SBCKEEPCONTACTUSERINREGISTER
  $SBCMAXFORWARDSLIMIT
  $SBCALERTTIMEOUT
  $EMPTYAUTHORIZATIONHEADER
  $SBCGRUUMODE
  $SBCMINSE 
  $SBCPROXYREGISTRATIONTIME 
  $SBCUSERREGISTRATIONTIME
  $SBCSURVIVABILITYREGISTRATIONTIME 
  $SBCEXTENSIONSPROVISIONINGMODE
  $AUTHNONCEDURATION 
  $AUTHQOP
  $SBCEnableBYEAUTHENTICATION 
  $E911CALLBACKTIMEOUT
  $ENUMSERVICE
  $UseProxyIPasHost = '0'
  $SBCFORKINGHANDLINGMODE
  $SBCSESSIONEXPIRES
  $EnableSIPREC = '0' 
  $SBCSHAREDLINEREGMODE 
  $SBCDIVERSIONURIType 
  $SIPNATDETECTION 
  $EnableIDS = '0'
  $EnableNonInvite408Reply 
  $SendRejectOnOverload 
  $DisplayDefaultSIPPort  = '0'
  $PUBLICATIONIPGROUPID 
  $ENERGYDETECTORCMD 
  $ANSWERDETECTORCMD 
  $SBCSendTryingToSubscribe 
  $SBCUSERREGISTRATIONGRACETIME
  $SBCRtcpXrReportMode 
  $SIPRECSERVERDESTUSERNAME 
  $MAXGENERATEDREGISTERSRATE 
  $SBCDBROUTINGSEARCHMODE 
  $SBCPREEMPTIONMODE 
  $SBCEMERGENCYCONDITION 
  $SBCEMERGENCYRTPDIFFSERV 
  $SBCEMERGENCYSIGNALINGDIFFSERV 
  $WEBSOCKETPROTOCOLKEEPALIVEPERIOD 
  $IDSAlarmClearPeriod = '300'
  #Master Key Identifyer
  $ENABLESYMMETRICMKI
}
Update-TypeData -TypeName SipParams -MemberType Scriptmethod -MemberName 'viewSecuritySettings_SipOverTLS' -Value { $this | Select-Object -Property TLSRehadshaleInterval, VerifyServerCertificate, PeerHostnameVerificationMode, SIPSRequireClientCertificate, TLSRemoteSubjectName } -Force
Update-TypeData -TypeName SipParams -MemberType Scriptmethod -MemberName 'viewHTTPProxy' -Value { $this | Select-Object -Property HTTPProxyApplication,HTTPPROXYSYSLOGDEBUGLEVEL } -Force  
Update-TypeData -TypeName SipParams -MemberType Scriptmethod -MemberName 'viewLDAPSettings' -Value { $this | Select-Object -Property LDAPGeneral,LDAPAUTHFILTER } -Force
Update-TypeData -TypeName SipParams -MemberType Scriptmethod -MemberName 'viewLDAPActiveDirectory' -Value { $this | Select-Object -Property   LDAPNUMERICATTRIBUTES,MSLDAPOCSNUMATTRIBUTENAME,MSLDAPPBXNUMATTRIBUTENAME,MSLDAPMOBILENUMATTRIBUTENAME,MSLDAPDISPLAYNAMEATTRIBUTENAME,MSLDAPPRIVATENUMATTRIBUTENAME,MSLDAPPRIMARYKEY,MSLDAPSECONDARYKEY } -Force
Update-TypeData -TypeName SipParams -MemberType Scriptmethod -MemberName 'viewLDAPCache' -Value { $this | Select-Object -Property LDAPCACHEENABLE,LDAPCACHEENTRYTIMEOUT,LDAPCACHEENTRYREMOVALTIMEOUT } -Force
Update-TypeData -TypeName SipParams -MemberType Scriptmethod -MemberName 'viewApplicationsEnabling_General' -Value { $this | Select-Object -Property ENABLESBCAPPLICATION } -Force
  
class SNMPParams {
  $DisableSNMP = '0'
  $SNMPManagerTrapPort 
  $SNMPManagerIsUsed 
  $SNMPManagerTrapSendingEnable 
  $SNMPManagerTableIP_0 = '0.0.0.0'
  $SNMPManagerTableIP_1 = '0.0.0.0'
  $SNMPManagerTableIP_2 = '0.0.0.0'
  $SNMPManagerTableIP_3 = '0.0.0.0'
  $SNMPManagerTableIP_4 = '0.0.0.0'
  $SNMPTRUSTEDMGR = '0.0.0.0'
  $SNMPREADONLYCOMMUNITYSTRING_0 = ''
  $SNMPREADONLYCOMMUNITYSTRING_1 = ''
  $SNMPREADONLYCOMMUNITYSTRING_2 = ''
  $SNMPREADONLYCOMMUNITYSTRING_3 = ''
  $SNMPREADONLYCOMMUNITYSTRING_4 = ''
  $SNMPREADWRITECOMMUNITYSTRING_0 = ''
  $SNMPREADWRITECOMMUNITYSTRING_1 = ''
  $SNMPREADWRITECOMMUNITYSTRING_2 = ''
  $SNMPREADWRITECOMMUNITYSTRING_3 = ''
  $SNMPREADWRITECOMMUNITYSTRING_4 = '' 
  $SNMPTRAPCOMMUNITYSTRING = '' 
  $SNMPTrapManagerHostName = ''
  $SNMPPort = '161'
  $ChassisPhysicalAlias 
  $ChassisPhysicalAssetID
  $ifAlias
  $SendKeepAliveTrap = '0'
  $KeepAliveTrapPort = '161'
  $PM_EnableThresholdAlarms = '0'
  $SNMPSysOid = '1.3.6.1.5.1.5003.8.1.1'
  $SNMPTrapEnterpriseOid = '1.3.6.1.4.1.5003.9.10.1.21'
  $acUserInputAlarmDescription 
  $acUserInputAlarmSeverity 
  $AlarmHistoryTableMaxSize = '500'
  $ActiveAlarmTableMaxSize = '120'
  $NoAlarmForDisabledPort = '0'
  $SNMPEngineIDString

}

#Tables

class InterfaceTable { 
  $InterfaceTable_ApplicationTypes
  $InterfaceTable_InterfaceMode
  $InterfaceTable_IPAddress = '0.0.0.0'
  $InterfaceTable_PrefixLength = '16'
  $InterfaceTable_Gateway = '0.0.0.0'
  $InterfaceTable_VlanID
  $InterfaceTable_InterfaceName
  $InterfaceTable_PrimaryDNSServerIPAddress = '0.0.0.0'
  $InterfaceTable_SecondaryDNSServerIPAddress = '0.0.0.0'
  $InterfaceTable_UnderlyingDevice
}
Update-TypeData -TypeName InterfaceTable -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | Select-Object -Property InterfaceTable_InterfaceName,InterfaceTable_ApplicationTypes,InterfaceTable_IPAddress,InterfaceTable_UnderlyingDevice } -Force
Update-TypeData -TypeName InterfaceTable -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | Select-Object -Property InterfaceTable_InterfaceName, InterfaceTable_ApplicationTypes, InterfaceTable_UnderlyingDevice } -Force
Update-TypeData -TypeName InterfaceTable -MemberType Scriptmethod -MemberName 'viewDNS' -Value { $this | Select-Object -Property InterfaceTable_PrimaryDNSServerIPAddress, InterfaceTable_SecondaryDNSServerIPAddress } -Force
Update-TypeData -TypeName InterfaceTable -MemberType Scriptmethod -MemberName 'viewIPAddress' -Value { $this | Select-Object -Property InterfaceTable_InterfaceMode, InterfaceTable_IPAddress, InterfaceTable_PrefixLength, InterfaceTable_Gateway } -Force
$itemindex_InterfaceTable.foreach({ update-typedata -typename InterfaceTable -MemberType AliasProperty -Membername $_.split("_")[1] -value $_ })

class DeviceTable {
  $DeviceTable_VlanID = 1
  $DeviceTable_UnderlyingInterface = ""
  $DeviceTable_DeviceName = ""
  $DeviceTable_Tagging = 1
  $DeviceTable_MTU = 1500
}
Update-TypeData -TypeName DeviceTable -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object DeviceTable_DeviceName,DeviceTable_UnderlyingInterface } -Force
Update-TypeData -TypeName DeviceTable -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | Select-Object -Property DeviceTable_DeviceName, DeviceTable_VlanID, DeviceTable_UnderlyingInterface, DeviceTable_Tagging, DeviceTable_MTU } -Force
$itemindex_DeviceTable.foreach({ update-typedata -typename DeviceTable -MemberType AliasProperty -Membername $_.split("_")[1] -value $_ })

class EtherGroupTable {
  $EtherGroupTable_Group
  $EtherGroupTable_Mode = 2
  $EtherGroupTable_Member1
  $EtherGroupTable_Member2
}
Update-TypeData -TypeName EtherGroupTable -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object EtherGroupTable_Group,EtherGroupTable_Mode,EtherGroupTable_Member1,EtherGroupTable_Member2 } -Force
$itemindex_EtherGroupTable.foreach({ update-typedata -typename EtherGroupTable -MemberType AliasProperty -Membername $_.split("_")[1] -value $_ })

class PhysicalPortsTable {
  $PhysicalPortsTable_Port
  $PhysicalPortsTable_Mode
  $PhysicalPortsTable_SpeedDuplex
  $PhysicalPortsTable_PortDescription
  $PhysicalPortsTable_GroupMember
  $PhysicalPortsTable_GroupStatus
}
Update-TypeData -TypeName PhysicalPortsTable -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object PhysicalPortsTable_Port,PhysicalPortsTable_Mode,PhysicalPortsTable_GroupStatus } -Force
Update-TypeData -TypeName PhysicalPortsTable -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | Select-Object -Property PhysicalPortsTable_Port, PhysicalPortsTable_PortDescription, PhysicalPortsTable_Mode, PhysicalPortsTable_SpeedDuplex } -Force
Update-TypeData -TypeName PhysicalPortsTable -MemberType Scriptmethod -MemberName 'viewEthernetGroup' -Value { $this | Select-Object -Property PhysicalPortsTable_GroupMember, PhysicalPortsTable_GroupStatus } -Force
$itemindex_PhysicalPortsTable.foreach({ update-typedata -typename PhysicalPortsTable -MemberType AliasProperty -Membername $_.split("_")[1] -value $_ })

class StaticRouteTable {
  $StaticRouteTable_DeviceName
  $StaticRouteTable_Destination = '0.0.0.0'
  $StaticRouteTable_PrefixLength = '16'
  $StaticRouteTable_Gateway = '0.0.0.0'
  $StaticRouteTable_Description
}
Update-TypeData -TypeName StaticRouteTable -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object StaticRouteTable_Destination,StaticRouteTable_Gateway } -Force
Update-TypeData -TypeName StaticRouteTable -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | Select-Object -Property StaticRouteTable_Destination, StaticRouteTable_PrefixLength, StaticRouteTable_Gateway, StaticRouteTable_DeviceName,  StaticRouteTable_Description } -Force
  
class NATTranslation{
  $NATTranslation_SrcIPInterfaceName
  $NATTranslation_TargetIPAddress
  $NATTranslation_SourceStartPort
  $NATTranslation_SourceEndPort
  $NATTranslation_TargetStartPort
  $NATTranslation_TargetEndPort
}
Update-TypeData -TypeName NATTranslation -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force
Update-TypeData -TypeName NATTranslation -MemberType Scriptmethod -MemberName 'viewSource' -Value { $this | Select-Object -Property NATTranslation_SrcIPInterfaceName, NATTranslation_SourceStartPort, NATTranslation_SourceEndPort } -Force
Update-TypeData -TypeName NATTranslation -MemberType Scriptmethod -MemberName 'viewTarget' -Value { $this | Select-Object -Property NATTranslation_TargetIPAddress, NATTranslation_TargetStartPort, NATTranslation_TargetEndPort } -Force
   
class TLSContexts {
  $TLSContexts_Name
  $TLSContexts_TLSVersion = 0
  $TLSContexts_DTLSVersion = 0
  $TLSContexts_ServerCipherString = 'RC4:AES128'
  $TLSContexts_ClientCipherString = 'DEFAULT'
  $TLSContexts_RequireStrictCert = 0
  $TLSContexts_OcspEnable = 0
  $TLSContexts_OcspServerPrimary = '0.0.0.0'
  $TLSContexts_OcspServerSecondary = '0.0.0.0'
  $TLSContexts_OcspServerPort = 2560
  $TLSContexts_OcspDefaultResponse = 0
  $TLSContexts_DHKeySize = 0
}
Update-TypeData -TypeName TLSContexts -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | Select-Object -Property TLSContexts_Name, TLSContexts_TLSVersion, TLSContexts_DTLSVersion, TLSContexts_ServerCipherString } -Force
Update-TypeData -TypeName TLSContexts -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | Select-Object -Property TLSContexts_Name, TLSContexts_TLSVersion, TLSContexts_DTLSVersion, TLSContexts_ServerCipherString, TLSContexts_ClientCipherString, TLSContexts_RequireStrictCert, TLSContexts_DHKeySize } -Force
Update-TypeData -TypeName TLSContexts -MemberType Scriptmethod -MemberName 'viewOCSP' -Value { $this | Select-Object -Property TLSContexts_OcspEnable, TLSContexts_OcspServerPrimary, TLSContexts_OcspServerSecondary, TLSContexts_OcspServerPort, TLSContexts_OcspDefaultResponse } -Force
 
class AccessList {
  $AccessList_Source_IP = '0.0.0.0'
  $AccessList_Source_Port = '0'
  $AccessList_PrefixLen = '0'
  $AccessList_Start_Port = '0'
  $AccessList_End_Port = '65535'
  $AccessList_Protocol = 'ANY'
  $AccessList_Use_Specific_Interface = '0'
  $AccessList_Interface_ID
  $AccessList_Packet_Size = '0'
  $AccessList_Byte_Rate = '0'
  $AccessList_Byte_Burst = '0'
  $AccessList_Allow_Type = '0'
  $AccessList_Allow_Type_enum = '0'
}
Update-TypeData -TypeName AccessList -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object AccessList_Index,AccessList_Source_IP,ACCESSLIST_Allow_type_enum } -Force
Update-TypeData -TypeName AccessList -MemberType Scriptmethod -MemberName 'viewMatch'    -value { $this | select-object AccessList_Index,AccessList_Source_IP,AccessList_Source_Port,AccessList_PrefixLen,AccessList_Start_Port,AccessList_End_Port,AccessList_Protocol,AccessList_Use_Specific_Interface,AccessList_Interface_ID } -Force
Update-TypeData -TypeName AccessList -MemberType Scriptmethod -MemberName 'viewAction'   -Value { $this | select-object AccessList_Allow_Type,ACCESSLIST_Allow_type_enum,AccessList_Packet_Size,AccessList_Byte_Rate,AccessList_Byte_Burst } -Force

class DiffServToVlanPriority {
  $DiffServToVlanPriority_DiffServ = '0' 
  $DiffServToVlanPriority_VlanPriority = '0'
}
Update-TypeData -TypeName DiffServToVlanPriority -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object DiffServToVlanPriority_DiffServ,DiffServToVlanPriority_VlanPriority } -Force

class RadiusServers {
  $RadiusServers_ServerGroup
  $RadiusServers_IPAddress = '0.0.0.0'
  $RadiusServers_AuthenticationPort = '1645'
  $RadiusServers_AccountingPort = '1646'
  $RadiusServers_SharedSecret
}
Update-TypeData -TypeName RadiusServers -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object RadiusServers_IPAddress,RadiusServers_AuthenticationPort,RadiusServers_AccountingPort,@{n="RadiusServers_SharedSecret";e={"SharedSecret"} } } -Force

class LDAPServerGroups { 
  $LdapServerGroups_Name
  $LdapServerGroups_ServerType  = '0'
  $LdapServerGroups_SearchMethod = '0'
  $LdapServerGroups_CacheEntryTimeout ='1200'
  $LdapServerGroups_CacheEntryRemovalTimeout ='0'
  $LdapServerGroups_SearchDnsMethod = '1'
}
Update-TypeData -TypeName LDAPServerGroups -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object LdapServerGroups_Name,LdapServerGroups_ServerType } -Force
Update-TypeData -TypeName LDAPServerGroups -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object LdapServerGroups_Name,LdapServerGroups_ServerType,LdapServerGroups_SearchMethod,LdapServerGroups_SearchDnsMethod } -Force
Update-TypeData -TypeName LDAPServerGroups -MemberType Scriptmethod -MemberName 'viewCache' -Value { $this | select-object LdapServerGroups_CacheEntryTimeout,LdapServerGroups_CacheEntryRemovalTimeout } -Force

class LdapConfiguration {
  $LdapConfiguration_Group
  $LdapConfiguration_LdapConfServerIp
  $LdapConfiguration_LdapConfServerPort = "389"
  $LdapConfiguration_LdapConfServerMaxRespondTime ='3000'
  $LdapConfiguration_LdapConfServerDomainName
  $LdapConfiguration_LdapConfPassword = ""
  $LdapConfiguration_LdapConfBindDn
  $LdapConfiguration_Interface
  $LdapConfiguration_MngmAuthAtt
  $LdapConfiguration_useTLS = "0"
  $LdapConfiguration_ConnectionStatus
  $LdapConfiguration_ContextName
  $LdapConfiguration_LdapConfInterfaceType
  $LdapConfiguration_Type
  $LdapConfiguration_VerifyCertificate
}
Update-TypeData -TypeName LdapConfiguration -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object LdapConfiguration_Group,LdapConfiguration_LdapConfServerIp } -Force
Update-TypeData -TypeName LdapConfiguration -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object LdapConfiguration_Interface,LdapConfiguration_useTLS,LdapConfiguration_ContextName } -Force
Update-TypeData -TypeName LdapConfiguration -MemberType Scriptmethod -MemberName 'viewQuery' -Value { $this | select-object LdapConfiguration_LdapConfPassword,LdapConfiguration_LdapConfBindDn,LdapConfiguration_MngmAuthAtt } -Force
Update-TypeData -TypeName LdapConfiguration -MemberType Scriptmethod -MemberName 'viewConnection' -Value { $this | select-object LdapConfiguration_LdapConfServerIp,LdapConfiguration_LdapConfServerPort,LdapConfiguration_LdapConfServerMaxRespondTime,LdapConfiguration_LdapConfServerDomainName } -Force


class DhcpServer { 
  $DhcpServer_InterfaceName
  $DhcpServer_StartIPAddress = '192.168.0.100'
  $DhcpServer_EndIPAddress = '192.168.0.148'
  $DhcpServer_SubnetMask = '255.255.255.0'
  $DhcpServer_LeaseTime
  $DhcpServer_DNSServer1 = '0.0.0.0'
  $DhcpServer_DNSServer2 = '0.0.0.0'
  $DhcpServer_NetbiosNameServer
  $DhcpServer_NetbiosNodeType
  $DhcpServer_NTPServer1 = '0.0.0.0'
  $DhcpServer_NTPServer2 = '0.0.0.0'
  $DhcpServer_TimeOffset = '0'
  $DhcpServer_TftpServer
  $DhcpServer_BootFileName
  $DhcpServer_ExpandBootfileName
  $DhcpServer_OverrideRouter = '0.0.0.0'
  $DhcpServer_SipServer
  $DhcpServer_SipServerType
}
Update-TypeData -TypeName DhcpServer -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object DhcpServer_Index,DhcpServer_StartIPAddress,DhcpServer_SubnetMask } -Force
Update-TypeData -TypeName DhcpServer -MemberType ScriptMethod -MemberName 'viewGeneral' -Value { $this | Select-Object -Property DhcpServer_InterfaceName, DhcpServer_StartIPAddress, DhcpServer_EndIPAddress, DhcpServer_SubnetMask, DhcpServer_LeaseTime } -Force
Update-TypeData -TypeName DhcpServer -MemberType ScriptMethod -MemberName 'viewDNS' -Value { $this  | Select-Object -Property DhcpServer_DNSServer1, DhcpServer_DNSServer2 } -Force
Update-TypeData -TypeName DhcpServer -MemberType ScriptMethod -MemberName 'viewNetBios' -Value {  $this | Select-Object -Property DhcpServer_NetbiosNameServer, DhcpServer_NetbiosNodeType } -Force
Update-TypeData -TypeName DhcpServer -MemberType ScriptMethod -MemberName 'viewTimeandDate' -Value { $this | Select-Object -Property DhcpServer_NTPServer1, DhcpServer_NTPServer2, DhcpServer_TimeOffset } -Force
Update-TypeData -TypeName DhcpServer -MemberType ScriptMethod -MemberName 'viewBootFile' -Value { $this | Select-Object -Property DhcpServer_TftpServer, DhcpServer_BootFileName, DhcpServer_ExpandBootfileName } -Force
Update-TypeData -TypeName DhcpServer -MemberType ScriptMethod -MemberName 'viewRouter' -Value { $this | Select-Object -Property DhcpServer_OverrideRouter } -Force
Update-TypeData -TypeName DhcpServer -MemberType ScriptMethod -MemberName 'viewSip' -Value { $this | Select-Object -Property DhcpServer_SipServer, DhcpServer_SipServerType } -Force

class DhcpVendorClass {
  $DhcpVendorClass_DhcpServerIndex
  $DhcpVendorClass_VendorClassId
}
Update-TypeData -TypeName DhcpVendorClass -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force
Update-TypeData -TypeName DhcpVendorClass -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force
Update-TypeData -TypeName DhcpVendorClass -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object DhcpVendorClass_DhcpServerIndex,DhcpVendorClass_VendorClassId } -Force

class DhcpOption {
  $DhcpOption_DhcpServerIndex
  $DhcpOption_Option
  $DhcpOption_Type
  $DhcpOption_Value
  $DhcpOption_ExpandValue
}
Update-TypeData -TypeName DhcpOption -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force
Update-TypeData -TypeName DhcpOption -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force
Update-TypeData -TypeName DhcpOption -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object DhcpOption_DhcpServerIndex,DhcpOption_Option,DhcpOption_TypeDhcpOption_Value,DhcpOption_ExpandValue } -Force

class DhcpStaticIP {
  $DhcpStaticIP_DhcpServerIndex
  $DhcpStaticIP_IPAddress
  $DhcpStaticIP_MACAddress
}
Update-TypeData -TypeName DhcpStaticIP -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force
Update-TypeData -TypeName DhcpStaticIP -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object DhcpStaticIP_DhcpServerIndex,DhcpStaticIP_IPAddress,DhcpStaticIP_MACAddress } -Force

class DNS2IP {
  $Dns2Ip_DomainName
  $Dns2Ip_FirstIpAddress
  $Dns2Ip_SecondIpAddress
  $Dns2Ip_ThirdIpAddress
}
Update-TypeData -TypeName DNS2IP -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object DNS2IP_Index,Dns2Ip_DomainName,Dns2Ip_FirstIpAddress } -Force
Update-TypeData -TypeName DNS2IP -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object Dns2Ip_DomainName,Dns2Ip_FirstIpAddress,Dns2Ip_SecondIpAddress,Dns2Ip_ThirdIpAddress } -Force
 
class SRV2IP {
  $SRV2IP_InternalDomain
  $SRV2IP_TransportType
  $SRV2IP_Dns1
  $SRV2IP_Priority1
  $SRV2IP_Weight1
  $SRV2IP_Port1
  $SRV2IP_Dns2
  $SRV2IP_Priority2
  $SRV2IP_Weight2
  $SRV2IP_Port2
  $SRV2IP_Dns3
  $SRV2IP_Priority3
  $SRV2IP_Weight3
  $SRV2IP_Port3
}
Update-TypeData -TypeName SRV2IP -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object SRV2IP_Index,SRV2IP_InternalDomain } -Force
Update-TypeData -TypeName SRV2IP -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object SRV2IP_InternalDomain,SRV2IP_TransportType } -Force
Update-TypeData -TypeName SRV2IP -MemberType Scriptmethod -MemberName 'view1stEntry' -Value { $this | select-object SRV2IP_Dns1,SRV2IP_Priority1,SRV2IP_Weight1,SRV2IP_Port1 } -Force
Update-TypeData -TypeName SRV2IP -MemberType Scriptmethod -MemberName 'view2ndEntry' -Value { $this | select-object SRV2IP_Dns2,SRV2IP_Priority2,SRV2IP_Weight2,SRV2IP_Port2 } -Force
Update-TypeData -TypeName SRV2IP -MemberType Scriptmethod -MemberName 'view3rdEntry' -Value { $this | select-object SRV2IP_Dns3,SRV2IP_Priority3,SRV2IP_Weight3,SRV2IP_Port3 } -Force

class HTTPRemoteServices {
  $HTTPRemoteServices_Name
  $HTTPRemoteServices_Path
  $HTTPRemoteServices_HTTPType
  $HTTPRemoteServices_Policy
  $HTTPRemoteServices_LoginNeeded
  $HTTPRemoteServices_PersistentConnection
  $HTTPRemoteServices_NumOfSockets
  $HTTPRemoteServices_AuthUserName
  $HTTPRemoteServices_AuthPassword
  $HTTPRemoteServices_TLSContext
  $HTTPRemoteServices_VerifyCertificate
  $HTTPRemoteServices_TimeOut
  $HTTPRemoteServices_KeepAliveTimeOut
  $HTTPRemoteServices_ServiceStatus
}
Update-TypeData -TypeName HTTPRemoteServices -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force
Update-TypeData -TypeName HTTPRemoteServices -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | Select-Object -Property HTTPRemoteServices_Name, HTTPRemoteServices_HTTPType, HTTPRemoteServices_Path, HTTPRemoteServices_ServiceStatus } -Force
Update-TypeData -TypeName HTTPRemoteServices -MemberType Scriptmethod -MemberName 'viewConnection' -Value {  $this | Select-Object -Property HTTPRemoteServices_Policy, HTTPRemoteServices_PersistentConnection, HTTPRemoteServices_NumOfSockets } -Force
Update-TypeData -TypeName HTTPRemoteServices -MemberType Scriptmethod -MemberName 'viewLogin' -Value {  $this | Select-Object -Property HTTPRemoteServices_LoginNeeded, HTTPRemoteServices_AuthUserName, HTTPRemoteServices_AuthPassword } -Force
Update-TypeData -TypeName HTTPRemoteServices -MemberType Scriptmethod -MemberName 'viewSecurity' -Value {  $this | Select-Object -Property HTTPRemoteServices_TLSContext, HTTPRemoteServices_VerifyCertificate } -Force
Update-TypeData -TypeName HTTPRemoteServices -MemberType Scriptmethod -MemberName 'viewTimeouts' -Value {  $this | Select-Object -Property HTTPRemoteServices_TimeOut, HTTPRemoteServices_KeepAliveTimeOut } -Force

class HTTPInterface{
 $HTTPInterface_InterfaceName
  $HTTPInterface_NetworkInterface
  $HTTPInterface_Protocol
  $HTTPInterface_Port
  $HTTPInterface_TLSContext
  $HTTPInterface_VerifyCert
}
Update-TypeData -TypeName HTTPInterface -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object HTTPInterface_InterfaceName,HTTPInterface_NetworkInterface,HTTPInterface_Protocol } -Force
Update-TypeData -TypeName HTTPInterface -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object HTTPInterface_InterfaceName,HTTPInterface_NetworkInterface,HTTPInterface_Protocol,HTTPInterface_Port } -Force
Update-TypeData -TypeName HTTPInterface -MemberType Scriptmethod -MemberName 'viewSecurity' -Value { $this | select-object HTTPInterface_TLSContext,HTTPInterface_VerifyCert } -Force

class HTTPProxyService {
  $HTTPProxyService_ServiceName
  $HTTPProxyService_ListeningInterface
  $HTTPProxyService_URLPrefix
  $HTTPProxyService_KeepAliveMode
}
Update-TypeData -TypeName HTTPProxyService -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object HTTPProxyService_Index,HTTPProxyService_ServiceName } -Force
Update-TypeData -TypeName HTTPProxyService -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object HTTPProxyService_ServiceName,HTTPProxyService_ListeningInterface,HTTPProxyService_URLPrefix,HTTPProxyService_KeepAliveMode} -Force
     
class HTTPProxyHost {
  $HTTPProxyHost_HTTPProxyServiceId
  $HTTPProxyHost_HTTPProxyHostId
  $HTTPProxyHost_NetworkInterface
  $HTTPProxyHost_IpAddress
  $HTTPProxyHost_Protocol
  $HTTPProxyHost_Port
  $HTTPProxyHost_TLSContext
  $HTTPProxyHost_VerifyCert
}
Update-TypeData -TypeName HTTPProxyHost -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object HTTPProxyHost_Index,HTTPProxyHost_NetworkInterface } -Force
Update-TypeData -TypeName HTTPProxyHost -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object HTTPProxyHost_NetworkInterface,HTTPProxyHost_IpAddress,HTTPProxyHost_Protocol,HTTPProxyHost_Port } -Force
Update-TypeData -TypeName HTTPProxyHost -MemberType Scriptmethod -MemberName 'viewSecurity' -Value { $this | select-object HTTPProxyHost_TLSContext,HTTPProxyHost_VerifyCert } -Force

class HTTPRemoteHosts { 
  $HTTPRemoteHosts_HTTPRemoteServiceIndex
  $HTTPRemoteHosts_RemoteHostIndex
  $HTTPRemoteHosts_Name
  $HTTPRemoteHosts_Address
  $HTTPRemoteHosts_Port
  $HTTPRemoteHosts_Interface
  $HTTPRemoteHosts_HTTPTransportType
  $HTTPRemoteHosts_HostStatus
    
}
Update-TypeData -TypeName HTTPRemoteHosts -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force

class EMSService {
    $EMSService_ServiceName
    $EMSService_PrimaryServer
    $EMSService_SecondaryServer
    $EMSService_DeviceLoginInterface
    $EMSService_EMSInterface
}
Update-TypeData -TypeName EMSService -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object EMSService_Index,EMSService_ServiceName } -Force
Update-TypeData -TypeName EMSService -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object EMSService_ServiceName } -Force
Update-TypeData -TypeName EMSService -MemberType Scriptmethod -MemberName 'viewDevice' -Value { $this | select-object EMSService_DeviceLoginInterface } -Force
Update-TypeData -TypeName EMSService -MemberType Scriptmethod -MemberName 'viewEMS' -Value { $this | select-object EMSService_EMSInterface,EMSService_PrimaryServer,EMSService_SecondaryServer } -Force

class SRD {
  $SRD_Name
  $SRD_IntraSRDMediaAnchoring
  $SRD_BlockUnRegUsers = '0'
  $SRD_MaxNumOfRegUsers = '-1'
  $SRD_EnableUnAuthenticatedRegistrations = '1'
  $SRD_SharingPolicy = '0'
  $SRD_UsedByRoutingServer = '0'
  $SRD_SBCOperationMode = '0'
  $SRD_SBCRoutingPolicyName
  $SRD_SBCDialPlanName
}
Update-TypeData -TypeName SRD -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object SRD_Name,SRD_SharingPolicy,SRD_SBCOperationMode } -Force
Update-TypeData -TypeName SRD -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object SRD_Name,SRD_SharingPolicy,SRD_SBCOperationMode,SRD_SBCRoutingPolicyName,SRD_UsedByRoutingServer } -Force
Update-TypeData -TypeName SRD -MemberType Scriptmethod -MemberName 'viewRegistration' -Value { $this | select-object SRD_MaxNumOfRegUsers,SRD_EnableUnAuthenticatedRegistrations,SRD_BlockUnRegUsers  } -Force

class SIPInterface {
  $SIPInterface_InterfaceName
  $SIPInterface_NetworkInterface
  $SIPInterface_ApplicationType
  $SIPInterface_UDPPort = '5060'
  $SIPInterface_TCPPort = '5060'
  $SIPInterface_TLSPort = '5061'
  $SIPInterface_AdditionalUDPPorts
  $SIPInterface_SRDName
  $SIPInterface_MessagePolicyName
  $SIPInterface_TLSContext
  $SIPInterface_TLSMutualAuthentication
  $SIPInterface_TCPKeepaliveEnable ='0'
  $SIPInterface_ClassificationFailureResponseType = '500'
  $SIPInterface_PreClassificationManSet
  $SIPInterface_EncapsulatingProtocol = '0'
  $SIPInterface_MediaRealm
  $SIPInterface_SBCDirectMedia = '0'
  $SIPInterface_BlockUnRegUsers ='-1'
  $SIPInterface_MaxNumOfRegUsers
  $SIPInterface_EnableUnAuthenticatedRegistrations = '-1'
  $SIPInterface_UsedByRoutingServer = '0'
  $SIPInterface_TopologyLocation = '0'
  $SIPInterface_PreParsingManSetName
}
Update-TypeData -TypeName SIPInterface -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object SIPInterface_InterfaceName,SIPInterface_ApplicationType,SIPInterface_UDPPort,SIPInterface_TCPPort,SIPInterface_TLSPort } -Force
Update-TypeData -TypeName SIPInterface -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object SIPInterface_InterfaceName,SIPInterface_TopologyLocation,SIPInterface_NetworkInterface,SIPInterface_ApplicationType,SIPInterface_UDPPort,SIPInterface_TCPPort,SIPInterface_TLSPort,SIPInterface_EncapsulatingProtocol,SIPInterface_TCPKeepaliveEnable,SIPInterface_UsedByRoutingServer } -Force
Update-TypeData -TypeName SIPInterface -MemberType Scriptmethod -MemberName 'viewClassification' -Value { $this | select-object SIPInterface_ClassificationFailureResponseType,SIPInterface_PreClassificationManSet } -Force
Update-TypeData -TypeName SIPInterface -MemberType Scriptmethod -MemberName 'viewMedia' -Value { $this | select-object SIPInterface_MediaRealm,SIPInterface_SBCDirectMedia } -Force
Update-TypeData -TypeName SIPInterface -MemberType Scriptmethod -MemberName 'viewSecurity' -Value { $this | select-object SIPInterface_TLSContext,SIPInterface_TLSMutualAuthentication,SIPInterface_MessagePolicyName,SIPInterface_EnableUnAuthenticatedRegistrations,SIPInterface_MaxNumOfRegUsers } -Force

class CpMediaRealm {
  $CpMediaRealm_MediaRealmName
  $CpMediaRealm_IPv4IF
  $CpMediaRealm_IPv6IF
  $CpMediaRealm_PortRangeStart
  $CpMediaRealm_MediaSessionLeg
  $CpMediaRealm_PortRangeEnd
  $CpMediaRealm_IsDefault
  $CpMediaRealm_QoeProfile
  $CpMediaRealm_BWProfile
  $CpMediaRealm_TopologyLocation
}
Update-TypeData -TypeName CpMediaRealm -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object CpMediaRealm_MediaRealmName,CpMediaRealm_IsDefault } -Force
Update-TypeData -TypeName CpMediaRealm -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object CpMediaRealm_MediaRealmName,CpMediaRealm_TopologyLocation,CpMediaRealm_IPv4IF,CpMediaRealm_IPv6IF,CpMediaRealm_PortRangeStart,CpMediaRealm_MediaSessionLeg,CpMediaRealm_PortRangeEnd,CpMediaRealm_IsDefault } -Force
Update-TypeData -TypeName CpMediaRealm -MemberType Scriptmethod -MemberName 'viewQualityofExperience' -Value { $this | select-object CpMediaRealm_QoeProfile,CpMediaRealm_BWProfile } -Force

class RemoteMediaSubnet {
  $RemoteMediaSubnet_Realm
  $RemoteMediaSubnet_RemoteMediaSubnetIndex
  $RemoteMediaSubnet_RemoteMediaSubnetName
  $RemoteMediaSubnet_PrefixLength = '16'
  $RemoteMediaSubnet_AddressFamily = '2'
  $RemoteMediaSubnet_DstIPAddress ='0.0.0.0'
  $RemoteMediaSubnet_QOEProfileName
  $RemoteMediaSubnet_BWProfileName =''
}
Update-TypeData -TypeName RemoteMediaSubnet -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force
Update-TypeData -TypeName RemoteMediaSubnet -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object RemoteMediaSubnet_RemoteMediaSubnetName,RemoteMediaSubnet_PrefixLength,RemoteMediaSubnet_AddressFamily,RemoteMediaSubnet_DstIPAddress,RemoteMediaSubnet_QOEProfileName,RemoteMediaSubnet_BWProfileName } -Force


class MediaRealmExtension {
  $MediaRealmExtension_MediaRealmIndex
  $MediaRealmExtension_ExtensionIndex
  $MediaRealmExtension_IPv4IF
  $MediaRealmExtension_IPv6IF
  $MediaRealmExtension_PortRangeStart
  $MediaRealmExtension_PortRangeEnd
  $MediaRealmExtension_MediaSessionLeg
}

Update-TypeData -TypeName MediaRealmExtension -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object MediaRealmExtension_IPv4IF,MediaRealmExtension_IPv6IF,MediaRealmExtension_PortRangeStart,MediaRealmExtension_PortRangeEnd,MediaRealmExtension_MediaSessionLeg } -Force
Update-TypeData -TypeName MediaRealmExtension -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object MediaRealmExtension_IPv4IF,MediaRealmExtension_IPv6IF,MediaRealmExtension_PortRangeStartMediaRealmExtension_PortRangeEnd,MediaRealmExtension_MediaSessionLeg } -Force

class ProxySet {

  $ProxySet_ProxyName
  $ProxySet_EnableProxyKeepAlive
  $ProxySet_ProxyKeepAliveTime
  $ProxySet_ProxyLoadBalancingMethod
  $ProxySet_IsProxyHotSwap
  $ProxySet_SRDName
  $ProxySet_ClassificationInput
  $ProxySet_TLSContextName
  $ProxySet_ProxyRedundancyMode
  $ProxySet_DNSResolveMethod
  $ProxySet_KeepAliveFailureResp
  $ProxySet_GWIPv4SIPInterfaceName
  $ProxySet_SBCIPv4SIPInterfaceName
  $ProxySet_GWIPv6SIPInterfaceName
  $ProxySet_SBCIPv6SIPInterfaceName
  $ProxySet_MinActiveServersLB
  $ProxySet_SuccessDetectionRetries
  $ProxySet_SuccessDetectionInterval
  $ProxySet_FailureDetectionRetransmissions
  
}
Update-TypeData -TypeName ProxySet -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object ProxySet_ProxyName,ProxySet_EnableProxyKeepAlive,ProxySet_IsProxyHotSwap,ProxySet_ProxyLoadBalancingMethod,ProxySet_ProxyLoadBalancingMethod,ProxySet_ProxyLoadBalancingMethod } -Force
Update-TypeData -TypeName ProxySet -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object ProxySet_ProxyName,ProxySet_SBCIPv4SIPInterfaceName,ProxySet_GWIPv4SIPInterfaceName,ProxySet_SBCIPv4SIPInterfaceName,ProxySet_GWIPv6SIPInterfaceName,ProxySet_SBCIPv6SIPInterfaceName,ProxySet_TLSContextName  } -Force
Update-TypeData -TypeName ProxySet -MemberType Scriptmethod -MemberName 'viewKeepalive' -Value { $this | select-object ProxySet_ProxyKeepAliveTime, ProxySet_KeepAliveFailureResp, ProxySet_SuccessDetectionRetries, ProxySet_SuccessDetectionInterval,ProxySet_FailureDetectionRetransmissions } -Force
Update-TypeData -TypeName ProxySet -MemberType Scriptmethod -MemberName 'viewRedundancy' -Value { $this | select-object ProxySet_MinActiveServersLB,ProxySet_ProxyLoadBalancingMethod,ProxySet_IsProxyHotSwap,ProxySet_ProxyLoadBalancingMethod } -Force
Update-TypeData -TypeName ProxySet -MemberType Scriptmethod -MemberName 'viewAdvanced' -Value { $this | select-object ProxySet_ClassificationInput,ProxySet_DNSResolveMethod  } -Force

class proxyIP {
  $ProxyIp_ProxySetId
  $ProxyIp_ProxyIpIndex
  $ProxyIp_IpAddress
  $ProxyIp_TransportType
}
Update-TypeData -TypeName proxyIP -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object ProxyIp_IpAddress,ProxyIp_TransportType } -Force
Update-TypeData -TypeName proxyIP -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object ProxyIp_IpAddress,ProxyIp_TransportType } -Force


class IPGroup { 
  $IPGroup_Type
  $IPGroup_Name
  $IPGroup_ProxySetName
  $IPGroup_SIPGroupName
  $IPGroup_ContactUser
  $IPGroup_SipReRoutingMode
  $IPGroup_AlwaysUseRouteTable
  $IPGroup_SRDName
  $IPGroup_MediaRealm
  $IPGroup_ClassifyByProxySet
  $IPGroup_ProfileName
  $IPGroup_MaxNumOfRegUsers
  $IPGroup_InboundManSet
  $IPGroup_OutboundManSet
  $IPGroup_RegistrationMode
  $IPGroup_AuthenticationMode
  $IPGroup_MethodList
  $IPGroup_EnableSBCClientForking
  $IPGroup_SourceUriInput
  $IPGroup_DestUriInput
  $IPGroup_ContactName
  $IPGroup_Username
  $IPGroup_Password
  $IPGroup_UUIFormat
  $IPGroup_QOEProfile
  $IPGroup_BWProfile
  $IPGroup_AlwaysUseSourceAddr
  $IPGroup_MsgManUserDef1
  $IPGroup_MsgManUserDef2
  $IPGroup_SIPConnect
  $IPGroup_SBCPSAPMode
  $IPGroup_DTLSContext
  $IPGroup_CreatedByRoutingServer
  $IPGroup_UsedByRoutingServer
  $IPGroup_SBCOperationMode
  $IPGroup_SBCRouteUsingRequestURIPort
  $IPGroup_SBCKeepOriginalCallID
  $IPGroup_TopologyLocation
  $IPGroup_SBCDialPlanName
  $IPGroup_CallSetupRulesSetId
  $IPGroup_Tags
  $IPGroup_SBCUserStickiness
  $IPGroup_UserUDPPortAssignment
}


Update-TypeData -TypeName IPGroup -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object IPGroup_Name,IPGroup_SRDName,IPGroup_ProxySetName,IPGroup_ProxySetNameIPGroup_MediaRealm } -Force
Update-TypeData -TypeName IPGroup -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object IPGroup_Name,IPGroup_TopologyLocation,IPGroup_TypeIPGroup_ProxySetName,IPGroup_ProfileName,IPGroup_SRDName,IPGroup_MediaRealm,IPGroup_ContactName,IPGroup_SIPGroupName,IPGroup_ContactUser } -Force
Update-TypeData -TypeName IPGroup -MemberType Scriptmethod -MemberName 'viewSBCGeneral' -Value { $this | select-object IPGroup_ClassifyByProxySet,IPGroup_SBCOperationMode,IPGroup_EnableSBCClientForking } -Force
Update-TypeData -TypeName IPGroup -MemberType Scriptmethod -MemberName 'viewAdvanced' -Value { $this | select-object IPGroup_UUIFormat,IPGroup_AlwaysUseSourceAddr } -Force
Update-TypeData -TypeName IPGroup -MemberType Scriptmethod -MemberName 'viewSBCAdvanced' -Value { $this | select-object IPGroup_SourceUriInput,IPGroup_DestUriInput,IPGroup_SIPConnect,IPGroup_SBCPSAPMode,IPGroup_CreatedByRoutingServer,IPGroup_UsedByRoutingServer,IPGroup_SBCRouteUsingRequestURIPort,IPGroup_DTLSContext,IPGroup_SBCKeepOriginalCallID,IPGroup_SBCDialPlanName,IPGroup_CallSetupRulesSetId } -Force
Update-TypeData -TypeName IPGroup -MemberType Scriptmethod -MemberName 'viewQualityofExperience' -Value { $this | select-object IPGroup_QOEProfile,IPGroup_BWProfile } -Force
Update-TypeData -TypeName IPGroup -MemberType Scriptmethod -MemberName 'viewMessageManipulation' -Value { $this | select-object IPGroup_InboundManSet,IPGroup_OutboundManSet,IPGroup_MsgManUserDef1,IPGroup_MsgManUserDef2 } -Force  
Update-TypeData -TypeName IPGroup -MemberType Scriptmethod -MemberName 'viewSBCRegistrationAuthentication' -Value { $this | select-object IPGroup_MaxNumOfRegUsers,IPGroup_RegistrationMode,IPGroup_AuthenticationMode,IPGroup_MethodList,IPGroup_Username,IPGroup_Password } -Force
Update-TypeData -TypeName IPGroup -MemberType Scriptmethod -MemberName 'viewGWGroupStatus' -Value { $this | select-object * } -Force



class QOEProfile {
  $QOEProfile_Name
  $QOEProfile_SensitivityLevel
}
Update-TypeData -TypeName QOEProfile -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     
       
class BWProfile {
  $BWProfile_Name
  $BWProfile_EgressAudioBW
  $BWProfile_IngressAudioBW
  $BWProfile_EgressVideoBW
  $BWProfile_IngressVideoBW
  $BWProfile_TotalEgressBW
  $BWProfile_TotalIngressBW
  $BWProfile_WarningThreshold
  $BWProfile_MinorThreshold
  $BWProfile_hysteresis
  $BWProfile_GenerateAlarms
}
Update-TypeData -TypeName BWProfile -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     


class QualityOfServiceRules {
  $QualityOfServiceRules_IPGroupName
  $QualityOfServiceRules_RuleMetric
  $QualityOfServiceRules_Severity
  $QualityOfServiceRules_RuleAction
  $QualityOfServiceRules_CallsRejectDuration
  $QualityOfServiceRules_AltIPProfileName
}
Update-TypeData -TypeName QualityOfServiceRules -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class IpProfile { 
  #General
  $IpProfile_ProfileName
  $IpProfile_CreatedByRoutingServer
  #MediaSecurity
  $IpProfile_SBCMediaSecurityBehaviour
  $IpProfile_EnableSymmetricMKI
  $IpProfile_MKISize
  $IpProfile_SBCEnforceMKISize
  $IpProfile_SBCMediaSecurityMethod
  $IpProfile_ResetSRTPStateUponRekey
  $IpProfile_GenerateSRTPKeys
  $IpProfile_SBCRemoveCryptoLifetimeInSDP
  #SBC EARLY MEDIA
  $IpProfile_SBCRemoteEarlyMediaSupport
  $IpProfile_SBCRemoteMultiple18xSupport
  $IpProfile_SBCRemoteEarlyMediaResponseType
  $IpProfile_SBCRemoteMultipleEarlyDialogs
  $IpProfile_SBCRemoteMultipleAnswersMode
  $IpProfile_SBCRemoteEarlyMediaRTP
  $IpProfile_SBCRemoteSupportsRFC3960
  $IpProfile_SBCRemoteCanPlayRingback
  $IpProfile_SBCGenerateRTP
  #SBC MEDIA
  $IpProfile_TranscodingMode
  $IpProfile_SBCExtensionCodersGroupName
  $IpProfile_SBCAllowedAudioCodersGroupName
  $IpProfile_SBCAllowedCodersMode
  $IpProfile_SBCAllowedVideoCodersGroupName
  $IpProfile_SBCAllowedMediaTypes
  $IpProfile_SBCDirectMediaTag
  $IpProfile_SBCRFC2833Behavior
  $IpProfile_SBC2833DTMFPayloadType
  $IpProfile_SBCAlternativeDTMFMethod
  $IpProfile_SBCSDPPtimeAnswer
  $IpProfile_SBCPreferredPTime
  $IpProfile_SBCUseSilenceSupp
  $IpProfile_SBCRTPRedundancyBehavior
  $IpProfile_SBCRTCPMode
  $IpProfile_SBCJitterCompensation
  $IpProfile_SBCIceMode
  $IpProfile_SBCSDPHandleRTCPAttribute
  $IpProfile_SBCRTCPMux
  $IpProfile_SBCRTCPFeedback
  $IpProfile_SBCVoiceQualityEnhancement
  $IpProfile_SBCMaxOpusBW
  #QUALITY OF SERVICE
  $IpProfile_IPDiffServ
  $IpProfile_SigIPDiffServ
  #SBC Jitter Buffer
  $IpProfile_JitterBufMinDelay
  $IpProfile_JitterBufOptFactor
  $IpProfile_SCE
  $IpProfile_JitterBufMaxDelay
  #Voice
  $IpProfile_EnableEchoCanceller
  $IpProfile_InputGain
  $IpProfile_VoiceVolume
  #SBCSignalling
  $IpProfile_SbcPrackMode
  $IpProfile_SBCAssertIdentity
  $IpProfile_SBCDiversionMode
  $IpProfile_SBCHistoryInfoMode
  $IpProfile_SBCSessionExpiresMode
  $IpProfile_SBCRemoteUpdateSupport
  $IpProfile_SBCRemoteReinviteSupport
  $IpProfile_SBCRemoteDelayedOfferSupport
  $IpProfile_SBCRemoteRepresentationMode
  $IpProfile_SBCKeepVIAHeaders
  $IpProfile_SBCKeepRoutingHeaders
  $IpProfile_SBCKeepUserAgentHeader
  $IpProfile_SBCHandleXDetect
  $IpProfile_SBCISUPBodyHandling
  $IpProfile_SBCISUPVariant
  $IpProfile_SBCMaxCallDuration
  #SBC REGISTRATION
  $IpProfile_SBCUserRegistrationTime
  $IpProfile_SBCUserBehindUdpNATRegistrationTime
  $IpProfile_SBCUserBehindTcpNATRegistrationTime
  #SBC FORWARD AND TRANSFER
  $IpProfile_SBCRemoteReferBehavior
  $IpProfile_SBCRemoteReplacesBehavior
  $IpProfile_SBCPlayRBTToTransferee
  $IpProfile_SBCRemote3xxBehavior
  #SBC HOLD
  $IpProfile_SBCRemoteHoldFormat
  $IpProfile_SBCReliableHeldToneSource
  $IpProfile_SBCPlayHeldTone
  #SBC FAX
  $IpProfile_SBCFaxBehavior
  $IpProfile_SBCFaxOfferMode
  $IpProfile_SBCFaxAnswerMode
  $IpProfile_SBCRemoteRenegotiateOnFaxDetection
  #MEDIA
  $IpProfile_DisconnectOnBrokenConnection
  $IpProfile_MediaIPVersionPreference
  $IpProfile_RTPRedundancyDepth
  #GATEWAY
  $IpProfile_AMDSensitivityParameterSuit
  $IpProfile_AMDSensitivityLevel
  $IpProfile_AMDMaxGreetingTime
  $IpProfile_AMDMaxPostSilenceGreetingTime
  #ToSort
  $IpProfile_CodersGroupName
  $IpProfile_IpPreference
  $IpProfile_IsFaxUsed
  $IpProfile_CNGmode
  $IpProfile_VxxTransportType
  $IpProfile_NSEMode
  $IpProfile_IsDTMFUsed
  $IpProfile_PlayRBTone2IP
  $IpProfile_EnableEarlyMedia
  $IpProfile_ProgressIndicator2IP
  $IpProfile_CopyDest2RedirectNumber
  $IpProfile_MediaSecurityBehaviour
  $IpProfile_CallLimit
  $IpProfile_FirstTxDtmfOption
  $IpProfile_SecondTxDtmfOption
  $IpProfile_RxDTMFOption
  $IpProfile_EnableHold
  $IpProfile_AddIEInSetup
  $IpProfile_SBCSendMultipleDTMFMethods
  $IpProfile_SBCFaxCodersGroupName
  $IpProfile_EnableQSIGTunneling
  $IpProfile_EnableEarly183
  $IpProfile_EarlyAnswerTimeout
  $IpProfile_AmdMode
  $IpProfile_SBCAdaptRFC2833BWToVoiceCoderBW
  $IpProfile_SBCFaxReroutingMode
  $IpProfile_LocalRingbackTone
  $IpProfile_LocalHeldTone
}


#SBC MEDIA


Update-TypeData -TypeName IpProfile -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object IpProfile_ProfileName } -Force     
Update-TypeData -TypeName IpProfile -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object IpProfile_ProfileName,IpProfile_CreatedByRoutingServer } -Force     
Update-TypeData -TypeName IpProfile -MemberType Scriptmethod -MemberName 'viewMediaSecurity' -Value { $this | select-object IpProfile_SBCMediaSecurityBehaviour,IpProfile_EnableSymmetricMKI,IpProfile_MKISize,IpProfile_SBCEnforceMKISize,IpProfile_SBCMediaSecurityMethod,IpProfile_ResetSRTPStateUponRekey,IpProfile_GenerateSRTPKeys,IpProfile_SBCRemoveCryptoLifetimeInSDP } -Force     
Update-TypeData -TypeName IpProfile -MemberType Scriptmethod -MemberName 'viewSBCEarlyMedia' -Value { $this | select-object IpProfile_SBCRemoteEarlyMediaSupport,IpProfile_SBCRemoteMultiple18xSupport,IpProfile_SBCRemoteEarlyMediaResponseType,IpProfile_SBCRemoteMultipleEarlyDialogs,IpProfile_SBCRemoteMultipleAnswersMode,IpProfile_SBCRemoteEarlyMediaRTP,IpProfile_SBCRemoteSupportsRFC3960,IpProfile_SBCRemoteCanPlayRingback,IpProfile_SBCGenerateRTP } -Force     
Update-TypeData -TypeName IpProfile -MemberType Scriptmethod -MemberName 'viewSBCMedia' -Value { $this | select-object $IpProfile_TranscodingMode,IpProfile_SBCExtensionCodersGroupName,IpProfile_SBCAllowedAudioCodersGroupName,IpProfile_SBCAllowedCodersMode,IpProfile_SBCAllowedVideoCodersGroupName,IpProfile_SBCAllowedMediaTypes,IpProfile_SBCDirectMediaTag,IpProfile_SBCRFC2833Behavior,IpProfile_SBC2833DTMFPayloadType,IpProfile_SBCAlternativeDTMFMethod,IpProfile_SBCSDPPtimeAnswer,IpProfile_SBCPreferredPTime,IpProfile_SBCUseSilenceSupp,IpProfile_SBCRTPRedundancyBehavior,IpProfile_SBCRTCPMode,IpProfile_SBCJitterCompensation,IpProfile_SBCIceMode,IpProfile_SBCSDPHandleRTCPAttribute,IpProfile_SBCRTCPMux,IpProfile_SBCRTCPFeedback,IpProfile_SBCVoiceQualityEnhancement,IpProfile_SBCMaxOpusBW   } -Force     
Update-TypeData -TypeName IpProfile -MemberType Scriptmethod -MemberName 'viewQualityofService' -Value { $this | select-object IpProfile_IPDiffServ,IpProfile_SigIPDiffServ } -Force     
Update-TypeData -TypeName IpProfile -MemberType Scriptmethod -MemberName 'viewSBCJitterBuffer' -Value { $this | select-object IpProfile_JitterBufMinDelay,IpProfile_JitterBufOptFactor,IpProfile_SCE,IpProfile_JitterBufMaxDelay } -Force
Update-TypeData -TypeName IpProfile -MemberType Scriptmethod -MemberName 'viewVoice' -Value { $this | select-object IpProfile_EnableEchoCanceller,IpProfile_InputGain,IpProfile_VoiceVolume } -Force
Update-TypeData -TypeName IpProfile -MemberType Scriptmethod -MemberName 'viewSBCSignalling' -Value { $this | select-object IpProfile_SbcPrackMode,IpProfile_SBCAssertIdentity,IpProfile_SBCDiversionMode,IpProfile_SBCHistoryInfoMode,IpProfile_SBCSessionExpiresMode,IpProfile_SBCRemoteUpdateSupport,IpProfile_SBCRemoteReinviteSupport,IpProfile_SBCRemoteDelayedOfferSupport,IpProfile_SBCRemoteRepresentationMode,IpProfile_SBCKeepVIAHeaders,IpProfile_SBCKeepRoutingHeaders,IpProfile_SBCKeepUserAgentHeader,IpProfile_SBCHandleXDetect,IpProfile_SBCISUPBodyHandling,IpProfile_SBCISUPVariant,IpProfile_SBCMaxCallDuration } -Force
Update-TypeData -TypeName IpProfile -MemberType Scriptmethod -MemberName 'viewSBCRegistration' -Value { $this | select-object IpProfile_SBCUserRegistrationTime,IpProfile_SBCUserBehindUdpNATRegistrationTime,IpProfile_SBCUserBehindTcpNATRegistrationTime } -Force
Update-TypeData -TypeName IpProfile -MemberType Scriptmethod -MemberName 'viewSBCForwardandTransfer' -Value { $this | select-object IpProfile_SBCRemoteReferBehavior,IpProfile_SBCRemoteReplacesBehavior,IpProfile_SBCPlayRBTToTransferee,IpProfile_SBCRemote3xxBehavior } -Force
Update-TypeData -TypeName IpProfile -MemberType Scriptmethod -MemberName 'viewSbcHold' -Value { $this | select-object IpProfile_SBCRemoteHoldFormat,IpProfile_SBCReliableHeldToneSource,IpProfile_SBCPlayHeldTone } -Force
Update-TypeData -TypeName IpProfile -MemberType Scriptmethod -MemberName 'viewSbcfax' -Value { $this | select-object IpProfile_SBCFaxBehavior,IpProfile_SBCFaxOfferMode,IpProfile_SBCFaxAnswerMode,IpProfile_SBCRemoteRenegotiateOnFaxDetection } -Force
Update-TypeData -TypeName IpProfile -MemberType Scriptmethod -MemberName 'viewMedia' -Value { $this | select-object IpProfile_DisconnectOnBrokenConnection,IpProfile_MediaIPVersionPreference,IpProfile_RTPRedundancyDepth } -Force
Update-TypeData -TypeName IpProfile -MemberType Scriptmethod -MemberName 'viewGateway' -Value { $this | select-object IpProfile_AMDSensitivityParameterSuit,IpProfile_AMDSensitivityLevel,IpProfile_AMDMaxGreetingTime,IpProfile_AMDMaxPostSilenceGreetingTime } -Force

class Classification {
  $Classification_ClassificationName
  $Classification_MessageConditionName
  $Classification_SRDName
  $Classification_SrcSIPInterfaceName
  $Classification_SrcAddress
  $Classification_SrcPort
  $Classification_SrcTransportType
  $Classification_SrcUsernamePrefix
  $Classification_SrcHost
  $Classification_DestUsernamePrefix
  $Classification_DestHost
  $Classification_ActionType
  $Classification_SrcIPGroupName
  $Classification_DestRoutingPolicy
  $Classification_IpProfileName
}
Update-TypeData -TypeName Classification -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class SBCRoutingPolicy {
  $SBCRoutingPolicy_Name
  $SBCRoutingPolicy_LCREnable
  $SBCRoutingPolicy_LCRAverageCallLength
  $SBCRoutingPolicy_LCRDefaultCost
  $SBCRoutingPolicy_LdapServerGroupName
}
Update-TypeData -TypeName SBCRoutingPolicy -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class IP2IPRouting {
  $IP2IPRouting_RouteName
  $IP2IPRouting_RoutingPolicyName
  $IP2IPRouting_SrcIPGroupName
  $IP2IPRouting_SrcUsernamePrefix
  $IP2IPRouting_SrcHost
  $IP2IPRouting_DestUsernamePrefix
  $IP2IPRouting_DestHost
  $IP2IPRouting_RequestType
  $IP2IPRouting_MessageConditionName
  $IP2IPRouting_ReRouteIPGroupName
  $IP2IPRouting_Trigger
  $IP2IPRouting_CallSetupRulesSetId
  $IP2IPRouting_DestType
  $IP2IPRouting_DestIPGroupName
  $IP2IPRouting_DestSIPInterfaceName
  $IP2IPRouting_DestAddress
  $IP2IPRouting_DestPort
  $IP2IPRouting_DestTransportType
  $IP2IPRouting_AltRouteOptions
  $IP2IPRouting_GroupPolicy
  $IP2IPRouting_CostGroup
  $IP2IPRouting_DestTags
  $IP2IPRouting_SrcTags
  $IP2IPRouting_IPGroupSetName
  $IP2IPRouting_RoutingTagName
  $IP2IPRouting_InternalAction
}
Update-TypeData -TypeName IP2IPRouting -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class SBCAlternativeRoutingReasons {
  $SBCAlternativeRoutingReasons_ReleaseCause
}
Update-TypeData -TypeName SBCAlternativeRoutingReasons -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class IPGroupSet {
  $IPGroupSet_Name
  $IPGroupSet_Policy
  $IPGroupSet_Tags
}
Update-TypeData -TypeName IPGroupSet -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class IPInboundManipulation {
  $IPInboundManipulation_ManipulationName
  $IPInboundManipulation_IsAdditionalManipulation
  $IPInboundManipulation_ManipulatedURI
  $IPInboundManipulation_ManipulationPurpose
  $IPInboundManipulation_SrcIPGroupName
  $IPInboundManipulation_SrcUsernamePrefix
  $IPInboundManipulation_SrcHost
  $IPInboundManipulation_DestUsernamePrefix
  $IPInboundManipulation_DestHost
  $IPInboundManipulation_RequestType
  $IPInboundManipulation_RemoveFromLeft
  $IPInboundManipulation_RemoveFromRight
  $IPInboundManipulation_LeaveFromRight
  $IPInboundManipulation_Prefix2Add
  $IPInboundManipulation_Suffix2Add
}
Update-TypeData -TypeName IPInboundManipulation -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class IPOutboundManipulation {
  $IPOutboundManipulation_ManipulationName
  $IPOutboundManipulation_RoutingPolicyName
  $IPOutboundManipulation_IsAdditionalManipulation
  $IPOutboundManipulation_SrcIPGroupName
  $IPOutboundManipulation_DestIPGroupName
  $IPOutboundManipulation_SrcUsernamePrefix
  $IPOutboundManipulation_SrcHost
  $IPOutboundManipulation_DestUsernamePrefix
  $IPOutboundManipulation_DestHost
  $IPOutboundManipulation_CallingNamePrefix
  $IPOutboundManipulation_MessageConditionName
  $IPOutboundManipulation_RequestType
  $IPOutboundManipulation_ReRouteIPGroupName
  $IPOutboundManipulation_Trigger
  $IPOutboundManipulation_ManipulatedURI
  $IPOutboundManipulation_RemoveFromLeft
  $IPOutboundManipulation_RemoveFromRight
  $IPOutboundManipulation_LeaveFromRight
  $IPOutboundManipulation_Prefix2Add
  $IPOutboundManipulation_Suffix2Add
  $IPOutboundManipulation_PrivacyRestrictionMode
  $IPOutboundManipulation_DestTags
  $IPOutboundManipulation_SrcTags
}
Update-TypeData -TypeName IPOutboundManipulation -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class account {
  $Account_ServedTrunkGroup
  $Account_ServedIPGroupName
  $Account_ServingIPGroupName
  $Account_Username
  $Account_Password
  $Account_HostName
  $Account_ContactUser
  $Account_Register
  $Account_RegistrarStickiness
  $Account_RegistrarSearchMode
  $Account_RegEventPackageSubscription
  $Account_ApplicationType
  $Account_RegByServedIPG
  $Account_UDPPortAssignment
}
Update-TypeData -TypeName account -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class CostGroupTable {
  $CostGroupTable_CostGroupName
  $CostGroupTable_DefaultConnectionCost
  $CostGroupTable_DefaultMinuteCost
}
Update-TypeData -TypeName CostGroupTable -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class CostGroupTimebands {
  $CostGroupTimebands_StartTime
  $CostGroupTimebands_EndTime
  $CostGroupTimebands_ConnectionCost
  $CostGroupTimebands_MinuteCost
}
Update-TypeData -TypeName CostGroupTimebands -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class IDSRule {
  $IDSRule_Policy
  $IDSRule_RuleID
  $IDSRule_Reason
  $IDSRule_ThresholdScope
  $IDSRule_ThresholdWindow
  $IDSRule_MinorAlarmThreshold
  $IDSRule_MajorAlarmThreshold
  $IDSRule_CriticalAlarmThreshold
  $IDSRule_DenyThreshold
  $IDSRule_DenyPeriod
}
Update-TypeData -TypeName IDSRule -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class IDSMatch {
  $IDSMatch_SIPInterface
  $IDSMatch_ProxySet
  $IDSMatch_Subnet
  $IDSMatch_Policy
}
Update-TypeData -TypeName IDSMatch -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class MaliciousSignatureDB {
  $MaliciousSignatureDB_Name
  $MaliciousSignatureDB_Pattern
}
Update-TypeData -TypeName MaliciousSignatureDB -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object MaliciousSignatureDB_Name,MaliciousSignatureDB_Pattern } -Force     



class SIPRecRouting {
  $SIPRecRouting_RecordedIPGroupName 
  $SIPRecRouting_RecordedSourcePrefix
  $SIPRecRouting_RecordedDestinationPrefix
  $SIPRecRouting_PeerIPGroupName 
  $SIPRecRouting_PeerTrunkGroupID
  $SIPRecRouting_Caller
  $SIPRecRouting_SRSIPGroupName
  $SIPRecRouting_SRSRedundantIPGroupName
}
Update-TypeData -TypeName SIPRecRouting -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class PerformanceProfile {
  $PerformanceProfile_Entity
  $PerformanceProfile_IPGroupName
  $PerformanceProfile_SRDName
  $PerformanceProfile_PMType
  $PerformanceProfile_MinorThreshold
  $PerformanceProfile_MajorThreshold
  $PerformanceProfile_Hysteresis
  $PerformanceProfile_MinimumSample
  $PerformanceProfile_WindowSize
}
Update-TypeData -TypeName PerformanceProfile -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class LoggingFilters {
  $LoggingFilters_FilterType
  $LoggingFilters_Value
  $LoggingFilters_LogDestination
  $LoggingFilters_CaptureType
  $LoggingFilters_Mode
}
Update-TypeData -TypeName LoggingFilters -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     

class CallSetupRules { 
  $CallSetupRules_RulesSetID
  $CallSetupRules_QueryType
  $CallSetupRules_QueryTarget
  $CallSetupRules_AttributesToQuery
  $CallSetupRules_AttributesToGet
  $CallSetupRules_RowRole
  $CallSetupRules_Condition
  $CallSetupRules_ActionSubject
  $CallSetupRules_ActionType
  $CallSetupRules_ActionValue
}
Update-TypeData -TypeName CallSetupRules -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object CallSetupRules_RulesSetID,CallSetupRules_QueryType,CallSetupRules_QueryTarget } -Force     
Update-TypeData -TypeName CallSetupRules -MemberType Scriptmethod -MemberName 'viewGeneral' -Value { $this | select-object CallSetupRules_RulesSetID,CallSetupRules_QueryType,CallSetupRules_QueryTarget,CallSetupRules_AttributesToQuery,CallSetupRules_AttributesToGet,CallSetupRules_RowRole,CallSetupRules_Condition } -Force     
Update-TypeData -TypeName CallSetupRules -MemberType Scriptmethod -MemberName 'viewAction' -Value { $this | select-object CallSetupRules_ActionSubject,CallSetupRules_ActionType,CallSetupRules_ActionValue } -Force     

class WebUsers { 
    $WebUsers_Username
    $WebUsers_Password
    $WebUsers_Status
    $WebUsers_PwAgeInterval
    $WebUsers_SessionLimit
    $WebUsers_SessionTimeout
    $WebUsers_BlockTime
    $WebUsers_UserLevel
    $WebUsers_PwNonce
    $WebUsers_SSHPublicKey
}
Update-TypeData -TypeName WebUsers -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object WebUsers_Username,WebUsers_Status,WebUsers_UserLevel } -Force     

class MessagePolicy { 
  $MessagePolicy_MaxMessageLength
  $MessagePolicy_MaxHeaderLength
  $MessagePolicy_MaxBodyLength
  $MessagePolicy_MaxNumHeaders
  $MessagePolicy_MaxNumBodies
  $MessagePolicy_SendRejection
  $MessagePolicy_MethodList
  $MessagePolicy_MethodListType
  $MessagePolicy_BodyList
  $MessagePolicy_BodyListType
  $MessagePolicy_UseMaliciousSignatureDB
  $MessagePolicy_Name
}
Update-TypeData -TypeName MessagePolicy -MemberType Scriptmethod -MemberName 'viewOverview' -Value { $this | select-object * } -Force     


function Convertfrom-MediantDocConfigIni 
{
  param ( $MediantConfigini )

  #Credit Oliver Lipkau
  #https://blogs.technet.microsoft.com/heyscriptingguy/2011/08/20/use-powershell-to-work-with-any-ini-file/
    
  $ini = @{}
  $section = 'Mediant'
  $ini[$section] = @{}

  switch -regex ($MediantConfigini) {
    '^(;.*)'  
    {
      #Comment
      Write-Verbose -Message "COMMENT -> $_"
      $value = $matches[1]
      $CommentCount = $CommentCount + 1
      $name = 'Comment' + $CommentCount
      $ini[$section][$name] = $value
      continue
    } 
    '^\[([^\\].+)\]'  
    {
      #Section
      Write-Host -Object "Imported: $($matches[1].Replace(' ',''))" -ForegroundColor cyan
      Write-Verbose -Message "SECTION -> $_"
      $section = $matches[1].Replace(' ','')
      $ini[$section] = @{}
      $CommentCount = 0
      continue
    }
    '^(.+?)\s*=(.*)'  
    {
      #Key
      Write-Verbose -Message "KEY -> $_"
      $name, $value = $matches[1..2]
      $ini[$section][$name] = $value
      continue
    }
    default 
    {
      Write-Verbose -Message "Ignore -> $_"
    }
  }
  return $ini
}
function ConvertFrom-MediantDocTable 
{ 
    [CmdletBinding()]
    param (
        $item,
        $itemindex,
        $ini = $ini
        )

    Write-Verbose -Message "Converting $item"

    try 
    {
        $object = $ini[$item]
        if ($object -eq $null) { throw "Not Configured $item" }

        [array]$objectIndex = $object["FORMAT $($item)_Index"].trim().trimend(';').Split(',').trim()

        foreach ($o in ($object.keys.where( { $_ -like "$item*" })) ) 
        { 
            try
            { 
                $result = New-Object $item
                $result | Add-Member -membertype NoteProperty -Name ("$($item)_Index") -Value $o -Force
                Write-Verbose -Message "class $item" 
            }
            catch 
            {
                $result = New-Object -TypeName PSCustomObject
                $result | Add-Member -membertype NoteProperty -Name ("$($item)_Index") -Value $o -Force
                foreach ($i in $itemindex)
                {
                  $result | Add-Member -membertype NoteProperty -Name $i -Value ''
                }
                $result.pstypenames.insert(0,"$item")
                Write-Verbose -Message "psCustomObject $item"
            }
        
            for ($i = 0; $i -lt $objectIndex.Count; $i++) 
            {
                try 
                {
                    $result.($objectIndex[$i]) = $($object.$o.trim().trimend(';').Split(',')[$i].trim().trimstart([char]0x0022).trimend([char]0x0022))
                    Write-Verbose -Message "$($objectIndex[$i]) = $($result.($objectIndex[$i]))"
                }
                catch 
                {
                    Write-Warning " *** Parameter not documented -> [$item]$($objectIndex[$i])" 
                    $Script:MissingParameter = $TRUE
                    $result | Add-Member -MemberType NoteProperty -Name ($objectIndex[$i]) -Value $($object.$o.trim().trimend(';').Split(',')[$i].trim().trimstart([char]0x0022).trimend([char]0x0022))
                    Write-Verbose -Message "$($objectIndex[$i]) = $($result.($objectIndex[$i]))"
                }
            }
        $result 
    }
    Update-TypeData -TypeName "$item" -MemberType Scriptmethod -MemberName 'view' -Value { $this  } -Force
    Write-Host -Object "Converted: $item" -ForegroundColor DarkCyan
  }
  catch 
  {
    Write-Host -Object "Skipping: $item" -ForegroundColor DarkCyan
  }
}

function ConvertFrom-MediantDocMediantParameter {
    $item = 'Mediant'
    $result = New-Object $item

    Switch -regex ($ini[$item].Values) 
    {
      '^;Board: (.*)$' { $result | Add-Member -Name 'Mediant_Board' -Value $matches[1] -MemberType NoteProperty -Force }
      '^;Board Type: (.*)$' { $result | Add-Member -Name 'Mediant_BoardType' -Value $matches[1] -MemberType NoteProperty -Force }
      '^;;;Key features:(.*)$'  { $result | Add-Member -Name 'Mediant_KeyFeatures' -Value $matches[1].split(';') -MemberType NoteProperty -Force }
      '^;Serial Number: (.*)$'  { $result | Add-Member -Name 'Mediant_SerialNumber' -Value $matches[1] -MemberType NoteProperty -Force }
      '^;Software Version: (.*)$' { $result | Add-Member -Name 'Mediant_SoftwareVersion' -Value $matches[1] -MemberType NoteProperty -Force }
      '^;DSP Software Version: (.*)$' { $result | Add-Member -Name 'Mediant_DSPSoftwareVersion' -Value $matches[1] -MemberType NoteProperty -Force  }
    }
    return $result
}

function ConvertFrom-MediantDocList 
{ 
  [CmdletBinding()]
  param (
    $item,
    $itemindex,
    $ini = $ini
  )

  Write-Verbose -Message "Converting $item" 

  try 
  {
    $object = $ini[$item]

    if ($object.keys.where({ $_ -notlike 'Comment*' }).count -eq 0)
    {
      throw "Skipping Empty $item" 
    }

    try
    {
      $result = New-Object $item
      Write-Verbose -Message "class $item" 
    }
    catch 
    {
      $result = New-Object -TypeName PSCustomObject
      if ($itemindex) {
          foreach ($i in $itemindex) {
             $result | Add-Member -MemberType NoteProperty -Name $i -Value $null -Force
             Write-Verbose -Message "Adding member $i"
          }
      }
      $result.pstypenames.insert(0,"$item")
      Write-Verbose -Message "PSCustomObject $item"
    }

    foreach ($o in ( $object.keys.where({ $_ -notlike 'Comment*' }) ) ) 
    {
        try 
        {     
            $result.$o = $object[$o]
        }
        catch
        {
            Write-Warning " *** Parameter not documented -> [$item]$o"
            $Script:MissingParameter = $true
            $result | Add-Member -MemberType NoteProperty -Name $o -Value $object[$o] -Force
        }
    }
    Update-TypeData -TypeName "$item" -MemberType Scriptmethod -MemberName 'view' -Value { $this } -Force
    Write-Host -Object "Converted: $item" -ForegroundColor DarkCyan
    $result
  }
  catch 
  {
    Write-Host -Object "Skipping: $item" -ForegroundColor DarkCyan
  }
}

function update-mediantDocParameter 
{
  [CmdletBinding()]
  Param ( 
    [Parameter(Position = 0, mandatory = $true)]
    [AllowEmptyString()]
    [string]$Parameter,  
    [Parameter(Position = 1, mandatory = $false)]
    [AllowEmptyString()]
    [string]$DefaultValue = '',
    [Parameter(Position = 2, mandatory = $false)]
  [hashtable]$ParameterLookup)
    
  Write-Verbose -Message "Parameter-> $Parameter" 
  Write-Verbose -Message "DefaultValue-> $DefaultValue"
  Write-Verbose -Message "ParameterLookup-> $ParameterLookup"

  if ($Parameter -eq '') 
  {
    $Parameter = $DefaultValue 
  }
    
  if ($PSBoundParameters.ContainsKey('ParameterLookup')) 
  {
    if ($ParameterLookup.containskey($Parameter)) 
    {
      return $ParameterLookup[$Parameter] 
    }
    else 
    {
      return $Parameter 
    }
  }
  else 
  {
    return $Parameter
  }
}

function Add-mediantDocParagraph 
{
  param(
    [Parameter(Position = 3, mandatory = $false)]
    [switch]$NewPage,
    [Parameter(Position = 0, mandatory = $false)]
    [string]$heading,
    [Parameter(Position = 1, mandatory = $false)]
    [ValidateSet('1', '2', '3', '4')]
    [String]$headingtype = 2,
    [Parameter(Position = 2, mandatory = $false)]
    [array]$text
  )

  if ($NewPage) 
  {
    Add-WordBreak -breaktype NewPage
  }
  if ($heading) 
  {
    Write-Host -Object "Documenting $heading" -ForegroundColor Cyan
    Add-WordText -text $heading -WDBuiltinStyle "wdStyleHeading$headingtype"
    Add-WordBreak -breaktype Paragraph
  }
  if ($text) 
  {
    foreach ($t in $text) 
    {
      Add-WordText -text $t -WDBuiltinStyle wdStyleNormal
    }
    Add-WordBreak -breaktype Paragraph
  }
}

$DisableEnable = @{"0" = "Disable"; "1" = "Enable"} 
$EnableDisable = @{"0" = "Enable"; "1" = "Disable"} 
$YesNo = @{"0" = "Yes"; "1" = "No"} 
$NoYes = @{"0" = "No"; "1" = "Yes"} 

$3xxBehavior = @{"0" = "Forward"; "1" = "Redirect"}
$AuthenticationMode = @{ "0" = "Per Endpoint"; "1" = "Per Gateway"; "3" = "Per FXS"; }
$CDRReportLevel = @{ "0" = "None"; "1" = "End Call"; "2" = "Start End Call"; "3" = "Connect & End Call"; "4" = "Start & End & Connect Call" }
$DeviceTable_Tagging = @{ "0" = "Untagged"; "1" = "Tagged"; }
$DNSQueryType = @{ "0" = "A-Record"; "1" = "SRV"; "2" = "NAPTR" }
$EnablePtime = @{"0" = "Remove 'ptime'"; "1" = "include 'ptime'"}
$EtherGroupTable_Mode = @{ "0" = "None"; "1" = "Single"; "2" = "2RX/1TX"; "3" = "2RX/2TX" }
$FaxVBDBehavior = @{"0" = "VBD Coder"; "1" = "IsFaxUsed"}
$InterfaceTable_ApplicationTypes = @{ "0" = "OAMP"; "1" = "Media"; "2" = "Control"; "3" = "OAMP + Media"; "4" = "OAMP + Control"; "5" = "Media + Control"; "6" = "OAMP + Media + Control"}
$InterfaceTable_InterfaceMode = @{"3" = "IPv6 Manual Prefix"; "4" = "IPv6 Manual"; "10" = "IPv4 Manual"} 
$IsCiscoSCEMode = @{"0" = "No Cisco Gatway"; "1" = "CiscoGateway"}
$MediaCDRReportLevel = @{"0" = "None"; "1" = "End Media"; "2" = "Start & End Media"; "3" = "Update & End Media"; "4" = "Start & End & Update Media"}
$MultiPtimeFormat = @{"0" = "None"; "1" = "PacketCable"}
$PhysicalPortsTable_SpeedDuplex = @{ "0" = "10BaseT Half Duplex"; "1" = "10BaseT Full Duplex"; "2" = "100BaseT Half Duplex"; "3" = "100BaseT Full Duplex"; "4" = "Auto Negotiation (default)"; "6" = "1000BaseT Half Duplex"; "7" = "1000BaseT Full Duplex"; }
$PrackMode = @{ "0" = "Disable"; "1" = "Supported "; "2" = "Required"; }
$ProxyDNSQueryType = @{ "0" = "A-Record"; "1" = "SRV"; "2" = "NAPTR" }
$ProxyRedundancyMode = @{ "0" = "Parking"; "1" = "Homing" }
$RegistrarTransportType = @{ "-1" = "Not Configured"; "0" = "UDP"; "1" = "TCP"; "2" = "TLS" }
$ReleaseIP2ISDNCallOnProgressWithCause = @{ "0" = "Default"; "1" = "SIP 4xx EarlyMedia"; "2" = "Always SIP 4xx"; }
$RemoveToTagInFailureResponse = @{ "0" = "Do not remove tag"; "1" = "Remove tag"; }
$SelectSourceHeaderForCalledNumber = @{ "0" = "Request-URI-Header"; "1" = "To Header"; "2" = "P-Called-Party-ID"}
$SessionExpiresMethod = @{ "0" = "Re-Invite"; "1" = "Update"; }
$SIP183Behaviour = @{ "0" = "Progress"; "1" = "Alert "; }
$SIPChallengeCachingMode = @{ "0" = "None"; "1" = "Invite Only"; "2" = "Full" }
$SIPReroutingMode = @{ "0" = "Standard"; "1" = "Proxy"; "2" = "Routing Table" }
$SIPTransportType = @{"0" = "UDP(Default)"; "1" = "TCP"; "2" = "TLS (SIPS)"}
$TelnetServerEnable = @{"0" = "Disable"; "1" = "Enable Unsecured"; "2" = "Enable Secured"}
$TGRProutingPrecedence = @{"0" = "IP to Tel Routing Table"; "1" = "tgrp"}
$TLSContexts_DHKeySize = @{ "1024" = "1024"; "2048" = "2048" }
$TLSContexts_OcspDefaultResponse = @{ "0" = "Reject"; "1" = "Allow" }
$TLSContexts_TLSVersion = @{ "0" = "Any - Including SSLv3 "; "1" = "TLSv1.0"; "2" = "TLSv1.1"; "3" = "TLSv1.0 + TLSv1.1"; "4" = "TLSv1.2"; "5" = "TLSv1.0 + TLSv1.2"; "6" = "TLSv1.1 + TLSv1.2"; "7" = "TLSv1.0 +TLSv1.1 +TLSv1.2" }
$TrunkStatusReportingMode = @{ "0" = "Disable"; "1" = "Don't reply OPTIONS"; "2" = "Don’t send Keep-Alive"; "3" = "Don’t Reply and Send"; }
$UseGatewayNameForOptions = @{ "0" = "No"; "1" = "Yes"; "2" = "Server" }
$UseSIPTgrp = @{"0" = "Disable"; "1" = "Send Only"; "2" = "Send and Recieve"; "3" = "Hotline"; "4" = "Hotline Extended"}
$WebUsers_Status = @{"0" = "New"; "1" = "Valid"; "2" = "Failed Login"; "3" = "Inactivity"} 
$WebUsers_UserLevel = @{"50" = "Monitor"; "100" = "Administrator"; "200" = "Security Administrator"; "220" = "Master"} 
$GwDebugLevel = @{"0"="No Debug";"1"="Basic";"5"="Detailed "}
$SyslogFacility = @{"16"="Local0";"17"="Local1";"18"="Local2";"19"="Local3";"20"="Local4";"21"="Local5";"22"="Local6";"23"="Local7"}
$CallDurationUnits = @{"0"="Seconds";"1"="Deciseconds";"2"="Centiseconds";"3"="Milliseconds"}
$TelnetServerEnable = @{"0"="Disable";"1"="Enable Unsecured";"2"="Enable Secured"}
$DefaultTerminalWindowHeight = @{"-1"="CLI Window Height";"0"="Window";}
#([Mediant]::new()).GetType().GetProperties().Name.foreach({"'$itemindex__',"})
$itemindex_AccessList = 'AccessList_Source_IP', 'AccessList_Source_Port', 'AccessList_PrefixLen', 'AccessList_Start_Port', 'AccessList_End_Port', 'AccessList_Protocol', 'AccessList_Use_Specific_Interface', 'AccessList_Interface_ID', 'AccessList_Packet_Size', 'AccessList_Byte_Rate', 'AccessList_Byte_Burst', 'AccessList_Allow_Type','AccessList_Allow_Type_enum'
$itemindex_Account = 'Account_ServedTrunkGroup', 'Account_ServedIPGroupName', 'Account_ServingIPGroupName', 'Account_Username', 'Account_Password', 'Account_HostName', 'Account_ContactUser', 'Account_Register', 'Account_RegistrarStickiness', 'Account_RegistrarSearchMode', 'Account_RegEventPackageSubscription', 'Account_ApplicationType', 'Account_RegByServedIPG', 'Account_UDPPortAssignment'
$itemindex_AllowedAudioCoders = 'AllowedAudioCoders_AllowedAudioCodersGroupName', 'AllowedAudioCoders_AllowedAudioCodersIndex', 'AllowedAudioCoders_CoderID', 'AllowedAudioCoders_UserDefineCoder'
$itemindex_AllowedAudioCodersGroups = 'AllowedAudioCodersGroups_Name'
$itemindex_AllowedVideoCoders = 'AllowedVideoCoders_AllowedVideoCodersGroupName', 'AllowedVideoCoders_AllowedVideoCodersIndex', 'AllowedVideoCoders_UserDefineCoder'
$itemindex_AllowedVideoCodersGroups = 'AllowedVideoCodersGroups_Name'
$itemindex_AudioCoders = "AudioCoders_AudioCodersGroupId","AudioCoders_AudioCodersIndex", "AudioCoders_Name","AudioCoders_pTime", "AudioCoders_rate", "AudioCoders_PayloadType","AudioCoders_Sce", "AudioCoders_CoderSpecific"
$itemindex_AudioCodersGroups = "AudioCodersGroups_Name"
$itemindex_Authentication = "Authentication_UserId","Authentication_UserPassword", "Authentication_Module","Authentication_Port"
$itemindex_BSPParams = 'GOLDSERVICECLASSDIFFSERV','PCMLawSelect','DHCPEnable','BaseUDPPort','PREMIUMSERVICECLASSMEDIADIFFSERV','PREMIUMSERVICECLASSCONTROLDIFFSERV','BRONZESERVICECLASSDIFFSERV','DisableICMPRedirects','DisableICMPUnreachable','UdpPortSpacing','EnterCpuOverloadPercent','ExitCpuOverloadPercent','RoutingServerGroupStatus','QOEServerIp','QOEEnableTLS','QOERedundantServerIp','QoETLSContextName','QOEReportMode','INIFileVersio'
$itemindex_BWProfile = 'BWProfile_Name', 'BWProfile_EgressAudioBW', 'BWProfile_IngressAudioBW', 'BWProfile_EgressVideoBW', 'BWProfile_IngressVideoBW', 'BWProfile_TotalEgressBW', 'BWProfile_TotalIngressBW', 'BWProfile_WarningThreshold','BWProfile_MinorThreshold', 'BWProfile_hysteresis', 'BWProfile_GenerateAlarms'
$itemindex_CallerDisplayInfo = "CallerDisplayInfo_DisplayString","CallerDisplayInfo_IsCidRestricted", "CallerDisplayInfo_Module","CallerDisplayInfo_Port"
$itemindex_CallingNameMapIp2Tel = "CallingNameMapIp2Tel_ManipulationName","CallingNameMapIp2Tel_DestinationPrefix","CallingNameMapIp2Tel_SourcePrefix","CallingNameMapIp2Tel_CallingNamePrefix","CallingNameMapIp2Tel_SourceAddress","CallingNameMapIp2Tel_RemoveFromLeft","CallingNameMapIp2Tel_RemoveFromRight","CallingNameMapIp2Tel_LeaveFromRight","CallingNameMapIp2Tel_Prefix2Add"
$itemindex_CallingNameMapTel2Ip = "CallingNameMapTel2Ip_ManipulationName","CallingNameMapTel2Ip_DestinationPrefix","CallingNameMapTel2Ip_SourcePrefix","CallingNameMapTel2Ip_CallingNamePrefix","CallingNameMapTel2Ip_SrcTrunkGroupID","CallingNameMapTel2Ip_RemoveFromLeft","CallingNameMapTel2Ip_RemoveFromRight","CallingNameMapTel2Ip_LeaveFromRight","CallingNameMapTel2Ip_Prefix2Add","CallingNameMapTel2Ip_Suffix2Add"
$itemindex_CallSetupRules = "CallSetupRules_RulesSetID","CallSetupRules_QueryType", "CallSetupRules_QueryTarget","CallSetupRules_AttributesToQuery", "CallSetupRules_AttributesToGet","CallSetupRules_RowRole", "CallSetupRules_Condition","CallSetupRules_ActionSubject", "CallSetupRules_ActionType","CallSetupRules_ActionValue"
$itemindex_Classification = 'Classification_ClassificationName', 'Classification_MessageConditionName', 'Classification_SRDName', 'Classification_SrcSIPInterfaceName', 'Classification_SrcAddress', 'Classification_SrcPort', 'Classification_SrcTransportType', 'Classification_SrcUsernamePrefix', 'Classification_SrcHost', 'Classification_DestUsernamePrefix', 'Classification_DestHost', 'Classification_ActionType', 'Classification_SrcIPGroupName', 'Classification_DestRoutingPolicy', 'Classification_IpProfileName'
$itemindex_ConditionTable = 'ConditionTable_Condition', 'ConditionTable_Description'
$itemindex_ControlProtocolsParams = 'RoutingServerGroupStatus','QOEServerIp','QOEEnableTLS','QOERedundantServerIp','QoETLSContextName','QOEReportMode'
$itemindex_CostGroupTable = 'CostGroupTable_CostGroupName', 'CostGroupTable_DefaultConnectionCost', 'CostGroupTable_DefaultMinuteCost'
$itemindex_CostGroupTimebands = 'CostGroupTimebands_StartTime', 'CostGroupTimebands_EndTime', 'CostGroupTimebands_ConnectionCost', 'CostGroupTimebands_MinuteCost'
$itemindex_CpMediaRealm = 'CpMediaRealm_MediaRealmName', 'CpMediaRealm_IPv4IF', 'CpMediaRealm_IPv6IF', 'CpMediaRealm_PortRangeStart', 'CpMediaRealm_MediaSessionLeg', 'CpMediaRealm_PortRangeEnd', 'CpMediaRealm_IsDefault', 'CpMediaRealm_QoeProfile', 'CpMediaRealm_BWProfile', 'CpMediaRealm_TopologyLocation'
$itemindex_DeviceTable = 'DeviceTable_VlanID', 'DeviceTable_UnderlyingInterface', 'DeviceTable_DeviceName', 'DeviceTable_Tagging', 'DeviceTable_MTU'
$itemindex_DhcpOption = 'DhcpOption_DhcpServerIndex', 'DhcpOption_Option', 'DhcpOption_Type', 'DhcpOption_Value', 'DhcpOption_ExpandValue'
$itemindex_DhcpServer = 'DhcpServer_InterfaceName', 'DhcpServer_StartIPAddress', 'DhcpServer_EndIPAddress', 'DhcpServer_SubnetMask', 'DhcpServer_LeaseTime', 'DhcpServer_DNSServer1', 'DhcpServer_DNSServer2', 'DhcpServer_NetbiosNameServer', 'DhcpServer_NetbiosNodeType', 'DhcpServer_NTPServer1', 'DhcpServer_NTPServer2', 'DhcpServer_TimeOffset', 'DhcpServer_TftpServer', 'DhcpServer_BootFileName', 'DhcpServer_ExpandBootfileName', 'DhcpServer_OverrideRouter', 'DhcpServer_SipServer', 'DhcpServer_SipServerType'
$itemindex_DhcpStaticIP = 'DhcpStaticIP_DhcpServerIndex', 'DhcpStaticIP_IPAddress', 'DhcpStaticIP_MACAddress'
$itemindex_DhcpVendorClass = 'DhcpVendorClass_DhcpServerIndex', 'DhcpVendorClass_VendorClassId'
$itemindex_DialPlan = 'DialPlan_Name'
$itemindex_DiffServToVlanPriority = 'DiffServToVlanPriority_DiffServ', 'DiffServToVlanPriority_VlanPriority'
$itemindex_DNS2IP = 'Dns2Ip_DomainName', 'Dns2Ip_FirstIpAddress', 'Dns2Ip_SecondIpAddress', 'Dns2Ip_ThirdIpAddress'
$itemindex_EMSService_ServiceName = "EMSService_ServiceName","EMSService_PrimaryServer", "EMSService_SecondaryServer","EMSService_DeviceLoginInterface", "EMSService_EMSInterface"
$itemindex_EnableCallerID = "EnableCallerID_IsEnabled","EnableCallerID_Module", "EnableCallerID_Port"
$itemindex_EtherGroupTable = 'EtherGroupTable_Group', 'EtherGroupTable_Mode', 'EtherGroupTable_Member1', 'EtherGroupTable_Member2'
$itemindex_GwRoutingPolicy = 'GwRoutingPolicy_Name','GwRoutingPolicy_LCREnable','GwRoutingPolicy_LCRAverageCallLength','GwRoutingPolicy_LCRDefaultCost','GwRoutingPolicy_LdapServersGroupName'
$itemindex_GWCDRFormat = "GWCDRFormat_CDRType","GWCDRFormat_FieldType", "GWCDRFormat_Title","GWCDRFormat_RadiusType", "GWCDRFormat_RadiusID"
$itemindex_HTTPInterface = 'HTTPInterface_NetworkInterface', 'HTTPInterface_Protocol', 'HTTPInterface_Port', 'HTTPInterface_TLSContext', 'HTTPInterface_VerifyCert'
$itemindex_HTTPProxyHost = 'HTTPProxyHost_HTTPProxyServiceId', 'HTTPProxyHost_HTTPProxyHostId', 'HTTPProxyHost_NetworkInterface', 'HTTPProxyHost_IpAddress', 'HTTPProxyHost_Protocol', 'HTTPProxyHost_Port', 'HTTPProxyHost_TLSContext', 'HTTPProxyHost_VerifyCert'
$itemindex_HTTPProxyService = 'HTTPProxyService_ServiceName', 'HTTPProxyService_ListeningInterface', 'HTTPProxyService_URLPrefix', 'HTTPProxyService_KeepAliveMode'
$itemindex_HTTPRemoteHosts = 'HTTPRemoteHosts_HTTPRemoteServiceIndex', 'HTTPRemoteHosts_RemoteHostIndex', 'HTTPRemoteHosts_Name', 'HTTPRemoteHosts_Address', 'HTTPRemoteHosts_Port', 'HTTPRemoteHosts_Interface', 'HTTPRemoteHosts_HTTPTransportType', 'HTTPRemoteHosts_HostStatus'
$itemindex_HTTPRemoteServices = 'HTTPRemoteServices_Name', 'HTTPRemoteServices_Path', 'HTTPRemoteServices_HTTPType', 'HTTPRemoteServices_Policy', 'HTTPRemoteServices_LoginNeeded', 'HTTPRemoteServices_PersistentConnection', 'HTTPRemoteServices_NumOfSockets', 'HTTPRemoteServices_AuthUserName', 'HTTPRemoteServices_AuthPassword', 'HTTPRemoteServices_TLSContext', 'HTTPRemoteServices_VerifyCertificate', 'HTTPRemoteServices_TimeOut', 'HTTPRemoteServices_KeepAliveTimeOut', 'HTTPRemoteServices_ServiceStatus'
$itemindex_IDSMatch = 'IDSMatch_SIPInterface', 'IDSMatch_ProxySet', 'IDSMatch_Subnet', 'IDSMatch_Policy'
$itemindex_IDSPolicy = 'IDSPolicy_Name', 'IDSPolicy_Description'
$itemindex_IDSRule = 'IDSRule_Policy', 'IDSRule_RuleID', 'IDSRule_Reason', 'IDSRule_ThresholdScope', 'IDSRule_ThresholdWindow', 'IDSRule_MinorAlarmThreshold', 'IDSRule_MajorAlarmThreshold', 'IDSRule_CriticalAlarmThreshold', 'IDSRule_DenyThreshold', 'IDSRule_DenyPeriod'
$itemindex_InterfaceTable = "InterfaceTable_ApplicationTypes","InterfaceTable_InterfaceMode","InterfaceTable_IPAddress", "InterfaceTable_PrefixLength","InterfaceTable_Gateway", "InterfaceTable_VlanID","InterfaceTable_InterfaceName","InterfaceTable_PrimaryDNSServerIPAddress","InterfaceTable_SecondaryDNSServerIPAddress","InterfaceTable_UnderlyingDevice"
$itemindex_IP2IPRouting = 'IP2IPRouting_RouteName', 'IP2IPRouting_RoutingPolicyName', 'IP2IPRouting_SrcIPGroupName', 'IP2IPRouting_SrcUsernamePrefix', 'IP2IPRouting_SrcHost', 'IP2IPRouting_DestUsernamePrefix', 'IP2IPRouting_DestHost', 'IP2IPRouting_RequestType', 'IP2IPRouting_MessageConditionName', 'IP2IPRouting_ReRouteIPGroupName', 'IP2IPRouting_Trigger', 'IP2IPRouting_CallSetupRulesSetId', 'IP2IPRouting_DestType', 'IP2IPRouting_DestIPGroupName', 'IP2IPRouting_DestSIPInterfaceName', 'IP2IPRouting_DestAddress', 'IP2IPRouting_DestPort', 'IP2IPRouting_DestTransportType', 'IP2IPRouting_AltRouteOptions', 'IP2IPRouting_GroupPolicy', 'IP2IPRouting_CostGroup', 'IP2IPRouting_DestTags', 'IP2IPRouting_SrcTags', 'IP2IPRouting_IPGroupSetName', 'IP2IPRouting_RoutingTagName', 'IP2IPRouting_InternalAction'
$itemindex_IPGroup = 'IPGroup_Type', 'IPGroup_Name', 'IPGroup_ProxySetName', 'IPGroup_SIPGroupName', 'IPGroup_ContactUser', 'IPGroup_SipReRoutingMode', 'IPGroup_AlwaysUseRouteTable', 'IPGroup_SRDName', 'IPGroup_MediaRealm', 'IPGroup_ClassifyByProxySet', 'IPGroup_ProfileName', 'IPGroup_MaxNumOfRegUsers', 'IPGroup_InboundManSet', 'IPGroup_OutboundManSet', 'IPGroup_RegistrationMode', 'IPGroup_AuthenticationMode', 'IPGroup_MethodList', 'IPGroup_EnableSBCClientForking', 'IPGroup_SourceUriInput', 'IPGroup_DestUriInput', 'IPGroup_ContactName', 'IPGroup_Username', 'IPGroup_Password', 'IPGroup_UUIFormat', 'IPGroup_QOEProfile', 'IPGroup_BWProfile', 'IPGroup_AlwaysUseSourceAddr', 'IPGroup_MsgManUserDef1', 'IPGroup_MsgManUserDef2', 'IPGroup_SIPConnect', 'IPGroup_SBCPSAPMode', 'IPGroup_DTLSContext', 'IPGroup_CreatedByRoutingServer', 'IPGroup_UsedByRoutingServer', 'IPGroup_SBCOperationMode', 'IPGroup_SBCRouteUsingRequestURIPort', 'IPGroup_SBCKeepOriginalCallID', 'IPGroup_TopologyLocation', 'IPGroup_SBCDialPlanName', 'IPGroup_CallSetupRulesSetId', 'IPGroup_Tags', 'IPGroup_SBCUserStickiness', 'IPGroup_UserUDPPortAssignment'
$itemindex_IPGroupSet = 'IPGroupSet_Name', 'IPGroupSet_Policy', 'IPGroupSet_Tags'
$itemindex_IPGroupSetMember = "IPGroupSetMember_IPGroupSetId","IPGroupSetMember_IPGroupSetMemberIndex","IPGroupSetMember_IPGroupName","IPGroupSetMember_Weight"
$itemindex_IPInboundManipulation = 'IPInboundManipulation_ManipulationName', 'IPInboundManipulation_IsAdditionalManipulation', 'IPInboundManipulation_ManipulatedURI', 'IPInboundManipulation_ManipulationPurpose', 'IPInboundManipulation_SrcIPGroupName', 'IPInboundManipulation_SrcUsernamePrefix', 'IPInboundManipulation_SrcHost', 'IPInboundManipulation_DestUsernamePrefix', 'IPInboundManipulation_DestHost', 'IPInboundManipulation_RequestType', 'IPInboundManipulation_RemoveFromLeft', 'IPInboundManipulation_RemoveFromRight', 'IPInboundManipulation_LeaveFromRight', 'IPInboundManipulation_Prefix2Add', 'IPInboundManipulation_Suffix2Add'
$itemindex_IPOutboundManipulation = 'IPOutboundManipulation_ManipulationName', 'IPOutboundManipulation_RoutingPolicyName', 'IPOutboundManipulation_IsAdditionalManipulation', 'IPOutboundManipulation_SrcIPGroupName', 'IPOutboundManipulation_DestIPGroupName', 'IPOutboundManipulation_SrcUsernamePrefix', 'IPOutboundManipulation_SrcHost', 'IPOutboundManipulation_DestUsernamePrefix', 'IPOutboundManipulation_DestHost', 'IPOutboundManipulation_CallingNamePrefix', 'IPOutboundManipulation_MessageConditionName', 'IPOutboundManipulation_RequestType', 'IPOutboundManipulation_ReRouteIPGroupName', 'IPOutboundManipulation_Trigger', 'IPOutboundManipulation_ManipulatedURI', 'IPOutboundManipulation_RemoveFromLeft', 'IPOutboundManipulation_RemoveFromRight', 'IPOutboundManipulation_LeaveFromRight', 'IPOutboundManipulation_Prefix2Add', 'IPOutboundManipulation_Suffix2Add', 'IPOutboundManipulation_PrivacyRestrictionMode', 'IPOutboundManipulation_DestTags', 'IPOutboundManipulation_SrcTags'
$itemindex_IpProfile = 'IpProfile_ProfileName', 'IpProfile_IpPreference', 'IpProfile_CodersGroupName', 'IpProfile_IsFaxUsed', 'IpProfile_JitterBufMinDelay', 'IpProfile_JitterBufOptFactor', 'IpProfile_IPDiffServ', 'IpProfile_SigIPDiffServ', 'IpProfile_SCE', 'IpProfile_RTPRedundancyDepth', 'IpProfile_CNGmode', 'IpProfile_VxxTransportType', 'IpProfile_NSEMode', 'IpProfile_IsDTMFUsed', 'IpProfile_PlayRBTone2IP', 'IpProfile_EnableEarlyMedia', 'IpProfile_ProgressIndicator2IP', 'IpProfile_EnableEchoCanceller', 'IpProfile_CopyDest2RedirectNumber', 'IpProfile_MediaSecurityBehaviour', 'IpProfile_CallLimit', 'IpProfile_DisconnectOnBrokenConnection', 'IpProfile_FirstTxDtmfOption', 'IpProfile_SecondTxDtmfOption', 'IpProfile_RxDTMFOption', 'IpProfile_EnableHold', 'IpProfile_InputGain', 'IpProfile_VoiceVolume', 'IpProfile_AddIEInSetup', 'IpProfile_SBCExtensionCodersGroupName', 'IpProfile_MediaIPVersionPreference', 'IpProfile_TranscodingMode', 'IpProfile_SBCAllowedMediaTypes', 'IpProfile_SBCAllowedAudioCodersGroupName', 'IpProfile_SBCAllowedVideoCodersGroupName', 'IpProfile_SBCAllowedCodersMode', 'IpProfile_SBCMediaSecurityBehaviour', 'IpProfile_SBCRFC2833Behavior', 'IpProfile_SBCAlternativeDTMFMethod', 'IpProfile_SBCSendMultipleDTMFMethods', 'IpProfile_SBCAssertIdentity', 'IpProfile_AMDSensitivityParameterSuit', 'IpProfile_AMDSensitivityLevel', 'IpProfile_AMDMaxGreetingTime', 'IpProfile_AMDMaxPostSilenceGreetingTime', 'IpProfile_SBCDiversionMode', 'IpProfile_SBCHistoryInfoMode', 'IpProfile_EnableQSIGTunneling', 'IpProfile_SBCFaxCodersGroupName', 'IpProfile_SBCFaxBehavior', 'IpProfile_SBCFaxOfferMode', 'IpProfile_SBCFaxAnswerMode', 'IpProfile_SbcPrackMode', 'IpProfile_SBCSessionExpiresMode', 'IpProfile_SBCRemoteUpdateSupport', 'IpProfile_SBCRemoteReinviteSupport', 'IpProfile_SBCRemoteDelayedOfferSupport', 'IpProfile_SBCRemoteReferBehavior', 'IpProfile_SBCRemote3xxBehavior', 'IpProfile_SBCRemoteMultiple18xSupport', 'IpProfile_SBCRemoteEarlyMediaResponseType', 'IpProfile_SBCRemoteEarlyMediaSupport', 'IpProfile_EnableSymmetricMKI', 'IpProfile_MKISize', 'IpProfile_SBCEnforceMKISize', 'IpProfile_SBCRemoteEarlyMediaRTP', 'IpProfile_SBCRemoteSupportsRFC3960', 'IpProfile_SBCRemoteCanPlayRingback', 'IpProfile_EnableEarly183', 'IpProfile_EarlyAnswerTimeout', 'IpProfile_SBC2833DTMFPayloadType', 'IpProfile_SBCUserRegistrationTime', 'IpProfile_ResetSRTPStateUponRekey', 'IpProfile_AmdMode', 'IpProfile_SBCReliableHeldToneSource', 'IpProfile_GenerateSRTPKeys', 'IpProfile_SBCPlayHeldTone', 'IpProfile_SBCRemoteHoldFormat', 'IpProfile_SBCRemoteReplacesBehavior', 'IpProfile_SBCSDPPtimeAnswer', 'IpProfile_SBCPreferredPTime', 'IpProfile_SBCUseSilenceSupp', 'IpProfile_SBCRTPRedundancyBehavior', 'IpProfile_SBCPlayRBTToTransferee', 'IpProfile_SBCRTCPMode', 'IpProfile_SBCJitterCompensation', 'IpProfile_SBCRemoteRenegotiateOnFaxDetection', 'IpProfile_JitterBufMaxDelay', 'IpProfile_SBCUserBehindUdpNATRegistrationTime', 'IpProfile_SBCUserBehindTcpNATRegistrationTime', 'IpProfile_SBCSDPHandleRTCPAttribute', 'IpProfile_SBCRemoveCryptoLifetimeInSDP', 'IpProfile_SBCIceMode', 'IpProfile_SBCRTCPMux', 'IpProfile_SBCMediaSecurityMethod', 'IpProfile_SBCHandleXDetect', 'IpProfile_SBCRTCPFeedback', 'IpProfile_SBCRemoteRepresentationMode', 'IpProfile_SBCKeepVIAHeaders', 'IpProfile_SBCKeepRoutingHeaders', 'IpProfile_SBCKeepUserAgentHeader', 'IpProfile_SBCRemoteMultipleEarlyDialogs', 'IpProfile_SBCRemoteMultipleAnswersMode', 'IpProfile_SBCDirectMediaTag', 'IpProfile_SBCAdaptRFC2833BWToVoiceCoderBW', 'IpProfile_CreatedByRoutingServer', 'IpProfile_SBCFaxReroutingMode', 'IpProfile_SBCMaxCallDuration', 'IpProfile_SBCGenerateRTP', 'IpProfile_SBCISUPBodyHandling', 'IpProfile_SBCISUPVariant', 'IpProfile_SBCVoiceQualityEnhancement', 'IpProfile_SBCMaxOpusBW', 'IpProfile_LocalRingbackTone', 'IpProfile_LocalHeldTone'                     
$itemindex_ISDNSuppServ = "ISDNSuppServ_PhoneNumber","ISDNSuppServ_LocalPhoneNumber", "ISDNSuppServ_Module","ISDNSuppServ_Port", "ISDNSuppServ_UserId","ISDNSuppServ_UserPassword", "ISDNSuppServ_CallerID","ISDNSuppServ_IsPresentationRestricted","ISDNSuppServ_IsCallerIDEnabled", "ISDNSuppServ_CFB2PhoneNumber","ISDNSuppServ_CFNR2PhoneNumber","ISDNSuppServ_CFU2PhoneNumber", "ISDNSuppServ_NoReplyTime"
$itemindex_LdapConfiguration = 'LdapConfiguration_Group', 'LdapConfiguration_LdapConfServerIp', 'LdapConfiguration_LdapConfServerPort', 'LdapConfiguration_LdapConfServerMaxRespondTime', 'LdapConfiguration_LdapConfServerDomainName', 'LdapConfiguration_LdapConfPassword', 'LdapConfiguration_LdapConfBindDn', 'LdapConfiguration_Interface', 'LdapConfiguration_MngmAuthAtt', 'LdapConfiguration_useTLS', 'LdapConfiguration_ConnectionStatus','LdapConfiguration_LdapConfInterfaceType','LdapConfiguration_Type','LdapConfiguration_VerifyCertificate'
$itemindex_LDAPServerGroups = 'LdapServerGroups_Name', 'LdapServerGroups_ServerType', 'LdapServerGroups_SearchMethod', 'LdapServerGroups_CacheEntryTimeout', 'LdapServerGroups_CacheEntryRemovalTimeout', 'LdapServerGroups_SearchDnsMethod'
$itemindex_LoggingFilters = 'LoggingFilters_FilterType', 'LoggingFilters_Value', 'LoggingFilters_LogDestination', 'LoggingFilters_CaptureType', 'LoggingFilters_Mode'
$itemindex_MaliciousSignatureDB = 'MaliciousSignatureDB_Name', 'MaliciousSignatureDB_Pattern'
$itemindex_mediant = 'Mediant_Board','Mediant_BoardType','Mediant_KeyFeatures','Mediant_SerialNumber','Mediant_SoftwareVersion','Mediant_DSPSoftwareVersion'
$itemindex_MediaRealmExtension = "MediaRealmExtension_MediaRealmIndex","MediaRealmExtension_ExtensionIndex", "MediaRealmExtension_IPv4IF","MediaRealmExtension_IPv6IF", "MediaRealmExtension_PortRangeStart","MediaRealmExtension_PortRangeEnd","MediaRealmExtension_MediaSessionLeg"
$itemindex_MediaRealmExtenstion = 'MediaRealmExtension_MediaRealmIndex','MediaRealmExtension_ExtensionIndex','MediaRealmExtension_IPv4IF','MediaRealmExtension_IPv6IF','MediaRealmExtension_PortRangeStart','MediaRealmExtension_PortRangeEnd','MediaRealmExtension_MediaSessionLeg'
$itemindex_MEGACOParams = 'EP_Num_0','EP_Num_1','EP_Num_2','EP_Num_3','EP_Num_4'
$itemindex_MessageManipulations = 'MessageManipulations_ManipulationName','MessageManipulations_ManSetID', 'MessageManipulations_MessageType', 'MessageManipulations_Condition', 'MessageManipulations_ActionSubject', 'MessageManipulations_ActionType', 'MessageManipulations_ActionValue', 'MessageManipulations_RowRole'
$itemindex_MessagePolicy = 'MessagePolicy_MaxMessageLength', 'MessagePolicy_MaxHeaderLength', 'MessagePolicy_MaxBodyLength', 'MessagePolicy_MaxNumHeaders', 'MessagePolicy_MaxNumBodies', 'MessagePolicy_SendRejection', 'MessagePolicy_MethodList', 'MessagePolicy_MethodListType', 'MessagePolicy_BodyList', 'MessagePolicy_BodyListType', 'MessagePolicy_UseMaliciousSignatureDB','MessagePolicy_Name'
$itemindex_MgmntLDAPGroups = "MgmntLDAPGroups_LdapConfigurationIndex","MgmntLDAPGroups_GroupIndex","MgmntLDAPGroups_Level", "MgmntLDAPGroups_Group"
$itemindex_NATTranslation = 'NATTranslation_SrcIPInterfaceName', 'NATTranslation_TargetIPAddress', 'NATTranslation_SourceStartPort', 'NATTranslation_SourceEndPort', 'NATTranslation_TargetStartPort', 'NATTranslation_TargetEndPort'
$itemindex_NumberMapIp2Tel = "NumberMapIp2Tel_ManipulationName","NumberMapIp2Tel_DestinationPrefix","NumberMapIp2Tel_SourcePrefix","NumberMapIp2Tel_SourceAddress","NumberMapIp2Tel_NumberType", "NumberMapIp2Tel_NumberPlan","NumberMapIp2Tel_RemoveFromLeft","NumberMapIp2Tel_RemoveFromRight","NumberMapIp2Tel_LeaveFromRight","NumberMapIp2Tel_Prefix2Add", "NumberMapIp2Tel_Suffix2Add","NumberMapIp2Tel_IsPresentationRestricted"
$itemindex_NumberMapTel2Ip = "NumberMapTel2Ip_ManipulationName","NumberMapTel2Ip_DestinationPrefix","NumberMapTel2Ip_SourcePrefix","NumberMapTel2Ip_SourceAddress","NumberMapTel2Ip_NumberType", "NumberMapTel2Ip_NumberPlan","NumberMapTel2Ip_RemoveFromLeft","NumberMapTel2Ip_RemoveFromRight","NumberMapTel2Ip_LeaveFromRight","NumberMapTel2Ip_Prefix2Add", "NumberMapTel2Ip_Suffix2Add","NumberMapTel2Ip_IsPresentationRestricted","NumberMapTel2Ip_SrcTrunkGroupID", "NumberMapTel2Ip_SrcIPGroupID"
$itemindex_PerformanceProfile = 'PerformanceProfile_Entity', 'PerformanceProfile_IPGroupName', 'PerformanceProfile_SRDName', 'PerformanceProfile_PMType', 'PerformanceProfile_MinorThreshold', 'PerformanceProfile_MajorThreshold', 'PerformanceProfile_Hysteresis', 'PerformanceProfile_MinimumSample', 'PerformanceProfile_WindowSize'
$itemindex_PhysicalPortsTable = 'PhysicalPortsTable_Port', 'PhysicalPortsTable_Mode', 'PhysicalPortsTable_SpeedDuplex', 'PhysicalPortsTable_PortDescription', 'PhysicalPortsTable_GroupMember', 'PhysicalPortsTable_GroupStatus'
$itemindex_PreParsingManipulationRules = "PreParsingManipulationRules_PreParsingManSetName","PreParsingManipulationRules_RuleIndex","PreParsingManipulationRules_MessageType", "PreParsingManipulationRules_Pattern","PreParsingManipulationRules_ReplaceWith"
$itemindex_PreParsingManipulationSets = "PreParsingManipulationSets_Name"
$itemindex_ProxyIp = 'ProxyIp_ProxySetId', 'ProxyIp_ProxyIpIndex', 'ProxyIp_IpAddress', 'ProxyIp_TransportType'
$itemindex_ProxySet = 'ProxySet_ProxyName', 'ProxySet_EnableProxyKeepAlive', 'ProxySet_ProxyKeepAliveTime', 'ProxySet_ProxyLoadBalancingMethod', 'ProxySet_IsProxyHotSwap', 'ProxySet_SRDName', 'ProxySet_ClassificationInput', 'ProxySet_TLSContextName', 'ProxySet_ProxyRedundancyMode', 'ProxySet_DNSResolveMethod', 'ProxySet_KeepAliveFailureResp', 'ProxySet_GWIPv4SIPInterfaceName', 'ProxySet_SBCIPv4SIPInterfaceName', 'ProxySet_GWIPv6SIPInterfaceName', 'ProxySet_SBCIPv6SIPInterfaceName', 'ProxySet_MinActiveServersLB', 'ProxySet_SuccessDetectionRetries', 'ProxySet_SuccessDetectionInterval', 'ProxySet_FailureDetectionRetransmissions'
$itemindex_QOEProfile = 'QOEProfile_Name', 'QOEProfile_SensitivityLevel'
$itemindex_QOEColorRules = "QOEColorRules_QoeProfile", "QOEColorRules_ColorRuleIndex", "QOEColorRules_monitoredParam", "QOEColorRules_direction", "QOEColorRules_profile", "QOEColorRules_MinorThreshold", "QOEColorRules_MinorHysteresis", "QOEColorRules_MajorThreshold", "QOEColorRules_MajorHysteresis"
$itemindex_QualityOfServiceRules = 'QualityOfServiceRules_IPGroupName', 'QualityOfServiceRules_RuleMetric', 'QualityOfServiceRules_Severity', 'QualityOfServiceRules_RuleAction', 'QualityOfServiceRules_CallsRejectDuration', 'QualityOfServiceRules_AltIPProfileName'
$itemindex_RadiusServers = 'RadiusServers_ServerGroup', 'RadiusServers_IPAddress', 'RadiusServers_AuthenticationPort', 'RadiusServers_AccountingPort', 'RadiusServers_SharedSecret'
$itemindex_RedirectNumberMapIp2Tel = "RedirectNumberMapIp2Tel_ManipulationName","RedirectNumberMapIp2Tel_DestinationPrefix","RedirectNumberMapIp2Tel_RedirectPrefix","RedirectNumberMapIp2Tel_SourceAddress","RedirectNumberMapIp2Tel_SrcHost","RedirectNumberMapIp2Tel_DestHost","RedirectNumberMapIp2Tel_NumberType","RedirectNumberMapIp2Tel_NumberPlan","RedirectNumberMapIp2Tel_RemoveFromLeft","RedirectNumberMapIp2Tel_RemoveFromRight","RedirectNumberMapIp2Tel_LeaveFromRight","RedirectNumberMapIp2Tel_Prefix2Add","RedirectNumberMapIp2Tel_Suffix2Add","RedirectNumberMapIp2Tel_IsPresentationRestricted"
$itemindex_RedirectNumberMapTel2Ip = "RedirectNumberMapTel2Ip_ManipulationName","RedirectNumberMapTel2Ip_DestinationPrefix","RedirectNumberMapTel2Ip_RedirectPrefix","RedirectNumberMapTel2Ip_NumberType","RedirectNumberMapTel2Ip_NumberPlan","RedirectNumberMapTel2Ip_RemoveFromLeft","RedirectNumberMapTel2Ip_RemoveFromRight","RedirectNumberMapTel2Ip_LeaveFromRight","RedirectNumberMapTel2Ip_Prefix2Add","RedirectNumberMapTel2Ip_Suffix2Add","RedirectNumberMapTel2Ip_IsPresentationRestricted","RedirectNumberMapTel2Ip_SrcTrunkGroupID"
$itemindex_RemoteMediaSubnet = "RemoteMediaSubnet_Realm","RemoteMediaSubnet_RemoteMediaSubnetIndex","RemoteMediaSubnet_RemoteMediaSubnetName","RemoteMediaSubnet_PrefixLength","RemoteMediaSubnet_AddressFamily","RemoteMediaSubnet_DstIPAddress","RemoteMediaSubnet_QOEProfileName","RemoteMediaSubnet_BWProfileName"
$itemindex_ResourcePriorityNetworkDomains = "ResourcePriorityNetworkDomains_Name", "ResourcePriorityNetworkDomains_EnableIp2TelInterworking","ResourcePriorityNetworkDomains_Ip2TelInterworking"
$itemindex_SBCAdmissionControl = 'SBCAdmissionControl_AdmissionControlName', 'SBCAdmissionControl_LimitType', 'SBCAdmissionControl_IPGroupName', 'SBCAdmissionControl_SRDName', 'SBCAdmissionControl_SIPInterfaceName', 'SBCAdmissionControl_RequestType', 'SBCAdmissionControl_RequestDirection', 'SBCAdmissionControl_Limit', 'SBCAdmissionControl_LimitPerUser', 'SBCAdmissionControl_Rate', 'SBCAdmissionControl_MaxBurst', 'SBCAdmissionControl_Reservation'
$itemindex_SBCAlternativeRoutingReasons = 'SBCAlternativeRoutingReasons_ReleaseCause'
$itemindex_SBCCDRFormat = 'SBCCDRFormat_CDRType', 'SBCCDRFormat_FieldType', 'SBCCDRFormat_Title', 'SBCCDRFormat_RadiusType', 'SBCCDRFormat_RadiusID'
$itemindex_SBCRoutingPolicy = 'SBCRoutingPolicy_Name', 'SBCRoutingPolicy_LCREnable', 'SBCRoutingPolicy_LCRAverageCallLength', 'SBCRoutingPolicy_LCRDefaultCost', 'SBCRoutingPolicy_LdapServerGroupName'
$itemindex_SIPInterface = 'SIPInterface_InterfaceName', 'SIPInterface_NetworkInterface', 'SIPInterface_ApplicationType', 'SIPInterface_UDPPort', 'SIPInterface_TCPPort', 'SIPInterface_TLSPort', 'SIPInterface_AdditionalUDPPorts', 'SIPInterface_SRDName', 'SIPInterface_MessagePolicyName', 'SIPInterface_TLSContext', 'SIPInterface_TLSMutualAuthentication', 'SIPInterface_TCPKeepaliveEnable', 'SIPInterface_ClassificationFailureResponseType', 'SIPInterface_PreClassificationManSet', 'SIPInterface_EncapsulatingProtocol', 'SIPInterface_MediaRealm', 'SIPInterface_SBCDirectMedia', 'SIPInterface_BlockUnRegUsers', 'SIPInterface_MaxNumOfRegUsers', 'SIPInterface_EnableUnAuthenticatedRegistrations', 'SIPInterface_UsedByRoutingServer', 'SIPInterface_TopologyLocation', 'SIPInterface_PreParsingManSetName'
$itemindex_SipParams = 'TLSRehadshaleInterval','VerifyServerCertificate','PeerHostnameVerificationMode','SIPSRequireClientCertificate','MEDIACHANNELS','RegistrationTime','RegistrationRetryTime','UseGatewayNameForOptions','SipTransportType','REGISTRATIONTIMEDIVIDER','EnableSips','USETELURIFORASSERTEDID','EnableREASONHEADER','EnableTCPCONNECTIONREUSE','SIPTCPTIMEOUT','SIPSDPSESSIONOWNER','ReliableConnectionPersistentMode','EnableSINGLEDSPTRANSCODING','MSLDAPPBXNUMATTRIBUTENAME','MSLDAPOCSNUMATTRIBUTENAME','MSLDAPMOBILENUMATTRIBUTENAME','MSLDAPPRIVATENUMATTRIBUTENAME','MSLDAPDISPLAYNAMEATTRIBUTENAME','MSLDAPPRIMARYKEY','MSLDAPSECONDARYKEY','UseProxyIPasHost','EnableSIPREC','EnableIDS','DisplayDefaultSIPPort','HTTPProxyApplication','HTTPPROXYSYSLOGDEBUGLEVEL','IDSAlarmClearPeriod','TLSRemoteSubjectName','DECLAREAUDCCLIENT','SIPT1RTX','SIPT2RTX','SipGatewayName','PROXYREDUNDANCYMODE','SIPMAXRTX','DisconnectOnBrokenConnection','NoRTPDetectionTimeout','GWREGISTRATIONNAME','SBCMaxCallDuration','COMFORTNOISENEGOTIATION','RtcpXrReportMode','PROXYIPLISTREFRESHTIME','EnableGRUU','DNSQUERYType','PROXYDNSQUERYType','HOTSWAPRTX','REGISTRATIONTIMETHRESHOLD','REGISTERONINVITEFAILURE','SIPCHALLENGECACHINGMODE','RETRYAFTERTIME','FAXCNGMODE','TLSREHANDSHAKEINTERVAL','REREGISTERONCONNECTIONFAILURE','ALLOWUNCLASSIFIEDCALLS','TRANSCODINGMODE','SBCDirectMedia','FAKERETRYAFTER','SBC3XXBEHAVIOR','SBCREFERBEHAVIOR','SBCKEEPCONTACTUSERINREGISTER','SBCMAXFORWARDSLIMIT','SBCALERTTIMEOUT','EMPTYAUTHORIZATIONHEADER','SBCGRUUMODE','SBCMINSE','SBCPROXYREGISTRATIONTIME','SBCUSERREGISTRATIONTIME','SBCSURVIVABILITYREGISTRATIONTIME','SBCPREFERENCESMODE','SBCEXTENSIONSPROVISIONINGMODE','AUTHNONCEDURATION','AUTHQOP','SBCEnableBYEAUTHENTICATION','E911CALLBACKTIMEOUT','ENUMSERVICE','SBCFORKINGHANDLINGMODE','SBCSESSIONEXPIRES','SBCENFORCEMEDIAORDER','ENFORCEMEDIAORDER','SBCSHAREDLINEREGMODE','SBCDIVERSIONURIType','SIPNATDETECTION','EnableNonInvite408Reply','SendRejectOnOverload','PUBLICATIONIPGROUPID','ENERGYDETECTORCMD','ANSWERDETECTORCMD','SBCSendTryingToSubscribe','SBCUSERREGISTRATIONGRACETIME','SBCRtcpXrReportMode','SIPRECSERVERDESTUSERNAME','MAXGENERATEDREGISTERSRATE','SBCDBROUTINGSEARCHMODE','SBCPREEMPTIONMODE','SBCEMERGENCYCONDITION','SBCEMERGENCYRTPDIFFSERV','SBCEMERGENCYSIGNALINGDIFFSERV','WEBSOCKETPROTOCOLKEEPALIVEPERIOD','GwDebugLevel'
$itemindex_SIPRecRouting = 'SIPRecRouting_RecordedIPGroupName', 'SIPRecRouting_RecordedSourcePrefix', 'SIPRecRouting_RecordedDestinationPrefix', 'SIPRecRouting_PeerIPGroupName', 'SIPRecRouting_PeerTrunkGroupID', 'SIPRecRouting_Caller', 'SIPRecRouting_SRSIPGroupName', 'SIPRecRouting_SRSRedundantIPGroupName'
$itemindex_SNMPParams = 'DisableSNMP','SNMPManagerTableIP_0','SNMPManagerTableIP_1','SNMPManagerTableIP_2','SNMPManagerTableIP_3','SNMPManagerTableIP_4','SNMPTRUSTEDMGR','SNMPREADONLYCOMMUNITYSTRING_0','SNMPREADONLYCOMMUNITYSTRING_1','SNMPREADONLYCOMMUNITYSTRING_2','SNMPREADONLYCOMMUNITYSTRING_3','SNMPREADONLYCOMMUNITYSTRING_4','SNMPREADWRITECOMMUNITYSTRING_0','SNMPREADWRITECOMMUNITYSTRING_1','SNMPREADWRITECOMMUNITYSTRING_2','SNMPREADWRITECOMMUNITYSTRING_3','SNMPREADWRITECOMMUNITYSTRING_4','SNMPTRAPCOMMUNITYSTRING','SNMPTrapManagerHostName','SNMPPort','SendKeepAliveTrap','KeepAliveTrapPort','PM_EnableThresholdAlarms','SNMPSysOid','SNMPTrapEnterpriseOid','AlarmHistoryTableMaxSize','ActiveAlarmTableMaxSize','NoAlarmForDisabledPort','SNMPManagerTrapPort','SNMPManagerIsUsed','SNMPManagerTrapSendingEnable','ChassisPhysicalAlias','ChassisPhysicalAssetID','ifAlias','acUserInputAlarmDescription','acUserInputAlarmSeverity','SNMPEngineIDString'
$itemindex_SNMPUsers =  'SNMPUsers_Username', 'SNMPUsers_AuthProtocol','SNMPUsers_PrivProtocol','SNMPUsers_AuthKey','SNMPUsers_PrivKey', 'SNMPUsers_Group'
$itemindex_SourceNumberMapIp2Tel = "SourceNumberMapIp2Tel_ManipulationName","SourceNumberMapIp2Tel_DestinationPrefix","SourceNumberMapIp2Tel_SourcePrefix","SourceNumberMapIp2Tel_SourceAddress","SourceNumberMapIp2Tel_NumberType","SourceNumberMapIp2Tel_NumberPlan","SourceNumberMapIp2Tel_RemoveFromLeft","SourceNumberMapIp2Tel_RemoveFromRight","SourceNumberMapIp2Tel_LeaveFromRight","SourceNumberMapIp2Tel_Prefix2Add","SourceNumberMapIp2Tel_Suffix2Add","SourceNumberMapIp2Tel_IsPresentationRestricted"
$itemindex_SourceNumberMapTel2Ip = "SourceNumberMapTel2Ip_ManipulationName","SourceNumberMapTel2Ip_DestinationPrefix","SourceNumberMapTel2Ip_SourcePrefix","SourceNumberMapTel2Ip_NumberType","SourceNumberMapTel2Ip_NumberPlan","SourceNumberMapTel2Ip_RemoveFromLeft","SourceNumberMapTel2Ip_RemoveFromRight","SourceNumberMapTel2Ip_LeaveFromRight","SourceNumberMapTel2Ip_Prefix2Add","SourceNumberMapTel2Ip_Suffix2Add","SourceNumberMapTel2Ip_IsPresentationRestricted","SourceNumberMapTel2Ip_SrcTrunkGroupID"
$itemindex_SRD = 'SRD_Name', 'SRD_IntraSRDMediaAnchoring', 'SRD_BlockUnRegUsers', 'SRD_MaxNumOfRegUsers', 'SRD_EnableUnAuthenticatedRegistrations', 'SRD_SharingPolicy', 'SRD_UsedByRoutingServer', 'SRD_SBCOperationMode', 'SRD_SBCRoutingPolicyName','SRD_SBCDialPlanName'
$itemindex_SRV2IP = 'SRV2IP_InternalDomain', 'SRV2IP_TransportType', 'SRV2IP_Dns1', 'SRV2IP_Priority1', 'SRV2IP_Weight1', 'SRV2IP_Port1', 'SRV2IP_Dns2', 'SRV2IP_Priority2', 'SRV2IP_Weight2', 'SRV2IP_Port2', 'SRV2IP_Dns3', 'SRV2IP_Priority3', 'SRV2IP_Weight3', 'SRV2IP_Port3'
$itemindex_StaticRouteTable = 'StaticRouteTable_DeviceName', 'StaticRouteTable_Destination', 'StaticRouteTable_PrefixLength', 'StaticRouteTable_Gateway', 'StaticRouteTable_Description'
$itemindex_SystemParams = 'RequireStrictCert','TLSExpiryCheckStart','TLSExpiryCheckPeriod','TelnetServerEnable','TelnetServerPort','TelnetServerIdleDisconnect','TelnetMaxSessions','DefaultTerminalWindowHeight','SSHServerEnable','SSHServerPort','SSHRequirePublicKey','SSHMaxPayloadSize','SSHMaxBinaryPacketSize','SSHMaxSessions','SSHMaxLoginAttempts','SSHEnableLastLoginMessage','EnableSyslog','SyslogServerIP','SyslogServerPort','CDRReportLevel','MediaCDRReportLevel','CDRLocalMaxFileSize','CDRLocalMaxNumOfFiles','CDRLocalInterval','GwDebugLevel','EnableNonCallCdr','SyslogOptimization','MaxBundleSyslogLength','SyslogCpuProtection','DebugLevelHighThreshold','SyslogFacility','CallDurationUnits','CDRSyslogSeqNum','SendAcSessionIDHeader','EnableParametersMonitoring','FacilityTrace','EnableCoreDump','CallFlowReportMode','HARemoteAddress','HARevertiveEnabled','HAPriority','HAPingEnabled','HAPingDestination','HAPingTimeout','HAPingRetries','DefaultAccessLevel','EnableActivityTrap','NTPServerIP','NTPSecondaryServerIP','NTPUpdateInterval','ntpAuthMd5Key','NTPServerUTCOffset','DayLightSavingTimeEnable','DayLightSavingTimeStart','DayLightSavingTimeEnd','DayLightSavingTimeOffset','TR069ACSPASSWORD','TR069CONNECTIONREQUESTPASSWORD','CLIPrivPass','SSHAdminKey','CDRSyslogServerIP','TimeZoneFormat','ActivityListToLog','DebugRecordingDestIP','DebugRecordingDestPort','CoreDumpDestIP','HAUnitIdName','HAPingSourceIfName','LDAPSERVICEENABLE'
$itemindex_TargetOfChannel = "TargetOfChannel_Destination","TargetOfChannel_Type", "TargetOfChannel_Module","TargetOfChannel_Port","TargetOfChannel_HotLineToneDuration"
$itemindex_TelProfile = "TelProfile_ProfileName","TelProfile_TelPreference", "TelProfile_CodersGroupName","TelProfile_IsFaxUsed", "TelProfile_JitterBufMinDelay","TelProfile_JitterBufOptFactor", "TelProfile_IPDiffServ","TelProfile_SigIPDiffServ", "TelProfile_DtmfVolume", "TelProfile_InputGain","TelProfile_VoiceVolume", "TelProfile_EnableReversePolarity","TelProfile_EnableCurrentDisconnect", "TelProfile_EnableDigitDelivery","TelProfile_EnableEC", "TelProfile_MWIAnalog", "TelProfile_MWIDisplay","TelProfile_FlashHookPeriod", "TelProfile_EnableEarlyMedia","TelProfile_ProgressIndicator2IP", "TelProfile_TimeForReorderTone","TelProfile_EnableDIDWink", "TelProfile_IsTwoStageDial","TelProfile_DisconnectOnBusyTone", "TelProfile_EnableVoiceMailDelay","TelProfile_DialPlanIndex", "TelProfile_Enable911PSAP","TelProfile_SwapTelToIpPhoneNumbers", "TelProfile_EnableAGC","TelProfile_ECNlpMode", "TelProfile_DigitalCutThrough","TelProfile_EnableFXODoubleAnswer", "TelProfile_CallPriorityMode","TelProfile_FXORingTimeout", "TelProfile_JitterBufMaxDelay","TelProfile_PlayBusyTone2Isdn"
$itemindex_Test_Call = 'Test_Call_EndpointURI', 'Test_Call_CalledURI', 'Test_Call_RouteBy', 'Test_Call_IPGroupName', 'Test_Call_DestAddress', 'Test_Call_DestTransportType', 'Test_Call_SIPInterfaceName', 'Test_Call_ApplicationType', 'Test_Call_AutoRegister', 'Test_Call_UserName', 'Test_Call_Password', 'Test_Call_CallParty', 'Test_Call_MaxChannels', 'Test_Call_CallDuration', 'Test_Call_CallsPerSecond', 'Test_Call_TestMode', 'Test_Call_TestDuration', 'Test_Call_Play', 'Test_Call_ScheduleInterval', 'Test_Call_QOEProfile', 'Test_Call_BWProfile'
$itemindex_TLSContexts = 'TLSContexts_Name', 'TLSContexts_TLSVersion', 'TLSContexts_DTLSVersion', 'TLSContexts_ServerCipherString', 'TLSContexts_ClientCipherString', 'TLSContexts_RequireStrictCert', 'TLSContexts_OcspEnable', 'TLSContexts_OcspServerPrimary', 'TLSContexts_OcspServerSecondary', 'TLSContexts_OcspServerPort', 'TLSContexts_OcspDefaultResponse', 'TLSContexts_DHKeySize'
$itemindex_TrunkGroup = "TrunkGroup_TrunkGroupNum","TrunkGroup_FirstTrunkId", "TrunkGroup_FirstBChannel","TrunkGroup_LastBChannel", "TrunkGroup_FirstPhoneNumber","TrunkGroup_ProfileName", "TrunkGroup_LastTrunkId", "TrunkGroup_Module"
$itemindex_TrunkGroupSettings = "TrunkGroupSettings_TrunkGroupId","TrunkGroupSettings_ChannelSelectMode","TrunkGroupSettings_RegistrationMode","TrunkGroupSettings_GatewayName","TrunkGroupSettings_ContactUser","TrunkGroupSettings_ServingIPGroupName","TrunkGroupSettings_MWIInterrogationType","TrunkGroupSettings_TrunkGroupName","TrunkGroupSettings_UsedByRoutingServer"
$itemindex_VoiceEngineParams = 'EnableContinuityTones','L1L1ComplexRxUDPPort','L1L1ComplexTxUDPPort','EnableMediaSecurity','SRTPofferedSuites','RTPAuthenticationDisableTx','RTPEncryptionDisableTx','RTCPEncryptionDisableTx','SRTPTunnelingValidateRTPRxAuthentication','SRTPTunnelingValidateRTCPRxAuthentication','EnableSilenceCompression','EnableEchoCanceller','VoiceVolume','InputGain','BrokenConnectionEventTimeout','DTMFVolume','DTMFTransportType','CallerIDTransportType','CallerIDType','FaxTransportMode','V21ModemTransportType','V22ModemTransportType','V23ModemTransportType','V32ModemTransportType','V34ModemTransportType','FaxRelayMaxRate','FaxRelayECMEnable','FaxRelayRedundancyDepth','FaxRelayEnhancedRedundancyDepth','CNGDetectorMode','DJBufMinDelay','DJBufOptFactor','RTPRedundancyDepth','RTPPackingFactor','RFC2833TxPayloadType','RFC2833RxPayloadType','RFC2198PayloadType','FaxBypassPayloadType','ModemBypassPayloadType','EnableStandardSIDPayloadType','NatMode','EnableAnswerDetector','AnswerDetectorActivityDelay','AnswerDetectorSilenceTime','AnswerDetectorRedirection','AnswerDetectorSensitivity','EnableEnergyDetector','EnergyDetectorQualityFactor','EnergyDetectorThreshold','EnablePatternDetector','EnableDSPIPMDetectors','ACTIVESPEAKERSNOTIFICATIONMININTERVAL','DTMFGenerationTwist','AMDDetectionSensitivity','G729EVMaxBitRate','G729EVLocalMBS','G729EVReceiveMBS','NTEMaxDuration','CEDTransferMode','AMDBeepDetectionTimeout','AMDBeepDetectionSensitivity','MSRTAForwardErrorCorrectionEnable','AMDSensitivityLevel','AMDSensitivityParameterSuit','RtpFWNonConfiguredPTHandling','SilkTxInbandFEC','NewRtpStreamPackets','TimeoutToRelatchRTPMsec','TimeoutToRelatchSRTPMsec','TimeoutToRelatchSilenceMsec','NewSRTPStreamPackets','ECHOCANCELLERType','ACOUSTICECHOSUPPMAXERLTHRESHOLD','ACOUSTICECHOSUPPATTENUATIONINTENSITY','ACOUSTICECHOSUPPMINREFDELAYx10MS','ACOUSTICECHOSUPPRESSORSUPPORT','AmrOctetAlignedEnable','NewRtcpStreamPackets','NewSRtcpStreamPackets','TimeoutToRelatchRTCPMsec','RTPFWInvalidPacketHandling','MediaSecurityBehaviour','SRTPTxPacketMKISize','EnableSymmetricMKI','ResetSRTPStateUponRekey'
$itemindex_WebParams = 'DenyAccessOnFailCount','DenyAuthenticationTimer','DisableWebConfig','DisplayLoginInformation','EnableMgmtTwoFactorAuthentication','EnableWebAccessFromAllInterfaces','EnforcePasswordComplexity','HTTPport','HTTPSPort','HTTPSRequireClientCertificate','LogoWidth','ResetWebPassword','UseProductName','UserInactivityTimer','UseWebLogo','WebAccessList_0','WebAccessList_1','WebAccessList_10','WebAccessList_11','WebAccessList_12','WebAccessList_13','WebAccessList_14','WebAccessList_15','WebAccessList_16','WebAccessList_17','WebAccessList_18','WebAccessList_19','WebAccessList_2','WebAccessList_20','WebAccessList_21','WebAccessList_22','WebAccessList_23','WebAccessList_24','WebAccessList_25','WebAccessList_26','WebAccessList_27','WebAccessList_28','WebAccessList_29','WebAccessList_3','WebAccessList_30','WebAccessList_31','WebAccessList_32','WebAccessList_33','WebAccessList_34','WebAccessList_35','WebAccessList_36','WebAccessList_37','WebAccessList_38','WebAccessList_39','WebAccessList_4','WebAccessList_40','WebAccessList_41','WebAccessList_42','WebAccessList_43','WebAccessList_44','WebAccessList_45','WebAccessList_46','WebAccessList_47','WebAccessList_48','WebAccessList_49','WebAccessList_5','WebAccessList_6','WebAccessList_7','WebAccessList_8','WebAccessList_9','WebLoginBlockAutoComplete','WebSessionTimeout','WebUserPassChangeInterval','CustomerSN','EnableRADIUS','HTTPSCipherString','LogoFileName','MgmtBEHAVIORONTIMEOUT','MgmtLDAPLOGIN','MgmtLOGINCACHEMODE','MgmtLOGINCACHETIMEOUT','RADIUSRetransmission','RADIUSTo','RadiusVSAAccessAttribute','RadiusVSAVendorID','UserProductName','WebLogoText','WEBRADIUSLOGIN'
$itemindex_WebUsers = "WebUsers_Username", "WebUsers_Password", "WebUsers_Status", "WebUsers_PwAgeInterval", 'WebUsers_SessionLimit', 'WebUsers_SessionTimeout', 'WebUsers_BlockTime', 'WebUsers_UserLevel', 'WebUsers_PwNonce', 'WebUsers_SSHPublicKey'


if ($PSBoundParameters.ContainsKey('WordTemplate')) {
    $TemplateFile = (get-item -path $WordTemplate).fullname
}    
else { 
    write-host "Load Word Template ?" -foregroundcolor Yellow
    switch (($host.ui.PromptForChoice("", "Do you want to use an existing word Document as a Template ??", [System.Management.Automation.Host.ChoiceDescription[]]((New-Object System.Management.Automation.Host.ChoiceDescription "&Yes"), (New-Object System.Management.Automation.Host.ChoiceDescription "&No")), 1))) {
        0 {  
            Write-warning -Message "Due to a bug the open file dialog box may be behind other windows"
            Add-Type -AssemblyName System.Windows.Forms
            $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
            $OpenFileDialog.initialDirectory = [Environment]::GetFolderPath('MyDocuments')
            $OpenFileDialog.filter = 'Word Document (*.docx)|*.docx|Word Template (*.dotx)|*.dotx'
            $OpenFileDialog.title = 'Select Word Template to import'
            $result = $OpenFileDialog.ShowDialog((New-Object System.Windows.Forms.Form -Property @{TopMost = $true }))
            if ($result -eq [Windows.Forms.DialogResult]::OK) {
                $TemplateFile = $OpenFileDialog.filename
            }
            else {
                Write-Verbose "No file selected" -VERBOSE
            } 
            Remove-Variable -Name OpenFileDialog  -ErrorAction SilentlyContinue
            Remove-Variable -name result  -ErrorAction SilentlyContinue

        }
    }
}

try {

    if ($PSBoundParameters.ContainsKey('DownloadSampleDesignText')) {
        $MediantDocText = ((invoke-WebRequest -uri "https://shanehoey.com/mediantdoc.json" -ContentType "text/plain").content -split '\n') | convertfrom-json
    }
    else {
        write-host "Download Sample Design Text ?" -foregroundcolor Yellow
        switch (($host.ui.PromptForChoice("", "Do you want to use the online Design Template ??`nIMPORTANT: the current online template may only have placeholder text, as text is getting added after script is published", [System.Management.Automation.Host.ChoiceDescription[]]((New-Object System.Management.Automation.Host.ChoiceDescription "&No"), (New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", "Download a standard design text example")), 1))) {
            1 {  
                Write-verbose -Message "Downloading design document from shanehoey.com/mediantdoc.json" -Verbose
                $MediantDocText = ((invoke-WebRequest -uri "https://shanehoey.com/mediantdoc.json" -ContentType "text/plain").content -split '\n') | convertfrom-json
                Write-verbose -Message "Downloading MediantDoc.json Complete" -Verbose
            }
        }
    }
} 
catch {
    write-warning "Unable to download cloudconnector design template, Defaulting to no design text"
    Remove-Variable MediantDocText -ErrorAction SilentlyContinue
}


#region Version Control & 14 Day usage stats
# Please do not remove this section,
# It is only used for version Control and unique users via github
# I only see number of unique users over 14 days period,
# Collecting the stats gives me an indication how often this script is used to determine if I should continue developing it, or concentrate on other projects
# If you want to silence the notice set notify to $false rather than deleting the section
# thank in advance

$thisversion = "daf55f23-1547-4923-9953-a50f5c8d7316"
try 
{
    $Version = (Invoke-WebRequest -Uri https://shanehoey.com/versions/mediantdoc/ -UserAgent cceDesignDoc -Method Get -DisableKeepAlive -TimeoutSec 2).content | convertfrom-json
    if (($thisversion -ne $version.release) -and ($thisversion -ne $version.dev)) {
        Write-Verbose -message "mediantDoc has been updated" -Verbose
    
        if ($notifyupdates) { 
            Write-Host -object "**********************`nmediantDoc has been Updated`n**********************`nMore details available at $($version.link)"
            start-sleep -Seconds 5 
        }
    }
}
catch 
{
Write-Warning "unable to check for updates"
}

#endregion


try 
{ 
    if ($PSBoundParameters.ContainsKey('MediantConfigFile')) 
    {
        $MediantConfigINI = get-content (get-item -path $MediantConfigINI).fullname
    }    
    if ($PSBoundParameters.ContainsKey('MediantDevice')) 
    {
        try { import-module -name Mediant -ErrorAction Stop } catch { Write-Warning "Mediant Module not installed, to install -> install-module -name mediant -scope currentuser - disabling mediant functions" }
        $mediantdevice = Get-MediantDevice -Mediant $MediantDevice -http $MediantDeviceProtocol -Credential $MediantDeviceCredential
        $MediantConfigini = (Get-MediantDeviceFileIni -MediantDevice $mediantdevice) -split '\n'
        Remove-Variable -name mediantdevice -ErrorAction SilentlyContinue
    }
    
    if (!($MediantConfigini))  
    { 
        $title = $NULL 
        $message = $NULL 
        $Open = New-Object System.Management.Automation.Host.ChoiceDescription "&Open Existing File", "Open Existing config.ini file"
        $Download = New-Object System.Management.Automation.Host.ChoiceDescription "&Download a Sample Config", "Download a Sample Config from shanehoey.com"
        $Connect = New-Object System.Management.Automation.Host.ChoiceDescription "&Connect to Mediant Device", "Download a Config directly from a Mediant device"
        if ($mediantimportfail)
        {
            $Options = [System.Management.Automation.Host.ChoiceDescription[]]($Open,$Download)
            remove-variable mediantimportfail
        }
        else 
        {
            $Options = [System.Management.Automation.Host.ChoiceDescription[]]($Open,$Download,$Connect)
        }
        switch ($host.ui.PromptForChoice($title, $message, $options, 0)) 
            {
                0   {  
                        write-host "Opening existing File" -foregroundcolor Yellow
                        Write-warning -Message "Due to a bug the open file dialog box may be behind other windows"
                        Add-Type -AssemblyName System.Windows.Forms
                        $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
                        $OpenFileDialog.initialDirectory = [Environment]::GetFolderPath('MyDocuments')
                        $OpenFileDialog.filter = 'config.ini (*.ini)|*.ini'
                        $OpenFileDialog.title = 'Select MediantConfig.ini to import'
                        $result = $OpenFileDialog.ShowDialog((New-Object System.Windows.Forms.Form -Property @{TopMost = $true }))
                        if ($result -eq [Windows.Forms.DialogResult]::OK) 
                        {
                            $MediantConfigini = get-content -path $OpenFileDialog.filename
                        }
                        else 
                        {
                            Write-Verbose "No file selected" -VERBOSE
                            throw "No File Selected"
                        } 
                        Remove-Variable -Name OpenFileDialog  -ErrorAction SilentlyContinue
                        Remove-Variable -name result  -ErrorAction SilentlyContinue
                    }
                    1   {  
                        write-host "Downloading Mediantconfig.ini from shanehoey.com/mediantconfig.ini" -foregroundcolor Yellow
                        $MediantConfigini = (invoke-WebRequest -uri "https://shanehoey.com/mediantconfig.ini" -ContentType "text/plain").content -split '\n'
                        Write-host "Dowloading Complete"
                    }
                    2   {  
                        write-host "Connecting to Mediant Device" -foregroundcolor Yellow
                        try { import-module -name Mediant -ErrorAction Stop } catch { Write-Warning "Mediant PowerShell Module not installed, Please manually download a config file or install Mediant PowerShell module (install-module -name mediant -scope currentuser) before continiung ...exiting" }        
                        $MediantConfigini = (Get-MediantDeviceFileIni -MediantDevice (Get-MediantDevice)) -split '\n'
                        Write-verbose -Message "Downloading mediantconfig.ini Complete" 
                    }
            }
        Remove-Variable -name title,message,open,download,connect -ErrorAction SilentlyContinue
    }

    $ini = convertfrom-MediantDocConfigIni -MediantConfigini ($MediantConfigini).replace("[ ","[").replace(" ]","]")
    remove-item MediantConfigini -ErrorAction SilentlyContinue
}
catch 
{
    Write-warning "Sorry unable to get mediant config.ini file, please try again"
    Break
}

foreach ($item  in $ini.keys) {
    switch ($item)
    {
        { $item -eq "Mediant" } { Set-Variable -Name $item -Value ( ConvertFrom-MediantDocMediantParameter ) }
        { $ini[$item].ContainsKey("FORMAT $($item)_Index") } { Set-Variable -Name $item -Value ( ConvertFrom-MediantDocTable -item $item -itemindex (get-variable -name "itemindex_$($item)" -erroraction silentlycontinue -verbose ).value ) }
        Default { Set-Variable -Name $item -Value (ConvertFrom-MediantDocList -item $item -itemindex (get-variable -name "itemindex_$($item)" -erroraction silentlycontinue -verbose).value ) }
    }
}


if ($missingparameter) {

    Write-warning "*****************************" 
    Write-warning "Missing Parameters Found" 
    Write-warning "*****************************" 
    write-warning "Please help improve this script by logging an issue on github.com/shanehoey/mediantdoc for the above missing parameters"
    start-sleep -seconds 5

}

$GridTableBlue = @{
  'WdAutoFitBehavior'    = 'wdAutoFitWindow'
  'WdDefaultTableBehavior' = 'wdWord9TableBehavior'
  'GridTable'            = 'Grid Table 4'
  'GridAccent'           = 'Accent 1'
  'BandedRow'            = $False
}

$GridTableBlack = @{
  'WdAutoFitBehavior'    = 'wdAutoFitWindow'
  'WdDefaultTableBehavior' = 'wdWord9TableBehavior'
  'GridTable'            = 'Grid Table 4'
  'BandedRow'            = $False
}

$GridTableGrey = @{
  'WdAutoFitBehavior'    = 'wdAutoFitWindow'
  'WdDefaultTableBehavior' = 'wdWord9TableBehavior'
  'GridTable'            = 'Grid Table 4'
  'GridAccent'           = 'Accent 3'
  'BandedRow'            = $False
}

New-WordInstance
New-WordDocument
if($templatefile)
{
    Add-WordTemplate -filename $templatefile
}

#Turn of spelling to speed up creating doc
(get-wordInstance).options.checkspellingasyoutype = $false


if($section.CoverPage) { 
    
    #CoverPage
    for ($i = 0; $i -lt 3; $i++) 
    {
      Add-WordBreak -breaktype Paragraph 
    }
    Add-WordText -text 'Mediant Configuration' -WDBuiltinStyle wdStyleTitle
    for ($i = 0; $i -lt 3; $i++) 
    {
      Add-WordBreak -breaktype Paragraph 
    }
    Add-WordText -text 'for' -WDBuiltinStyle wdStyleTitle
    for ($i = 0; $i -lt 3; $i++) 
    {
      Add-WordBreak -breaktype Paragraph 
    }
    Add-WordText -text 'Customer Name' -WDBuiltinStyle wdStyleTitle
    Add-WordBreak -breaktype NewPage
    
    #License
    $license = "MIT License`nCopyright (c) 2016-2018 Shane Hoey`rPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:`nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.`nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
    Add-WordBreak -breaktype Paragraph
    Add-WordText -text 'This document has been created with MediantDoc which has been distributed under the MIT license. For more information visit http://shanehoey.github.io/worddoc/mediant' -WDBuiltinStyle wdStyleBookTitle
    Add-WordBreak -breaktype Paragraph
    #bug with bold/italic in worddoc module
    $selection = (Get-WordDocument).application.selection
    $selection.font.Bold = $False
    $selection.ParagraphFormat.Alignment = 3
    Add-WordText -text $license -WDBuiltinStyle wdStyleNormal
    Add-WordBreak -breaktype NewPage
    
    #Shameless Plug
    for ($i = 0; $i -lt 3; $i++) 
    {
      Add-WordBreak -breaktype Paragraph 
    }
    Add-WordText -text 'Are you using this commercially? Show your appreciation and encourage more development of this script at https://paypal.me/shanehoey' -WDBuiltinStyle wdStyleIntenseQuote
    for ($i = 0; $i -lt 3; $i++) 
    {
      Add-WordBreak -breaktype Paragraph 
    }
    Add-WordText -text 'Have a suggestion on how to improve the script ? https://github.com/shanehoey/mediantdoc/issues/' -WDBuiltinStyle wdStyleIntenseQuote
    
    #TOC
    Add-WordBreak -breaktype NewPage
    Add-WordText -text 'Contents' -WDBuiltinStyle wdStyleTOCHeading 
    Add-WordTOC 
    Add-WordBreak -breaktype NewPage

    #builtinProperty
    Set-WordBuiltInProperty -WdBuiltInProperty wdPropertytitle -text 'MediantDodc'
    Set-WordBuiltInProperty -WdBuiltInProperty wdPropertySubject -text 'Cloud Connector Implementation'
    Set-WordBuiltInProperty -WdBuiltInProperty wdPropertyAuthor -text $([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('cwBoAGEAbgBlAGgAbwBlAHkA')))
    Set-WordBuiltInProperty -WdBuiltInProperty wdPropertyComments -text $([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('aAB0AHQAcABzADoALwAvAGcAaQB0AGgAdQBiAC4AYwBvAG0ALwBzAGgAYQBuAGUAaABvAGUAeQAvAHcAbwByAGQAZABvAGMALwBtAGUAZABpAGEAbgB0AGQAbwBjAA==')))
    Set-WordBuiltInProperty -WdBuiltInProperty wdPropertyManager -text $([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('cwBoAGEAbgBlAGgAbwBlAHkA')))

    }


if($section.MediantOverview) { 
    $heading = 'Mediant Overview'
    $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
    Add-mediantDocParagraph -heading $heading -headingtype 1 -text $text  -NewPage 

    $heading = 'Device Details'
    $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
    Add-mediantDocParagraph -heading $heading -headingtype 2 -NewPage -text $text
    Add-WordTable -Object $Mediant.viewDoc() @GridTableBlack -VerticleTable -FirstColumn $False -HeaderRow $False

    $heading = "Key Features"
    Add-mediantDocParagraph -heading $heading -headingtype 2 -text ($Mediant.viewKeyfeatures().where({$_ -notmatch "^$"}) | Out-String) 
    #TODO FIX
    #Add-WordTable -Object $Mediant.viewKeyfeatures() @GridTable -VerticleTable -FirstColumn $False -HeaderRow $False
}



if($section.IPNetwork) { 

    $heading = 'IP Network'
    $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
    Add-mediantDocParagraph -heading $heading -headingtype 1 -text $text -NewPage 
    
        #region Core Entities
        $heading = 'Core Entities'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
        
            #IP Interface
            $heading = 'IP Interface'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            Add-WordTable -Object $InterfaceTable.viewOverview() @GridTableBlack
            if($InterfaceTable) 
            { 
                foreach ($item in $InterfaceTable) 
                { 
                    Add-WordTable -Object $Item.viewGeneral() @GridTableGrey -VerticleTable 
                    Add-WordTable -Object $Item.viewIPAddress() @GridTableGrey -VerticleTable -header $false
                    Add-WordTable -Object $Item.viewDNS() @GridTableGrey -VerticleTable  -HeaderRow $false
                }
            }
            else 
            {
                Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

            #Ethernet Devices
            $heading = 'Ethernet Devices'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if($DeviceTable) 
            { 
                Add-WordTable -Object $DeviceTable.viewOverview() @GridTableBlack
                foreach ($item in $DeviceTable) 
                { 
                    Add-WordTable -Object $item.viewGeneral() @GridTableGrey -VerticleTable 
                }
            }
            else 
            {
              Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

            #Ethernet Groups
            $heading = 'Ethernet Groups'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if($EtherGroupTable) 
            { 
                Add-WordTable -Object ($EtherGroupTable | select Ethergrouptable_Group,Ethergrouptable_Mode) @GridTableBlack 
                foreach ($item in $EtherGroupTable) 
                { 
                    Add-WordTable -Object $item.viewOverview() @GridTableGrey -VerticleTable     
                }
            }
            else 
            {
              Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

            #Physical Ports
            $heading = 'Physical Ports'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($PhysicalPortsTable)
            {
                 Add-WordTable -Object ($PhysicalPortsTable.viewOverview() ) @GridTableBlack
                foreach ($item in $PhysicalPortsTable) 
                { 
                    Add-WordTable -Object $item.viewGeneral() @GridTableGrey -VerticleTable
                    Add-WordTable -Object $item.viewEthernetGroup() @GridTableGrey -VerticleTable -HeaderRow $false
                }
            }
            else 
            {
              Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

            #Static Routes
            $heading = 'Static Routes'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            IF ($StaticRouteTable) 
            { 
                Add-WordTable -Object $StaticRouteTable.viewOverview() @GridTableBlack
                foreach ($item in $StaticRouteTable) 
                {
                    Add-WordTable -Object $item.viewGeneral() @GridTableGrey -VerticleTable -HeaderRow $FALSE
                }
            }
            else 
            {
              Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

            #HA Settings
            $heading = 'HA Settings'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if($SYSTEMparams.HAPingEnabled -eq 1) 
            { 
                Add-WordTable -Object $SYSTEMparams.viewHASettings_HighAvailability() @GridTableBlack -VerticleTable -HeaderRow $false
                Add-WordTable -Object $SYSTEMparams.viewHASettings_NetworkReachability() @GridTableGrey -VerticleTable -HeaderRow $false
            }
            else 
            {
              Add-WordText -text "$heading Currently Disabled" -WDBuiltinStyle wdStyleIntenseQuote
              Add-WordTable -Object $SYSTEMparams.viewHASettings_HighAvailability() @GridTableBlack -VerticleTable -HeaderRow $false
              Add-WordTable -Object $SYSTEMparams.viewHASettings_NetworkReachability() @GridTableGrey -VerticleTable -HeaderRow $false
            }

            #Nat Translation
            $heading = 'Nat Translation'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($NATTranslation) 
            { 
              Add-WordTable -Object $NATTranslation.viewSource() @GridTableBlack 
              Add-WordTable -Object $NATTranslation.viewTarget() @GridTableGrey
            }
            else 
            {
              Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

    
        #endregion
    
        #region Security
        $heading = 'Security'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
    
            #TLS Contexts
            $heading = 'TLS Contexts'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            IF ($TLSContexts) 
            { 
                Add-WordTable -Object $TLSContexts.viewOverview() @GridTableBlack
                foreach ($item in $tlsContexts) 
                { 
                    Add-WordTable -Object $TLSContexts.viewGeneral() @GridTableGrey -VerticleTable -HeaderRow $true
                    Add-WordTable -Object $TLSContexts.viewOCSP() @GridTableGrey -VerticleTable -HeaderRow $false
                }
            }
            else 
            {
              Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

            #Firewall
            $heading = 'Firewall'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            IF ($accesslist) 
            {  
                Add-WordTable -Object $accesslist.viewOverview() @GridTableBlack 
                foreach ($item in $accesslist) 
                {
                    Add-WordTable -Object $item.viewMatch() @GridTableGrey -VerticleTable
                    Add-WordTable -Object $item.viewAction() @GridTableGrey -VerticleTable -HeaderRow $false
                }
            }
            else 
            {
              Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

            #Security Settings
            $heading = 'Security Settings'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            Add-WordTable -Object $SYSTEMparams.viewSecuritySettings_TLSGeneral() @GridTableBlack  -VerticleTable -HeaderRow $False
            Add-WordTable -Object $SIPParams.viewSecuritySettings_SipOverTLS() @GridTableBlack  -VerticleTable -HeaderRow $False
            Add-WordTable -Object $WEBParams.viewSecuritySettings_Management() @GridTableBlack -VerticleTable -HeaderRow $False

        #endregion
    
        #region Quality
        $heading = 'Quality'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
    
            #Qos Settings
            $heading = 'Qos Settings'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($BSPParams)
            {
                Add-WordTable -Object $BSPParams.viewQosSettings_General() @GridTableBlack -verticletable -FirstColumn $true -HeaderRow $false
            }
            else 
            {
                Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

            #Qos Mapping
            $heading = 'Qos Mapping'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            IF ($DiffServToVlanPriority) 
            {  
              Add-WordTable -Object $DiffServToVlanPriority.view() @GridTableBlack 
            }
            else 
            {
              Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

    
        #endregion
    
        #region Radius & Ldap
        $heading = 'Radius & Ldap'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
    
            #RADIUS Servers
            $heading = 'RADIUS Servers'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            IF ($RadiusServers) 
            {  
              Add-WordTable -Object $RadiusServers.viewOverview() @GridTableBlack 
            }
            else
            {
                Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }
    
            #LDAP Settings
            $heading = 'LDAP Settings'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($SIPParams.LDAPGeneral -eq 1) 
            {
                Add-WordTable -Object $sipparams.viewLDAPSettings() @GridTableBlack -VerticleTable -HeaderRow $false
                Add-WordTable -Object $sipparams.viewLDAPActiveDirectory() @GridTableBlack -VerticleTable -HeaderRow $false
                Add-WordTable -Object $sipparams.viewLDAPCache() @GridTableBlack -VerticleTable -HeaderRow $false
            }
            else 
            {
                Add-WordText -text "$heading not ENABLED" -WDBuiltinStyle wdStyleIntenseQuote
                Add-WordTable -Object $sipparams.viewLDAPSettings() @GridTableBlack -VerticleTable -HeaderRow $false
                Add-WordTable -Object $sipparams.viewLDAPActiveDirectory() @GridTableBlack -VerticleTable -HeaderRow $false
                Add-WordTable -Object $sipparams.viewLDAPCache() @GridTableBlack -VerticleTable -HeaderRow $false
            }

            #LDAP Server Groups
            $heading = 'LDAP Server Groups'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($LdapServerGroups) 
            {  
              Add-WordTable -Object $LdapServerGroups.viewOverview() @GridTableBlack 
              foreach ($item in $LdapServerGroups) 
              {
                  Add-WordTable -Object $item.viewGeneral() @GridTableGrey -VerticleTable -HeaderRow $false
                  Add-WordTable -Object $item.viewCache() @GridTableGrey -VerticleTable -HeaderRow $false
              }
            }
            else
            {
                Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

            #LDAP Servers
            $heading = 'LDAP Servers'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            IF ($LdapConfiguration) 
            {  
              Add-WordTable -Object $LdapConfiguration.viewOverview() @GridTableBlack 
              foreach ($item in $LdapConfiguration) 
              {
                Add-WordTable -Object $item.viewGeneral() @GridTableGrey -VerticleTable -HeaderRow $false
                Add-WordTable -Object $item.viewQuery() @GridTableGrey -VerticleTable -HeaderRow $false 
                Add-WordTable -Object $item.viewConnection() @GridTableGrey -VerticleTable -HeaderRow $false
              }
            }
            else
            {
                Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

        #endregion
    
        #region Advanced
        $heading = 'Advanced'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
    
            #Network Settings
            $heading = 'Network Settings'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($BSPParams) 
            {
                Add-WordTable -Object $BSPParams.viewNetworkSettings_ICMP() @GridTableBlack -VerticleTable -HeaderRow $false
                Add-WordTable -Object $BSPParams.viewNetworkSettings_DHCP() @GridTableBlack -NoParagraph -VerticleTable -HeaderRow $false
            }
            else
            {
                Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

            #DHCP Servers
            $heading = 'DHCP Servers'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            IF ($DhcpServer) 
            {  
              Add-WordTable -Object $DhcpServer.viewGeneral() @GridTableBlack  -VerticleTable
              Add-WordTable -Object $DhcpServer.viewDNS() @GridTableGrey  -VerticleTable -HeaderRow $false
              Add-WordTable -Object $DhcpServer.viewNetbios() @GridTableGrey  -VerticleTable -HeaderRow $false
              Add-WordTable -Object $DhcpServer.viewTimeandDate() @GridTableGrey -VerticleTable -HeaderRow $false
              Add-WordTable -Object $DhcpServer.viewBootFile() @GridTableGrey -VerticleTable -HeaderRow $false
              Add-WordTable -Object $DhcpServer.viewRouter() @GridTableGrey -VerticleTable -HeaderRow $false
              Add-WordTable -Object $DhcpServer.viewSip() @GridTableGrey -VerticleTable -HeaderRow $false
              if ($DhcpVendorClass) { Add-WordTable -Object $DhcpVendorClass.viewOverview() @GridTableGrey }
              if ($DhcpOption) { Add-WordTable -Object $DhcpOption.viewOverview() @GridTableGrey }
              if ($DhcpStaticIP) { Add-WordTable -Object $DhcpStaticIP.viewOverview() @GridTableGrey }
            }
            else
            {
                Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }
        #endregion
    
        #region DNS
        $heading = 'DNS'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
    
            #Internal DNS
            $heading = 'Internal DNS'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            IF ($DNS2IP) 
            {  
                Add-WordTable -Object $DNS2IP.viewOverview() @GridTableBlack 
                foreach ($item in $DNS2IP) { 
                    Add-WordTable -Object $item.viewgeneral() @GridtableGrey -VerticleTable
                }
            }
            else
            {
                Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }
            #Internal SRV
            $heading = 'Internal SRV'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            IF ($SRV2IP) 
            {  
                Add-WordTable -Object $SRV2IP.viewOverview() @GridtableBlack 
                foreach ($item in $SRV2IP) 
                { 
                    Add-WordTable -Object $item.viewGeneral() @GridtableGrey -VerticleTable
                    Add-WordTable -Object $item.view1stEntry() @GridtableGrey -VerticleTable -HeaderRow $false
                    Add-WordTable -Object $item.view2ndEntry() @GridtableGrey -VerticleTable -HeaderRow $false
                    Add-WordTable -Object $item.view3rdEntry() @GridtableGrey -VerticleTable -Headerrow $false
                }
            }
            else
            {
                Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }
    
        #endregion
    
        #region Web Services
        $heading = 'Web Services'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
    
            #Web Service Settings
            $heading = 'Web Service Settings'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($ControlProtocolsParams) 
            { 
                Add-WordTable -Object $ControlProtocolsParams.viewGeneral() @GridTableBlack
            }
            else
            {
                Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }    
            
            #Remote Web Services
            $heading = 'Remote Web Services'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            IF ($HTTPRemoteServices) 
            {  
                Add-WordTable -Object $HTTPRemoteServices @GridTableBlack
                Add-WordTable -Object $HTTPRemoteHosts @GridTableBlack
            }
            else
            {
                Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }
    
        #endregion

        #region HTTP Proxy
        $heading = 'HTTP Proxy'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 

            #General Settings
            $heading = 'General Settings'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($SIPParams.HTTPProxyApplication -eq 1 ) 
            {
                Add-WordTable -Object $sipparams.viewHTTPProxy() @GridTableBlack -VerticleTable
            }
            else
            {
                Add-WordText -text "$heading not Enabled" -WDBuiltinStyle wdStyleIntenseQuote
                Add-WordTable -Object $sipparams.viewHTTPProxy() @GridTableBlack -VerticleTable -HeaderRow $false -FirstColumn $true
            }

            #HTTP Interfaces
            $heading = 'HTTP Interfaces'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($HTTPInterface) 
            {   
                Add-WordTable -Object $HTTPInterface.viewoverview() @GridTableBlack
                foreach ($item in $HTTPInterface) 
                {
                   Add-wordtable -object $item.viewGeneral() @GridTableGrey -VerticleTable
                   Add-wordtable -object $item.viewSecurity() @GridTableGrey -VerticleTable -HeaderRow $false
                }
            }
            else
            {
                Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

            #HTTP Proxy Service
            $heading = 'HTTP Proxy Service'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($HTTPProxyService) 
            {
                Add-WordTable -Object $HTTPProxyService.viewOverview() @GridTableBlack -VerticleTable
                foreach ($item in $HTTPProxyService) 
                {
                   Add-wordtable -object $item.viewGeneral() @GridTableGrey -VerticleTable
                }
            }
            else
            {
                Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

            #HTTP Proxy Host
            $heading = 'HTTP Proxy Hosts'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($HTTPProxyHost) 
            { 
                Add-WordTable -Object $HTTPProxyHost.viewOverview() @GridTableBlack
                foreach ($item in $HTTPProxyHost) 
                {
                    Add-wordtable -object $item.viewGeneral() @GridTableGrey -VerticleTable
                    Add-wordtable -object $item.viewSecurity() @GridTableGrey -VerticleTable -HeaderRow $false
                }
            }
            else 
            {
                Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

  
            #EMS Services
            $heading = 'EMS Services'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($emsservice) 
            {
                Add-WordTable -Object $emsservice.viewOverview() @GridTableBlack
                foreach ($item in $emsservice) 
                {
                    Add-wordtable -object $item.viewGeneral() @GridTableGrey -VerticleTable -NoParagraph
                    Add-wordtable -object $item.viewDevice() @GridTableGrey -VerticleTable -NoParagraph
                    Add-wordtable -object $item.viewEMS() @GridTableGrey -VerticleTable -HeaderRow $true
                }
            }
            else
            {
                Add-WordText -text "$heading not configured" -WDBuiltinStyle wdStyleIntenseQuote
            }

        #endregion
    }




#region Signaling & Media
if($section.SignalingMedia) { 
    $heading = 'Signaling & Media'
    $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
    Add-mediantDocParagraph -heading $heading -headingtype 1 -text $text -NewPage 
    
        #region Core Entities
        $heading = 'Core Entities'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
            
            #region Applications Enabling
            $heading = 'Applications Enabling'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            add-wordtable -Object $SIPParams.viewApplicationsEnabling_General() @GridTableBlack -VerticleTable -HeaderRow $false
            #endregion
    
            #region SRDs
            $heading = 'SRDs'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage
            if ($SRD) 
            { 
              add-wordtable -Object $SRD.viewOverview() @GridTableBlack
              foreach ($item in $SRD) {
                add-wordtable -Object $item.viewGeneral() @GridTableGrey -VerticleTable
                add-wordtable -Object $item.viewRegistration() @GridTableBlack -VerticleTable -HeaderRow $false
              }
            }
            else
            {
              Add-WordText -text 'SRD not configured' -WDBuiltinStyle wdStyleBlockQuotation
            }
            #endregion
    
            #region SIP Interfaces
            $heading = 'SIP Interfaces'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($SIPInterface) 
            { 
              add-wordtable -Object $SIPInterface.viewOverview() @GridTableBlack 
              foreach ($item in $SIPInterface) 
              {
                add-wordtable -Object $item.viewGeneral() @GridTableGrey -VerticleTable
                add-wordtable -Object $item.viewClassification() @GridTableGrey -VerticleTable -HeaderRow $false
                add-wordtable -Object $item.viewMedia() @GridTableGrey -VerticleTable -HeaderRow $false
                add-wordtable -Object $item.viewSecurity() @GridTableGrey -VerticleTable -HeaderRow $false
              }
            }
            else
            {
              Add-WordText -text 'SIP Interfaces not configured' -WDBuiltinStyle wdStyleBlockQuotation
            }
            #endregion
    
            #region Media Realms
            $heading = 'Media Realms'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($cpMediarealm) 
            { 
              add-wordtable -Object $cpMediarealm.viewOverview() @GridTableBlack -VerticleTable
              foreach ($item in $cpMediarealm) 
              {
                add-wordtable -Object $item.viewGeneral() @GridTableGrey -VerticleTable
                add-wordtable -Object $item.viewQualityofExperience() @GridTableGrey -VerticleTable -HeaderRow $false
              }
            }
            else
            {
              Add-WordText -text 'Media Realms not configured' -WDBuiltinStyle wdStyleBlockQuotation
            }
            if ($RemoteMediaSubnet) 
            {
            add-wordtable -Object $RemoteMediaSubnet.viewOverview() @GridTableBlack -VerticleTable
            }
            if ($MediaRealmExtension) 
            {
            add-wordtable -Object $MediaRealmExtension.viewOverview() @GridTableBlack -VerticleTable
            }
            #endregion
    
            #region Proxy Sets
            $heading = 'Proxy Sets'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            
            if ($ProxySet) 
            { 
              add-wordtable -Object $ProxySet.viewOverview() @GridTableBlack 
              foreach ($item in $ProxySet) 
              {
                add-wordtable -Object $ProxySet.viewGeneral() @GridTableGrey -VerticleTable
                add-wordtable -Object $ProxySet.viewKeepAlive() @GridTableGrey -VerticleTable -HeaderRow $false
                add-wordtable -Object $ProxySet.viewRedundancy() @GridTableGrey -VerticleTable -HeaderRow $false
                add-wordtable -Object $ProxySet.viewAdvanced() @GridTableGrey -VerticleTable -HeaderRow $false
               }
            }
            else
            {
              Add-WordText -text 'Proxy Sets not configured' -WDBuiltinStyle wdStyleBlockQuotation
            }
    
            #region Proxy Addresses
            $heading = 'Proxy Address'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($ProxyIP) 
            { 
              add-wordtable -Object $ProxyIP.viewOverview() @GridTableBlack 
            }
            else
            {
              Add-WordText -text 'Proxy Addresses not configured' -WDBuiltinStyle wdStyleBlockQuotation
            }
            #endregion
    
            #endregion
    
            #region IP Groups
            $heading = 'IP Groups'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if ($IPGroup)
            { 
              add-wordtable -Object $IPGroup.viewOverview() @GridTableBlack 
              foreach ($item in $IPGroup) {
                add-wordtable -Object $item.viewGeneral() @GridTableGrey -VerticleTable
                add-wordtable -Object $item.viewSBCGeneral() @GridTableGrey -VerticleTable -HeaderRow $false
                add-wordtable -Object $item.viewAdvanced() @GridTableGrey -VerticleTable -HeaderRow $false
                add-wordtable -Object $item.viewSBCAdvanced() @GridTableGrey -VerticleTable -HeaderRow $false
                add-wordtable -Object $item.viewQualityofExperience() @GridTableGrey -VerticleTable -HeaderRow $false
                add-wordtable -Object $item.viewMessageManipulation() @GridTableGrey -VerticleTable -HeaderRow $false
                add-wordtable -Object $item.viewSBCRegistrationAuthentication() @GridTableGrey -VerticleTable -HeaderRow $false
                add-wordtable -Object $item.viewGWGroupStatus() @GridTableGrey -VerticleTable -HeaderRow $false
              }
            }
            else
            {
              Add-WordText -text '$heading not configured' -WDBuiltinStyle wdStyleBlockQuotation
            }
            #endregion
    
        #endregion
    
        #region Media
        $heading = 'Media'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
     
            #region Media Security
            if ($section.Dev) 
            { 
              $heading = 'Media Security'
              $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
              Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
              Add-WordText -text 'MediaSecurity - General' -WDBuiltinStyle wdStyleBlockQuotation
              Add-WordText -text 'MediaSecurity - Master Key Identifier' -WDBuiltinStyle wdStyleBlockQuotation
              Add-WordText -text 'MediaSecurity - Authentication & Encryption' -WDBuiltinStyle wdStyleBlockQuotation
            }
            #endregion
    
            #region RTP/RTCP Settings
            if ($section.Dev) 
            { 
              $heading = 'RTP/RTCP Settings'
              $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
              Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            }
            #endregion
    
            #region Voice Settings
            if ($section.Dev) 
            { 
              $heading = 'Voice Settings'
              $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
              Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            }
            #endregion
    
            #region Fax/Modem/CID Settings
            if ($section.Dev) 
            { 
              $heading = 'Fax/Modem/CID Settings'
              $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
              Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            }
            #endregion
    
            #region Media Settings
            if ($section.Dev) 
            { 
              $heading = 'MediaSecurity'
              $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
              Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            }
           #endregion
    
            #region DSP Settings
            if ($section.Dev) 
            { 
              $heading = 'MediaSecurity'
              $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
              Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            }
            #endregion
    
            #region Quality of Experience
            $heading = 'Quality of Experience'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            
                #region Session Experiance Manager
                if ($section.Dev) 
                { 
                  $heading = 'Session Experiance Manager'
                  $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
                  Add-mediantDocParagraph -heading $heading -headingtype 4 -text $text -NewPage 
                }
                #endregion
    
                #region Quality of Experiance Profile
                $heading = 'Quality of Experiance Profile'
                $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
                Add-mediantDocParagraph -heading $heading -headingtype 4 -text $text -NewPage 
                if ($QOEProfile)
                { 
                  add-wordtable -Object $QOEProfile.viewOverview() @GridTableBlack 
                }
                else
                {
                  Add-WordText -text 'Quality of Experiance Profile not configured' -WDBuiltinStyle wdStyleBlockQuotation
                }
                  
                #endregion
    
                #region Bandwidth Profile
                $heading = 'Bandwidth Profile'
                $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
                Add-mediantDocParagraph -heading $heading -headingtype 4 -text $text -NewPage 
                if ($BWProfile)
                { 
                  add-wordtable -Object $BWProfile.viewOverview() @GridTableBlack 
                }
                else
                {
                  Add-WordText -text 'Bandwidth Profile not configured' -WDBuiltinStyle wdStyleBlockQuotation
                }
                #endregion
    
                #region Quality of Service Rules
                $heading = 'Quality of Service Rules'
                $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
                Add-mediantDocParagraph -heading $heading -headingtype 4 -text $text -NewPage 
                if ($QualityOfServiceRules)
                { 
                  add-wordtable -Object $QualityOfServiceRules.viewOverview() @GridTableBlack 
                }
                else
                {
                  Add-WordText -text 'Quality of Service Rules not configured' -WDBuiltinStyle wdStyleBlockQuotation
                }
                #endregion
    
            #endregion
    
        #endregion
    
        #region Coders & Profiles
        $heading = 'Coders & Profiles'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
     
            #region IP Profiles
            $heading = 'IP Profiles'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            if($IpProfile)
            { 
                Add-WordTable -object $IpProfile.viewOverview() @GridTableBlack
                foreach ($item in $IpProfile) 
                {
                    Add-WordTable $item.viewGeneral() @GridTableBlack -VerticleTable 
                    Add-WordTable $item.viewMediaSecurity() @GridTableBlack -VerticleTable -HeaderRow $false
                    Add-WordTable $item.viewSBCEarlyMedia() @GridTableBlack -VerticleTable -HeaderRow $false
                    Add-WordTable $item.viewSBCMedia() @GridTableBlack -VerticleTable -HeaderRow $false
                    Add-WordTable $item.viewQualityofService() @GridTableBlack -VerticleTable -HeaderRow $false
                    Add-WordTable $item.viewSBCJitterBuffer() @GridTableBlack -VerticleTable -HeaderRow $false
                    Add-WordTable $item.viewVoice() @GridTableBlack -VerticleTable -HeaderRow $false
                    Add-WordTable $item.viewSBCSignalling() @GridTableBlack -VerticleTable -HeaderRow $false
                    Add-WordTable $item.viewSBCRegistration() @GridTableBlack -VerticleTable -HeaderRow $false
                    Add-WordTable $item.viewSBCForwardandTransfer() @GridTableBlack -VerticleTable -HeaderRow $false
                    Add-WordTable $item.viewSbcHold() @GridTableBlack -VerticleTable -HeaderRow $false
                    Add-WordTable $item.viewSbcfax() @GridTableBlack -VerticleTable -HeaderRow $false
                    Add-WordTable $item.viewMedia() @GridTableBlack -VerticleTable -HeaderRow $false
                    Add-WordTable $item.viewGateway() @GridTableBlack -VerticleTable -HeaderRow $false
                }
            }
            else
            {
              Add-WordText -text '$heading not configured' -WDBuiltinStyle wdStyleBlockQuotation
            }
            #endregion
    
            #region Coder Settings
            if ($section.Dev) 
            { 
            $heading = 'Coder Settings'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            }
            #endregion
    
            #region Coder Groups
            if ($section.Dev) 
            { 
            $heading = 'Coder Groups'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            }
            #endregion
    
            #region Allowed Audio Coders Groups
            if ($section.Dev) 
            { 
              $heading = 'Allowed Audio Coders Groups'
              $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
              Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
              Add-WordTable -Object $AllowedAudioCoders.viewOverview() @GridTableBlack
            }
            #endregion
    
            #region Allowed Video Coders Groups
            if ($section.Dev) 
            { 
            $heading = 'Allowed Video Coders Groups'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            Add-WordTable -Object $AllowedAudioCoders.viewOverview() @GridTableBlack
            }
            #endregion
    
        #endregion
    
        #region SBC
        $heading = 'SBC'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
     
            #region Classification
            $heading = 'Classification'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            Add-WordTable -Object $Classification.viewOverview() @GridTableBlack
            #endregion
    
            #region Routing
            $heading = 'Routing'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
        
                #region Routing Policies
                $heading = 'Routing Policies'
                $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
                Add-mediantDocParagraph -heading $heading -headingtype 4 -text $text -NewPage 
                Add-WordTable -Object $SBCRoutingPolicy.viewOverview() @GridTableBlack
                #endregion
        
                #region IP to IP Routing
                $heading = 'IP to IP Routing'
                $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
                Add-mediantDocParagraph -heading $heading -headingtype 4 -text $text -NewPage 
                Add-WordTable -Object $IP2IPRouting.viewOverview() @GridTableBlack
                #endregion
    
                #region Alternative Reasons
                $heading = 'Alternative Reasons'
                $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
                Add-mediantDocParagraph -heading $heading -headingtype 4 -text $text -NewPage 
                Add-WordTable -Object $SBCAlternativeRoutingReasons.viewOverview() @GridTableBlack
                #endregion
    
                #region IP Group Set
                $heading = 'IP Group Set'
                $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
                Add-mediantDocParagraph -heading $heading -headingtype 4 -text $text -NewPage
                Add-WordTable -Object $IPGroupSet.viewOverview() @GridTableBlack 
                #endregion
    
            #endregion
    
            #region Manipulation
            $heading = 'Manipulations'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
    
                
                #region Inbound Manipulations
                $heading = 'Inbound Manipulations' 
                $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
                Add-mediantDocParagraph -heading $heading -headingtype 4 -text $text -NewPage 
                Add-WordTable -Object $IPInboundManipulation.viewOverview() @GridTableBlack 
                #endregion
      
                #region Outbound Manipulations
                $heading =  'Outbound Manipulations' 
                $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
                Add-mediantDocParagraph -heading $heading -headingtype 4 -text $text -NewPage 
                Add-WordTable -Object $IPOutboundManipulation.viewOverview() @GridTableBlack 
                
                #endregion
    
            #endregion
    
            #region SBC General Settings
            if ($section.Dev) 
            { 
            $heading = 'SBC General Settings'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            }
            #endregion
    
            #region Admission Control
            $heading = 'Admission Control' 
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 4 -text $text -NewPage 
            Add-WordTable -Object $SBCAdmissionControl.viewOverview() @GridTableBlack 
            #endregion
    
            #region Dial Plan
            $heading = 'Dial Plan' 
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 4 -text $text -NewPage 
            Add-WordTable -Object $Dialplan.viewOverview() @GridTableBlack 
            #endregion
    
            #region Malicious Signiture
            $heading = 'Malicious Signature'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 4 -text $text -NewPage 
            Add-WordTable -Object $MaliciousSignatureDB.viewOverview() @GridTableBlack 
            #endregion
    
        #endregion
    
        #region Sip Definitions
        $heading = 'Sip Definitions'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
     
            #region Accounts
            if ($accounts) { 
              $heading = 'Accounts'
              $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
              Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
              Add-WordTable -Object $accounts.viewOverview() @GridTableBlack 
            }
            #endregion
    
            #region SIP Definitions General Settings
            if ($section.Dev) 
            { 
            $heading = 'SIP Definitions General Settings'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            }
            #endregion
    
            #region Message Structure
            if ($section.Dev) 
            { 
            $heading = 'Message Structure'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            }
            #endregion
    
            #region Transport Settings
            if ($section.Dev) 
            { 
              $heading = 'Transport Settings'
              $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
              Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            }
            #endregion
    
            #region Proxy & Registration
            if ($section.Dev) 
            { 
            $heading = 'Proxy & Registration '
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            }
            #endregion
    
            #region Priority and Emergency
            if ($section.Dev) 
            { 
              $heading = 'Priority and Emergency'
              $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
              Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            }
            #endregion
    
            #region Call Setup Rules
            $heading = 'Call Setup Rules'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            IF ($CallSetupRules) 
            {   
              Add-WordTable -Object $CallSetupRules.viewOverview() @GridTableBlack -NoParagraph -HeaderRow $false
              foreach ($item in $CallSetupRules) { 
                  Add-WordTable -Object $item.viewGeneral() @GridTableBlack -HeaderRow $false
                  Add-WordTable -Object $item.viewAction() @GridTableBlack -HeaderRow $false
              }
            }
            ELSE 
            {
              Add-WordText -text 'Call Setup Rules not configured' -WDBuiltinStyle wdStyleBlockQuotation
            }
            #endregion
    
            #region Least Cost Routing
            if ($section.Dev) 
            { 
            $heading = 'Least Cost Routing '
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            }
                #region Cost Groups
                if ($section.Dev) 
                { 
                $heading = 'Cost Groups '
                $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
                Add-mediantDocParagraph -heading $heading -headingtype 4 -text $text -NewPage 
                }
                #endregion
    
            #endregion
    
        #endregion
    
        #region Message Manipulation
        $heading = 'Message Manipulation'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
        
            #region Message Manipulations
            $heading = 'Message Manipulations'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            IF ($MessageManipulations) 
            { 
              
              Add-WordTable -Object $MessageManipulations.viewOverview() @GridTableBlack -NoParagraph -HeaderRow $false
              foreach ($item in $MessageManipulations) 
              { 
                  Add-WordTable -Object $item.viewGeneral() @GridTableBlack -HeaderRow $false
                  Add-WordTable -Object $item.viewMatch() @GridTableBlack -HeaderRow $false
                  Add-WordTable -Object $item.viewAction() @GridTableBlack -HeaderRow $false
              }
            }
            ELSE 
            {
              Add-WordText -text 'Message Manipulations not configured' -WDBuiltinStyle wdStyleBlockQuotation
            }
            #endregion
    
            #region Message Conditions
            $heading = 'Message Conditions'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            
            IF ($CallSetupRules) 
            { 
              
              Add-WordTable -Object $CallSetupRules.viewOverview() @GridTableBlack -NoParagraph -HeaderRow $false
              foreach ($item in $CallSetupRules) { 
                  Add-WordTable -Object $item.viewGeneral() @GridTableBlack -HeaderRow $false
                  Add-WordTable -Object $item.viewAction() @GridTableBlack -HeaderRow $false
              }
            }
            ELSE 
            {
              Add-WordText -text 'Call Setup Rules not configured' -WDBuiltinStyle wdStyleBlockQuotation
            }
            #endregion
    
            #region Message Policies
            $heading = 'Message Conditions'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
            IF ($MessagePolicy) 
            { 
              
              Add-WordTable -Object $MessagePolicy.viewOverview() @GridTableBlack -NoParagraph -HeaderRow $false
              foreach ($item in $MessagePolicy) { 
                  Add-WordTable -Object $item.viewGeneral() @GridTableBlack -HeaderRow $false
                  Add-WordTable -Object $item.viewLimits() @GridTableBlack -HeaderRow $false
                  Add-WordTable -Object $item.viewPolicies() @GridTableBlack -HeaderRow $false
              }
            }
            ELSE 
            {
              Add-WordText -text 'Message Policies not configured' -WDBuiltinStyle wdStyleBlockQuotation
            }
            #endregion
            
            #endregion
    
        #endregion
    
        #region Intrusion Detection
        $heading = 'Intrusion Detection'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
     
            #region IDS General Settings
            if ($section.Dev) 
            { 
            $heading = 'Intrusion Detection'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage     
            }
            #endregion
    
        #endregion
    
        #region Sip Recording
        $heading = 'Sip Recording'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
      
            #region SIP Recording Settings
            if ($section.Dev) 
            { 
                $heading = 'Sip Recording Settings'
                $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
                Add-mediantDocParagraph -heading $heading -headingtype 4 -text $text -NewPage 
            }
            #endregion
    
            #region SIP Recording Rules
            if ($section.Dev) 
            { 
            $heading = 'Sip Recording Rules'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            }
            #endregion
    
        #endregion
    
    }
    #endregion



if($section.Administration) 
{ 
    if($section.dev) { 
    #Administration
    $heading = 'Administration'
    $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
    Add-mediantDocParagraph -heading $heading -headingtype 1 -text $text -NewPage 
    
    #region Web & CLI
    $heading = 'Web & CLI'
    $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
    Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 

        #Local Users
        $heading = 'Local Users'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 

        #Authentication Server
        $heading = 'Authentication Server'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 

        #Web Settings
        $heading = 'Web Settings'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 

        #CLI Settings
        $heading = 'CLI Settings'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 

        #Access List
        $heading = 'Access List'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 

    #endregion

    #region SNMP
    $heading = 'SNMP'
    $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
    Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 

        #SNMP Community Settings
        $heading = 'SNMP Community Settings'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 

        #SNMP Trap Destinations
        $heading = 'SNMP Trap Destinations'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage        

        #SNMP Trusted Managers
        $heading = 'SNMP Trused Managers'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage         

        #SNMP V3 Users
        $heading = 'SNMP V3 Users'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage         

    #endregion
    }
}


if($section.Troubleshoot) { 
    if ($section.dev)  
    { 

    $heading = 'TroubleShoot'
    $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
    Add-mediantDocParagraph -heading $heading -headingtype 1 -text $text -NewPage 
    
        #region Logging
        $heading = 'Logging'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
    
            #Syslog Settings
            $heading = 'Syslog Settings'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 

            #Settings
            $heading = 'Logging Settings'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 

            #Filters
            $heading = 'Logging Filters'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
    
        #endregion
    
        #region Call Detail Record
        $heading = 'Call Detail Record'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage
    
            #Call Detail Record Settings
            $heading = 'Call Detail Record Settings'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
    
            #Test CDR Format
            $heading = 'Test CDR Format'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
            
            #SBC CDR Format
            $heading = 'SBC CDR Format'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 

        #endregion
    
        #region Test Call
        $heading = 'Test Call'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
                
            #Test Call Settings
            $heading = 'Test Call Settings'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
    
            #Test Call Rules
            $heading = 'Test Call Rules'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
    
        #endregion
    
        #region Debug
        $heading = 'Debug'
        $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
        Add-mediantDocParagraph -heading $heading -headingtype 2 -text $text -NewPage 
    
            #Debug Files
            $heading = 'Debug Files'
            $text = $mediantDocText."text$($heading.replace(' ','').replace('&','').replace('/',''))"
            Add-mediantDocParagraph -heading $heading -headingtype 3 -text $text -NewPage 
    
        #endregion
    }

}
 



if($section.Appendix) 
{ 
    Add-WordBreak -breaktype NewPage
    Add-WordBreak -breaktype Paragraph
    Add-WordText 'APPENDIX A - Config.ini' -WDBuiltinStyle wdStyleTitle
    $wd = (Get-WordDocument)
    $wd.Application.Selection.Font.size = '9'
    $wd.Application.Selection.Font.name = 'Courier New'
    switch -regex ($MediantConfigini) 
    {
      '^((;.*)|(\[.+\])|(.+?\s*=.*))$'  
      {
        Write-Verbose "$_"
        $wd.Application.Selection.TypeText("$($_)`n") 
      } 
      default 
      {
        Write-Verbose "Ignore -> $_"
      }
    }
    Remove-Variable -Name wd
}


Update-WordTOC

# SIG # Begin signature block
# MIINCgYJKoZIhvcNAQcCoIIM+zCCDPcCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUyZARCxAAc2ssYKDiRVhQdGAX
# hSSgggpMMIIFFDCCA/ygAwIBAgIQDq/cAHxKXBt+xmIx8FoOkTANBgkqhkiG9w0B
# AQsFADByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYD
# VQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFz
# c3VyZWQgSUQgQ29kZSBTaWduaW5nIENBMB4XDTE4MDEwMzAwMDAwMFoXDTE5MDEw
# ODEyMDAwMFowUTELMAkGA1UEBhMCQVUxGDAWBgNVBAcTD1JvY2hlZGFsZSBTb3V0
# aDETMBEGA1UEChMKU2hhbmUgSG9leTETMBEGA1UEAxMKU2hhbmUgSG9leTCCASIw
# DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAI9q03Pl+EpWcVZ7PQ3AOJ17k6
# OoS9SCIbZprs7NhyRIg7mKzxdcHMnjKwUe/7NDlt5mYzXT2yY/0MeUkyspiEs1+t
# eiHJ6IIs9llWgPGOkV4Ro5fZzlutqeeaomEW/ulH7mVjihVCR6mP/O09YSNo0Dv4
# AltYmVXqhXTB64NdwupL2G8fmTmVUJsww9abtGxy3mhL/l2W3VBcozZbCZVw363p
# 9mjeR9WUz5AxZji042xldKB/97cNHd/2YyWuJ8eMlYfRqz1nVgmmpuU+SuApRult
# hy6wNEngVmJBVhH/a8AH29dEZNL9pzhJGRwGBFi+m/vIr5SFhQVFZYJy79kCAwEA
# AaOCAcUwggHBMB8GA1UdIwQYMBaAFFrEuXsqCqOl6nEDwGD5LfZldQ5YMB0GA1Ud
# DgQWBBROEIC6bKfPIk2DtUTZh7HSa5ajqDAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0l
# BAwwCgYIKwYBBQUHAwMwdwYDVR0fBHAwbjA1oDOgMYYvaHR0cDovL2NybDMuZGln
# aWNlcnQuY29tL3NoYTItYXNzdXJlZC1jcy1nMS5jcmwwNaAzoDGGL2h0dHA6Ly9j
# cmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3JsMEwGA1UdIARF
# MEMwNwYJYIZIAYb9bAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LmRpZ2lj
# ZXJ0LmNvbS9DUFMwCAYGZ4EMAQQBMIGEBggrBgEFBQcBAQR4MHYwJAYIKwYBBQUH
# MAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBOBggrBgEFBQcwAoZCaHR0cDov
# L2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkFzc3VyZWRJRENvZGVT
# aWduaW5nQ0EuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggEBAIly
# KESC2V2sBAl6sIQiHRRgQ9oQdtQamES3fVBNHwmsXl76DdjDURDNi6ptwve3FALo
# ROZHkrjTU+5r6GaOIopKwE4IXkboVoPBP0wJ4jcVm7kcfKJqllSBGZfpnSUjlaRp
# EE5k1XdVAGEoz+m0GG+tmb9gGblHUiCAnGWLw9bmRoGbJ20a0IQ8jZsiEq+91Ft3
# 1vJSBO2RRBgqHTama5GD16OyE3Aps5ypaKYXuq0cnNZCaCasRtDJPolSP4KQ+NVg
# Z/W/rDiO8LNOTDwGcZ2bYScAT88A5KX42wiKnKldmyXnd4ffrwWk8fPngR5sVhus
# Arv6TbwR8dRMGwXwQqMwggUwMIIEGKADAgECAhAECRgbX9W7ZnVTQ7VvlVAIMA0G
# CSqGSIb3DQEBCwUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJ
# bmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNVBAMTG0RpZ2lDZXJ0
# IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0xMzEwMjIxMjAwMDBaFw0yODEwMjIxMjAw
# MDBaMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNV
# BAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNIQTIgQXNz
# dXJlZCBJRCBDb2RlIFNpZ25pbmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
# ggEKAoIBAQD407Mcfw4Rr2d3B9MLMUkZz9D7RZmxOttE9X/lqJ3bMtdx6nadBS63
# j/qSQ8Cl+YnUNxnXtqrwnIal2CWsDnkoOn7p0WfTxvspJ8fTeyOU5JEjlpB3gvmh
# hCNmElQzUHSxKCa7JGnCwlLyFGeKiUXULaGj6YgsIJWuHEqHCN8M9eJNYBi+qsSy
# rnAxZjNxPqxwoqvOf+l8y5Kh5TsxHM/q8grkV7tKtel05iv+bMt+dDk2DZDv5LVO
# pKnqagqrhPOsZ061xPeM0SAlI+sIZD5SlsHyDxL0xY4PwaLoLFH3c7y9hbFig3NB
# ggfkOItqcyDQD2RzPJ6fpjOp/RnfJZPRAgMBAAGjggHNMIIByTASBgNVHRMBAf8E
# CDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDAzB5
# BggrBgEFBQcBAQRtMGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0
# LmNvbTBDBggrBgEFBQcwAoY3aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0Rp
# Z2lDZXJ0QXNzdXJlZElEUm9vdENBLmNydDCBgQYDVR0fBHoweDA6oDigNoY0aHR0
# cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNy
# bDA6oDigNoY0aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
# ZElEUm9vdENBLmNybDBPBgNVHSAESDBGMDgGCmCGSAGG/WwAAgQwKjAoBggrBgEF
# BQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAKBghghkgBhv1sAzAd
# BgNVHQ4EFgQUWsS5eyoKo6XqcQPAYPkt9mV1DlgwHwYDVR0jBBgwFoAUReuir/SS
# y4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQELBQADggEBAD7sDVoks/Mi0RXILHwl
# KXaoHV0cLToaxO8wYdd+C2D9wz0PxK+L/e8q3yBVN7Dh9tGSdQ9RtG6ljlriXiSB
# ThCk7j9xjmMOE0ut119EefM2FAaK95xGTlz/kLEbBw6RFfu6r7VRwo0kriTGxycq
# oSkoGjpxKAI8LpGjwCUR4pwUR6F6aGivm6dcIFzZcbEMj7uo+MUSaJ/PQMtARKUT
# 8OZkDCUIQjKyNookAv4vcn4c10lFluhZHen6dGRrsutmQ9qzsIzV6Q3d9gEgzpkx
# Yz0IGhizgZtPxpMQBvwHgfqL2vmCSfdibqFT+hKUGIUukpHqaGxEMrJmoecYpJpk
# Ue8xggIoMIICJAIBATCBhjByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNl
# cnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdp
# Q2VydCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBTaWduaW5nIENBAhAOr9wAfEpcG37G
# YjHwWg6RMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEMMQowCKACgAChAoAAMBkG
# CSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEE
# AYI3AgEVMCMGCSqGSIb3DQEJBDEWBBRZkhmivAQRHi7g6NpEBm/pmTCkjDANBgkq
# hkiG9w0BAQEFAASCAQBECY+4lG+cBFmw5GdBVERdR1m334q//MdihkbAugbdaTFm
# vvoxylZNZaQe0wPPCM2JueK0D588vkgG+BkqTSjszy3tNASGuItg6FCLKxN/o8k2
# 6rYKV3/t/exPvLqQmCjj+Rg9J7azWumstmJezYpoXamG3QpApJPU4U5QTig+CSYC
# FfT5/hgOCGt8oGwplnbYCi1vcc18tUTz0hc0UvKyUhcs3Vi3AqWxJoc3KPQI/rNd
# +aT2xFb3EafwtnhTq7NNBFf8ADTsd+p1fwhIKvzCmai1A6RLM8eEXL6V75GWccjF
# fHaZ7AYOdYJZ3F5stLjhG5jPKl1VO1nBQtdYt+1O
# SIG # End signature block