@hpcc-js/comms 2.83.0 → 2.83.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es6.js +525 -458
- package/dist/index.es6.js.map +1 -1
- package/dist/index.js +525 -458
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.node.js +525 -458
- package/dist/index.node.js.map +1 -1
- package/dist/index.node.min.js +1 -1
- package/dist/index.node.min.js.map +1 -1
- package/lib-es6/__package__.js +2 -2
- package/lib-es6/ecl/query.js +102 -34
- package/lib-es6/ecl/query.js.map +1 -1
- package/package.json +2 -2
- package/src/__package__.ts +2 -2
- package/src/ecl/query.ts +65 -42
- package/types/__package__.d.ts +2 -2
- package/types/ecl/query.d.ts +5 -2
- package/types/ecl/query.d.ts.map +1 -1
- package/types-3.4/__package__.d.ts +2 -2
- package/types-3.4/ecl/query.d.ts +5 -2
package/dist/index.node.js
CHANGED
|
@@ -46,8 +46,8 @@ var tmp__namespace = /*#__PURE__*/_interopNamespace(tmp);
|
|
|
46
46
|
var trustwave = "\nTrustwave Secure Global Extended Validation CA, Level 1\nSecureTrust Corporation\n00F6F61CE4A3635BB0CA8AACEEFCB2D0F0\n-----BEGIN CERTIFICATE-----\nMIIE+DCCA+CgAwIBAgIRAPb2HOSjY1uwyoqs7vyy0PAwDQYJKoZIhvcNAQELBQAw\nSjELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRkwFwYDVQQDExBTZWN1cmUgR2xvYmFsIENBMB4XDTE1MDgxMjIwMTcyOVoXDTI1\nMDgwOTIwMTcyOVowgbgxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQ\nMA4GA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\nbmMuMUAwPgYDVQQDEzdUcnVzdHdhdmUgU2VjdXJlIEdsb2JhbCBFeHRlbmRlZCBW\nYWxpZGF0aW9uIENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdh\ndmUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx6D45slgLGq8\n2G/NPFnuFscv7UM1eRoQyx3h0DdSTfoRvHkkNv4Gf6OudZDOXqwV86v/SjcNEP87\nnjMOEqQ7dKQPtiYzEkK0MOrjbRySFC5dvCTI9T8tnBgFpYA9YXwbpUqXxEi0Ayoq\nhA7UQhS7Q+YGrVwZaJ6LiWrQw+x8ACPLqEvPmMZhrxagKwrsKbylMsAQ1ljk8X74\nJ76TSxi/AZpxos7tHD0XbO8elXFZexfsgPLDRpMs6jREVeQj1jVCWLtg9twiXzcI\naUCchBsTSc92WGkKwBnH70dlL2N8kT/BNe3tAsXuBpZRILANY59jLrLnHEJNfado\nt6ZpougolQIDAQABo4IBaDCCAWQwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4E\nFgQUx33qXRmrVNT6P+ZKc956sjwdbC4wDgYDVR0PAQH/BAQDAgGGMD0GA1UdIAQ2\nMDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\nY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\nbS9TR0NBLmNybDBsBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9v\nY3NwLnRydXN0d2F2ZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3\nYXZlLmNvbS9pc3N1ZXJzL1NHQ0EuY3J0MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggr\nBgEFBQcDATAfBgNVHSMEGDAWgBSvRATCQX5Ig9tOOQLs7IR65s7JpDANBgkqhkiG\n9w0BAQsFAAOCAQEAkn/4wKQRLo41fDRkZtfF+3o8JtUmfQXf2zoo9Ll29hhCiz8k\nBOpIek9MrFd/cdNgUw1nckIi+J3udyFrbO5p64JBvtc0K4kAOPFSKpHssFcnRLPx\nFXgGxXq6ohD4Py+xaEApslYFfMy89N6DKs/v/10/+/xD831RFEUMUoQxBimsmmNf\n+cLoMwF5bpoSz9JcWqCmSlK0Nla1dPphaoA/MObLN2iQPpeM3yF5dTUm1tPxe39W\nOlr6nLU1xO+yRDrlGLXrVDP1l1/qGVuwi+xufIAcdFycLLBjSSNX7LOIK3tbva7A\nWctLUs+qhIlUrbPyFERm7YOY4SttWdozeYFNfg==\n-----END CERTIFICATE-----\n\nSecureTrust Domain Validation CA, Level 1\nSecureTrust Corporation\n06F1EC00E80B1BAF9870A7C4B6CBE401A32D68\n-----BEGIN CERTIFICATE-----\nMIIEfzCCA2egAwIBAgITBvHsAOgLG6+YcKfEtsvkAaMtaDANBgkqhkiG9w0BAQsF\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\nMDEyOTEyNTk1OVowfDEyMDAGA1UEAxMpU2VjdXJlVHJ1c3QgRG9tYWluIFZhbGlk\nYXRpb24gQ0EsIExldmVsIDExFDASBgNVBAoTC1NlY3VyZVRydXN0MRAwDgYDVQQH\nEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggEiMA0G\nCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjRHBw8iIivBBrfE6HqexQK0oMt2Y/\nx8jO3fN96KEazZwEoGidwloRBk2Q7VfVvZ0ZDk+qwJZGLZJLS1ntGaZLH4/Iel+r\nPnp36IVF7J5MNDB+K81a/y9svEMfDu0p3FdlBUyhHvizZ/zFNP3tolmQfZ7T0mGL\n7lutlNAzFYoVTUlVeF5cSC8Yca906TEKyizYXuXcY8Diee+t+fQRHmSI5Hk5kyXD\nYFWcf2tXEfdkuFlDjJ7HPdFyfJzrNjD+cbqt8R5rZKnK1GNVP1dXm0cIYS+BMlMa\nCC1yF18oygbnOZLw5fDv9bxs4MOgF8E/Iypw0hLQHVkuD8wAvxVgPsqvAgMBAAGj\nggEsMIIBKDASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjATBgNV\nHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQUYt6tehfefLfDfCMXo7Em5UbXOvQw\nHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wQQYDVR0gBDowODA2BgRV\nHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMuc2VjdXJldHJ1c3QuY29t\nL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9T\nVENBLmNybDA2BggrBgEFBQcBAQQqMCgwJgYIKwYBBQUHMAGGGmh0dHA6Ly9vY3Nw\nLnRydXN0d2F2ZS5jb20vMA0GCSqGSIb3DQEBCwUAA4IBAQAHXPYhl+++o//di2Qm\naWGmC1ijxbGbKA4jOSDRvQfxlWOVkqPF11Dpxz+V8Rxw7QFFVoJ5mHpfoXtQOijV\ntsCFknxTKgzQeArNkZrkXBNpYOJAcuc5v0eX0OllBWgVdIvZRl2TM5L/u1WFrlPr\nqwWdEYTkinQwgAHXVV/7WZi6c4StcqNnlw93mlvN6Vspzaf/mWtcYp+aqT9vrqHt\nyNR1k8Ri5eIRPIU0B8woiXTj3bifLg6/O217SY5cWwQKCMFsa6nGWoRVCJ0JJXa0\nZ+m3mPQD2OcW5YMrynhL2VWohyfZAjB8l/NZaeRT7M+vki56fxbx3Bk2lqy8Z1Zz\nWd5m\n-----END CERTIFICATE-----\n\nSecureTrust Extended Validation CA, Level 1\nSecureTrust Corporation\n06F1EC00E31E46D341B2B2633CE480D915F81D\n-----BEGIN CERTIFICATE-----\nMIIEizCCA3OgAwIBAgITBvHsAOMeRtNBsrJjPOSA2RX4HTANBgkqhkiG9w0BAQsF\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\nMDEyOTEyNTk1OVowfjE0MDIGA1UEAxMrU2VjdXJlVHJ1c3QgRXh0ZW5kZWQgVmFs\naWRhdGlvbiBDQSwgTGV2ZWwgMTEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxEDAOBgNV\nBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUzCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANS6vRtFpCJBJ7zJODH07Y3k54Qn\nVIBhnQmmWoqFqzCVMX97GAyAfzjcQrhl/TNiJiRCrVQWPI4n0R8eUd91Ab1Qzfsr\nnp+0NRbagVDa6+nF0KcNxbSZ6/iZQ7Ac3HyhCvJS2rH2CVYlzqdsrxDXcZk69jOO\ndPV8+w+7eNIn34BKpB/ZF7iXApDoAKG81kg1VtpGOxJhxTsKLuJmURT4pQjtZqF+\nF6rN64j5T2DOK0gOA4G7BLoTdOQuXkPS38LXKgZ43lKqEenjmiOaMF/XuLYzaHrW\nGYgCM2wJsykgdB9hCsTTEwsHRZzt2q9mLBDvYYWVhql1/kR4K/RN4JdESEECAwEA\nAaOCATYwggEyMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGGMB0G\nA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAdBgNVHQ4EFgQUA6uAxlUKKpWh\n4Nf+GubAynjMsJYwHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wQQYD\nVR0gBDowODA2BgRVHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMuc2Vj\ndXJldHJ1c3QuY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1\nc3R3YXZlLmNvbS9TVENBLmNybDA2BggrBgEFBQcBAQQqMCgwJgYIKwYBBQUHMAGG\nGmh0dHA6Ly9vY3NwLnRydXN0d2F2ZS5jb20vMA0GCSqGSIb3DQEBCwUAA4IBAQB1\nfzAmGGmtbJyIvOfjq2McCpUoYkXAq6JTN51+nb9NDAihhDoTKMde+801bC1/l54h\nxPPm4HImM6GK6LFckDew/FGwbdRbEznUOJ7uVL5ploNBIjte23kTBUZa9fx3+aXK\nhUTAipSyPtNjnOwVVBVXzrMynfMhdsyRRe7gLXNFYCXIxtks3IkIpuYnc86NAuV9\nnBLFlZzgmbAsW+tMc5QsNvQJ9pQ539K8cqZaM+HFCScreDERxmNtHHbMw+hCa2yL\nOj4ntekgWLO8KQbE0lPUNLIM17QK8aktJavj+GezBztKMmJJwhVYQy9nxS388ApX\nxcZsEgIzOCeH0SOWg4FA\n-----END CERTIFICATE-----\n\nSecureTrust Organization Validation CA, Level 1\nSecureTrust Corporation\n06F1EC00E58E9ADD372C871D25843FDAB852D9\n-----BEGIN CERTIFICATE-----\nMIIEkDCCA3igAwIBAgITBvHsAOWOmt03LIcdJYQ/2rhS2TANBgkqhkiG9w0BAQsF\nADBIMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRp\nb24xFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE5MDEyOTEyNTk1OVoXDTI5\nMDEyOTEyNTk1OVowgYIxODA2BgNVBAMTL1NlY3VyZVRydXN0IE9yZ2FuaXphdGlv\nbiBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMRQwEgYDVQQKEwtTZWN1cmVUcnVzdDEQ\nMA4GA1UEBxMHQ2hpY2FnbzERMA8GA1UECBMISWxsaW5vaXMxCzAJBgNVBAYTAlVT\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4QVBCdYToXFIfzd1SQfi\nTEgg1bwHXM2cE2VsyxwWK8NEFH8zMYdKy2hYOAjbfpm0xE6q4TQzS8KL2vAtCNyY\nVrwX7d3IvKR25H5s1LUDeQXSl1JBBZCtgJf2caJcwaYa6n2pZ0EKt3wBB+QteSFn\n57ENB37T13y7Nn8gCt9ZZaPYqRWxHcPaIWO3CVzQZ3tXjCLqzJMCV2KqhK85DZk3\nwo33Zb6cyYDkerDbWyric+10dJ/wdgE49dkfyZxVxEGpHg1SCSJdHjGb4z85Zx/u\neBpxBS6g3dfrkDjjT3MUxyNS4EaRTZp7o/2EqVCYDWJDM1HcOZL64kyWyi0d9jqA\n7wIDAQABo4IBNjCCATIwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMC\nAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBR/QuNI\nbljpLrlhyGp3tPcDuM1qWjAfBgNVHSMEGDAWgBRCMrYW+gT9/l1LesP990xAHVpD\nrzBBBgNVHSAEOjA4MDYGBFUdIAAwLjAsBggrBgEFBQcCARYgaHR0cHM6Ly9jZXJ0\ncy5zZWN1cmV0cnVzdC5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2Ny\nbC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMDYGCCsGAQUFBwEBBCowKDAmBggrBgEF\nBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbS8wDQYJKoZIhvcNAQELBQAD\nggEBAIwGM/ejz4Hbjf7Vc11gS8jzf+BwtZq9N4t1Nibj4rIDsW2G2jDE0S7fCN2m\nMhq76xkfnwfXhBbXDEKz6rj/M0G2u1kHw4Y8ZtKSzYEyRtgpeBFm4qU6voCSREpD\nFJXsL+Go2/YLRSE6xkWVSocklxppx4hi5o/RVdMMQept6ooOSFzBpH5XZYUoblKi\n99Yj0FUe8egIa9qSts42TObTpH1YVRMDnH3k2MNX3rcgPf9v/QO9Cf8W6RQ2+X3R\nCaYMPdL5OIKh4RGYjxXe3LpgiTKBWik/ZWTFL5sZSjetrJFl50NONzTc8E+BJtrx\nVCHAI2OcWyloxrYd4zMipw0YjDw=\n-----END CERTIFICATE-----\n\nTrustwave Domain Validation SHA256 CA, Level 1\nSecureTrust Corporation\n00DDEDF6F64298490E694C36EFA422C88F\n-----BEGIN CERTIFICATE-----\nMIIE7jCCA9agAwIBAgIRAN3t9vZCmEkOaUw276QiyI8wDQYJKoZIhvcNAQELBQAw\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNDEwMDExOTIyMzJaFw0yNDA5\nMjgxOTIyMzJaMIGvMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\nLjE3MDUGA1UEAxMuVHJ1c3R3YXZlIERvbWFpbiBWYWxpZGF0aW9uIFNIQTI1NiBD\nQSwgTGV2ZWwgMTEfMB0GCSqGSIb3DQEJARYQY2FAdHJ1c3R3YXZlLmNvbTCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNr4Z91k7AKM+Pz5XXWTIuVeMts\nPU2W/pI4WdEHG9Zab1EOWPLbthB6fzUJLLLBBk1wy2OM9yG1HywB/CwfGHcoKS8Z\n/efGV+ZKTzEpIestriUWx7wUnzxKzGML48Xv7sNuY1Crru5Hgce1Ax5uOfP7OB6t\norbMunvKQC10WcSrqFg6LapZ0UhgGmQzdjYguOBF6WZJR3QLghQaNrSUZuA6neXR\ncUsBgmzrxiEVHyzt+lmnYFMFvKVwGOyIZ2RU2LAFthS6UDDrSLGsJysxc1MK1Sti\n/VP8e8wj9rJdmiWNfA+lz6hDAPzRbv+WVJNoHEGbIx8rai+rVMiLy2HIbPsCAwEA\nAaOCAWkwggFlMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPQc4jqvtqTk\n2emd/u8cd6VjPe+IMA4GA1UdDwEB/wQEAwIBhjBIBgNVHSAEQTA/MD0GDysGAQQB\nge0YAwMDAwQFAzAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\nY29tL0NBMDIGA1UdHwQrMCkwJ6AloCOGIWh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\nbS9TVENBLmNybDBsBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9v\nY3NwLnRydXN0d2F2ZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3\nYXZlLmNvbS9pc3N1ZXJzL1NUQ0EuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8G\nA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0GCSqGSIb3DQEBCwUAA4IB\nAQAjoDrTysopn7t+onDZ6rZSQW8rYlWZQpSiNHrq9xAAcMExrhcN0bQC9OQ+VRci\noMDascvwum7hVkyh2w2Ad7lC3Ir9gIuA8HycjqQJ4t1eSF3geYyf8lp259ztZ/TO\nxSAwJ9W0Szc8fslOA0SWlyA3lnRVcYVu54Idc1dPXXBxwlQ1NUCYgcsXZs+6QjLL\nYhYL85DhuitQSddoYemGpfVJnaYH9tBiWmwtzwc4qsVqTsKEJ/1zYAy2GrEAv8sB\nFKSfMNMopBmmDA8/aCIW/tH6KTD2DC15QQwL6yAUbSa5mhzFSA9O8zmF881YwBVG\nn+z3isMPClgpNw/eWSbaSLZ+\n-----END CERTIFICATE-----\n\nTrustwave Domain Validation SHA256 CA, Level 1\nSecureTrust Corporation\n390A3F7EECA8FB4347DCAF701861662B\n-----BEGIN CERTIFICATE-----\nMIIE/zCCA+egAwIBAgIQOQo/fuyo+0NH3K9wGGFmKzANBgkqhkiG9w0BAQsFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE2MDkwMTE0MzUzMloXDTI0MDky\nOTE0MzUzMlowga8xCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\nMTcwNQYDVQQDEy5UcnVzdHdhdmUgRG9tYWluIFZhbGlkYXRpb24gU0hBMjU2IENB\nLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIBIjAN\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs2vhn3WTsAoz4/PlddZMi5V4y2w9\nTZb+kjhZ0Qcb1lpvUQ5Y8tu2EHp/NQksssEGTXDLY4z3IbUfLAH8LB8YdygpLxn9\n58ZX5kpPMSkh6y2uJRbHvBSfPErMYwvjxe/uw25jUKuu7keBx7UDHm458/s4Hq2i\ntsy6e8pALXRZxKuoWDotqlnRSGAaZDN2NiC44EXpZklHdAuCFBo2tJRm4Dqd5dFx\nSwGCbOvGIRUfLO36WadgUwW8pXAY7IhnZFTYsAW2FLpQMOtIsawnKzFzUwrVK2L9\nU/x7zCP2sl2aJY18D6XPqEMA/NFu/5ZUk2gcQZsjHytqL6tUyIvLYchs+wIDAQAB\no4IBezCCAXcwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU9BziOq+2pOTZ\n6Z3+7xx3pWM974gwDgYDVR0PAQH/BAQDAgGGMDIGA1UdHwQrMCkwJ6AloCOGIWh0\ndHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9TVENBLmNybDA9BgNVHSAENjA0MDIGBFUd\nIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9zc2wudHJ1c3R3YXZlLmNvbS9DQTBs\nBggrBgEFBQcBAQRgMF4wJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnRydXN0d2F2\nZS5jb20wNQYIKwYBBQUHMAKGKWh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9pc3N1\nZXJzL1NUQ0EuY3J0MBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFEIy\nthb6BP3+XUt6w/33TEAdWkOvMBsGA1UdEQQUMBKBEGNhQHRydXN0d2F2ZS5jb20w\nDQYJKoZIhvcNAQELBQADggEBAFcdG0/3P/CkeGb76tz/mn1viDZiftD05i9Jw70k\nH9ulRwdCHgzhSZVN5zHvG919oHA9WHbxH04J+iAnVl1+FjoDNN+A+2icy2WXqH9w\ngaNUGyUwLdo0JCfgUeGbrCF6WUYCj47pS7zAY02CdGlstZZsqouXK3RnOMKOD3Dq\nf5kiSh56KvhW/F0OZY7PAbdV79LVAiSTiAFdoe/jMjmj8fqXOiCIjllqH/O9/DAm\nRwQStFpauwR+nBbFhq4sYwlZQvJ0NvIxN5JOTECTkMM+X21kf8mrwRdxBfw0YEPa\nUTeZhFr48Fwvnt4jpo7gqpJzt7jjsbWPd1FHtey2Q8zmSHY=\n-----END CERTIFICATE-----\n\nTrustwave Extended Validation SHA256 CA, Level 1\nSecureTrust Corporation\n00C1BD27B383958D0D8BCA5E4F08D009D9\n-----BEGIN CERTIFICATE-----\nMIIFGDCCBACgAwIBAgIRAMG9J7ODlY0Ni8peTwjQCdkwDQYJKoZIhvcNAQELBQAw\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNDEwMTMxODE3MzlaFw0yNDEw\nMTAxODE3MzlaMIGxMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\nLjE5MDcGA1UEAxMwVHJ1c3R3YXZlIEV4dGVuZGVkIFZhbGlkYXRpb24gU0hBMjU2\nIENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIB\nIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAre9mHLqiv689FWIk7PaeQLuW\nos8ldRX4rNLHeD7/X7JrTfaXuIQaLfrUODtyRaZs0LtJsEHgpr7dUonDIH69PjBP\nrHg+hBLu7ob4udEx3J03NQSdnR/fqPY0ZMH2NP7e9TFSKKctZ/SmzA8jGclVmdiT\nGg1bTx6xgWuPWq9OprIQSgkP5NRe1GeTQ7U/E1zxLqaw6PeQWjESHPGeilyw0jr6\nqVyHM5ack9ps60sN3CKNGushyaQe3w2bYxRJ9RRH/sILCAmmTbjc/cXrGQMGdaYt\naiGnXbc45r39cqfbynZ71hPPNEtFbOdqk3C7I8vrhIHiKaAtFkTMRSWmHHk4HwID\nAQABo4IBkTCCAY0wEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU5eQkWRUy\nJ8kgs0ICbLDvMt6bIFowDgYDVR0PAQH/BAQDAgGGMGYGA1UdIARfMF0wDAYKKwYB\nBAGB7RgDADAOBgxghkgBhv1kAQECBAEwPQYPKwYBBAGB7RgDAwMDBAMDMCowKAYI\nKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwMgYDVR0fBCsw\nKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMGwGCCsG\nAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudHJ1c3R3YXZlLmNv\nbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMv\nU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8GA1UdIwQY\nMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0GCSqGSIb3DQEBCwUAA4IBAQCly1p1\nrvcOlRS+ODBLb2kYHd4q+cXDl65X+IQ7hOlXg9dpa7CzSAGNNpzhyYMbE48mB/RE\nBXxbZkMzEhWPFj+4jdGNsmX0zjEWatJWsnNVxpA7hDR0iZssezu86oDQ/sbVoaXj\n0a5jB2cZsnMS5287CNDk5i+ImruhbMAYV9sadliXoDy3y01Sv+FLMx39C5UhYhWU\ngvoT9igbSCoc/DPOukEDqsnKMmDqTf3JzuFI1CbJcR6M8R1hAda4mZrxIdGcbT8R\nXp8JQ8Vuv/+plPMcAiZ2Bzed0hPVr5A1Mz8K8w9OyORGlRwjWS65jsr26bjMCcfj\npvuAANrc0Alu4nJC\n-----END CERTIFICATE-----\n\nTrustwave Extended Validation SHA256 CA, Level 1\nSecureTrust Corporation\n35962F305C5A0BEC400D4E9877528C65\n-----BEGIN CERTIFICATE-----\nMIIFCzCCA/OgAwIBAgIQNZYvMFxaC+xADU6Yd1KMZTANBgkqhkiG9w0BAQsFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE2MDkwMTE0MzUzNFoXDTI0MDky\nOTE0MzUzNFowgbExCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\nMTkwNwYDVQQDEzBUcnVzdHdhdmUgRXh0ZW5kZWQgVmFsaWRhdGlvbiBTSEEyNTYg\nQ0EsIExldmVsIDExHzAdBgkqhkiG9w0BCQEWEGNhQHRydXN0d2F2ZS5jb20wggEi\nMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCt72YcuqK/rz0VYiTs9p5Au5ai\nzyV1Ffis0sd4Pv9fsmtN9pe4hBot+tQ4O3JFpmzQu0mwQeCmvt1SicMgfr0+ME+s\neD6EEu7uhvi50THcnTc1BJ2dH9+o9jRkwfY0/t71MVIopy1n9KbMDyMZyVWZ2JMa\nDVtPHrGBa49ar06mshBKCQ/k1F7UZ5NDtT8TXPEuprDo95BaMRIc8Z6KXLDSOvqp\nXIczlpyT2mzrSw3cIo0a6yHJpB7fDZtjFEn1FEf+wgsICaZNuNz9xesZAwZ1pi1q\nIaddtzjmvf1yp9vKdnvWE880S0Vs52qTcLsjy+uEgeIpoC0WRMxFJaYceTgfAgMB\nAAGjggGFMIIBgTASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTl5CRZFTIn\nySCzQgJssO8y3psgWjAOBgNVHQ8BAf8EBAMCAYYwMgYDVR0fBCswKTAnoCWgI4Yh\naHR0cDovL2NybC50cnVzdHdhdmUuY29tL1NUQ0EuY3JsMD0GA1UdIAQ2MDQwMgYE\nVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NB\nMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudHJ1c3R3\nYXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lz\nc3VlcnMvU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8G\nA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMBsGA1UdEQQUMBKBEGNhQHRy\ndXN0d2F2ZS5jb20wDQYJKoZIhvcNAQELBQADggEBAGUMIDkrvlMJ0wHLuP3lkneC\nwGU6mZ3g17jyU2RJwhRinYctraryG7Jh20DQ9/ppTHoxTIADw2JDsC5ByplabteQ\nnLghrl17K1b6PO+rzWA/NFKVwo6u8Gh7Lz0iUuit7ZBD4eKcRedxRZcPQlnD9KTR\nIs94SRpootsuCv/Y5b+1FMPV1KrYtbco9yEVlaNEWLpmiEsqvLjxiWEmt71rzz+0\nS59OtA/ihnbGP9Xrnhe7wf1ybCNOO5gZQMKr/OszfLZ7oVKACGOPLlcSZRRW98gA\nszE+1ZvlHkdjamfTSs4yMvUorYn9NhXnjAWl28NuD9m3FPiE2O50ezEDnHTiaOQ=\n-----END CERTIFICATE-----\n\nTrustwave Organization Validation SHA256 CA, Level 1\nSecureTrust Corporation\n4B2C6646F434775B67DF34A04DD504E6\n-----BEGIN CERTIFICATE-----\nMIIE/TCCA+WgAwIBAgIQSyxmRvQ0d1tn3zSgTdUE5jANBgkqhkiG9w0BAQsFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTE0MTAwMTE5MjIzNloXDTI0MDky\nODE5MjIzNlowgbUxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEQMA4G\nA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMu\nMT0wOwYDVQQDEzRUcnVzdHdhdmUgT3JnYW5pemF0aW9uIFZhbGlkYXRpb24gU0hB\nMjU2IENBLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29t\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA49OohlJHBJ/juiQTmibO\nS28pHvCCp1bPOc6elQ62DCYE/A14JXUtI8yaUc9nFjh6dNzR7KjFPEq/qDplQl7f\n1Tvh5ifBNNP2wQ6e820TWlPO4HhR/5g4+3iFmJ1N7kFrxDp1/P8e3+9lcJsXckXC\ntfFkQ9slogJqnaCsipgdrH4gQhicFAL5YqHw2AKfctZLSPpxhI3xISMV/lIQwZPW\nI2221v9ALckokh5pW6dTK8x8yNUUye1zt5msWzqunfBjVYVUj5/LXu46hS99Mfxu\n80ARJRyHsXIuHbMzwVXGqKVPZfKAdHBl5e3ElCjNwNy+Hgi09vS7PoAUhjCf/wbO\nnQIDAQABo4IBczCCAW8wEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUys4d\nGAN3HhzzfFiymnCoCIAW9K4wDgYDVR0PAQH/BAQDAgGGMEgGA1UdIARBMD8wPQYP\nKwYBBAGB7RgDAwMDBAQDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0\nd2F2ZS5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdh\ndmUuY29tL1NUQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0\ncDovL29jc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50\ncnVzdHdhdmUuY29tL2lzc3VlcnMvU1RDQS5jcnQwHQYDVR0lBBYwFAYIKwYBBQUH\nAwIGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFEIythb6BP3+XUt6w/33TEAdWkOvMA0G\nCSqGSIb3DQEBCwUAA4IBAQBN/Qb6x5VSQHIt/FqvXAkjfCI7jwXGzRoxThavUqv0\npJr1azXKv2L2ye9Sl4OCqiDHZ8ZJZ/Z19Ae1yvGTpG++0O5dWTHZ8qy/JSj17Mg1\nvWiefVpJKtkYflzhC9B9/eB3QuKVTRKDqm1ZC9kbm3MWOwtnEOw4WURWS1X2v4Hv\n2AJaXe11ZRqjx7/c6U50tYp3eVpRDCw7bOIXRffLG0oibhjHiEu8dgq7KkTSrx9m\nQFS6T2x9GLiJKhj2mEfPuGr73TfBPyKsRBymOpG67LThKVnwoUfH3pghA6VkZp5Z\n1Vm6AcDm+eelf5XPvZtNve4evLVPYueA3TmGyxXh1m2d\n-----END CERTIFICATE-----\n\nTrustwave Organization Validation SHA256 CA, Level 1\nSecureTrust Corporation\n0092B8744F71CED0E26C72A3D8D5D925B2\n-----BEGIN CERTIFICATE-----\nMIIFEDCCA/igAwIBAgIRAJK4dE9xztDibHKj2NXZJbIwDQYJKoZIhvcNAQELBQAw\nSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9u\nMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTAeFw0xNjA5MDExNDM1MzVaFw0yNDA5\nMjkxNDM1MzVaMIG1MQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAO\nBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5j\nLjE9MDsGA1UEAxM0VHJ1c3R3YXZlIE9yZ2FuaXphdGlvbiBWYWxpZGF0aW9uIFNI\nQTI1NiBDQSwgTGV2ZWwgMTEfMB0GCSqGSIb3DQEJARYQY2FAdHJ1c3R3YXZlLmNv\nbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOPTqIZSRwSf47okE5om\nzktvKR7wgqdWzznOnpUOtgwmBPwNeCV1LSPMmlHPZxY4enTc0eyoxTxKv6g6ZUJe\n39U74eYnwTTT9sEOnvNtE1pTzuB4Uf+YOPt4hZidTe5Ba8Q6dfz/Ht/vZXCbF3JF\nwrXxZEPbJaICap2grIqYHax+IEIYnBQC+WKh8NgCn3LWS0j6cYSN8SEjFf5SEMGT\n1iNtttb/QC3JKJIeaVunUyvMfMjVFMntc7eZrFs6rp3wY1WFVI+fy17uOoUvfTH8\nbvNAESUch7FyLh2zM8FVxqilT2XygHRwZeXtxJQozcDcvh4ItPb0uz6AFIYwn/8G\nzp0CAwEAAaOCAYUwggGBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMrO\nHRgDdx4c83xYsppwqAiAFvSuMA4GA1UdDwEB/wQEAwIBhjAyBgNVHR8EKzApMCeg\nJaAjhiFodHRwOi8vY3JsLnRydXN0d2F2ZS5jb20vU1RDQS5jcmwwPQYDVR0gBDYw\nNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5j\nb20vQ0EwbAYIKwYBBQUHAQEEYDBeMCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC50\ncnVzdHdhdmUuY29tMDUGCCsGAQUFBzAChilodHRwOi8vc3NsLnRydXN0d2F2ZS5j\nb20vaXNzdWVycy9TVENBLmNydDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH\nAwEwHwYDVR0jBBgwFoAUQjK2FvoE/f5dS3rD/fdMQB1aQ68wGwYDVR0RBBQwEoEQ\nY2FAdHJ1c3R3YXZlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAC0OvN7/UJBcRDXch\nA4b2qJo7mBD05+XR96N7vucMaanz26CnUxs1o8DcBckpqyEXCxdOanIr+/UJNbBL\nXLJCzNLJEJcgV9TjbVu33eQR23yMuXD+cZsqLMF+L5IIM47W8dlwKJvMy0xs7Jb1\nS3NOIhcoVu+XPzRsgKv8Yi2B6l278RfzegiCx4vYJv0pBjFzizEiFH9bWTYIOlIJ\nJSM57hoICgjCTS8BoEgndwWIyc/nEmlYaUwmCo9QynY+UmW1WPWmVITEJPMdMK6A\nZqvvaWmuHJ6/vURaz+Hoc5D3z0yJDDCkv52bXV04ZoF6cbcWry7JvNA+djvay/4B\nRR4SZQ==\n-----END CERTIFICATE-----\n\nSecureTrust TWG Secure Email CA, Level 2\nTrustwave Holdings, Inc.\n072F30E9C25181828DAC4F5F7DE4AFC87AD132\n-----BEGIN CERTIFICATE-----\nMIIG2zCCBMOgAwIBAgITBy8w6cJRgYKNrE9ffeSvyHrRMjANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMjAxMDA4MDY0OTQwWhcNMzAxMDA4MDY0ODQwWjBWMQswCQYDVQQGEwJVUzEUMBIG\nA1UEChMLU2VjdXJlVHJ1c3QxMTAvBgNVBAMTKFNlY3VyZVRydXN0IFRXRyBTZWN1\ncmUgRW1haWwgQ0EsIExldmVsIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK\nAoICAQCcD5Wc7H480gOv3ae6SELBls0oNOvpw1ZFjK55nLw+W6PhgqTGNEHlO/Ga\nWt13yS1iO1/WzRaUc2XsFRGcjv3QIfDZb+6UzhL1LL9ZE8zcs0B6fepn4smQg1yK\ngtAWGoD70Z9kEBtypkG23sO5xIiRACJWgRWVZ/891pQBBz+ElCxUnIyDGghHlWCD\nzn5dLoBIVic69Pfpi384uNoNfHV/WATUQEEnwY+5yMMUALAWrRD6Jeh5R4m9qKxG\nUlrO9ObDebK9mFEJvrCPtkTIWT1He4ZD58Lt0NIkaItQ7KsKF9wgwH7BTsRGwQXb\nP6/0LvfO8UDRKNE/4C39u9dwUw/Zpu2iNXTadVWBtaSDsrPFVb5rBu+pvn4l4Hw5\njtySyHAOWn4mhuxDXMuKBtaoTi/qF94d7N0CbqPdN9WSN79Cy2O0BexTGHSJVndX\nEbKyn96b5STPshKVpG9DmUekfnDtnHR9dmH74a05X/A8k/XeSJWXphM6NvyZap2A\nWiIkrS7MsfwnCdZlX+9WGY2qHxnm4Y6JdNah0qxozBbQHkqHsSN4k8O7zr2lfZhC\nuarm0Q1t6tjsmp7PUh26u6PCe0m+MctIrD6ZckUzZeuPduRb55K2p8MxjQSVNH1S\nJ2aaHp77qOYV+rvHXIL7le4OR5lDWyzYtXLc8u17/kLbUtgnmQIDAQABo4IBbTCC\nAWkwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAww\nCgYIKwYBBQUHAwQwHQYDVR0OBBYEFKpD9MNsQCriSoEcg6nez7XhG7bOMB8GA1Ud\nIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6HMEEGA1UdIAQ6MDgwNgYEVR0gADAu\nMCwGCCsGAQUFBwIBFiBodHRwczovL2NlcnRzLnNlY3VyZXRydXN0LmNvbS9DQTA1\nBgNVHR8ELjAsMCqgKKAmhiRodHRwOi8vY3JsLnNlY3VyZXRydXN0LmNvbS9UV0dD\nQS5jcmwwdAYIKwYBBQUHAQEEaDBmMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC5z\nZWN1cmV0cnVzdC5jb20vMDoGCCsGAQUFBzAChi5odHRwOi8vY2VydHMuc2VjdXJl\ndHJ1c3QuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQBb\ntCXryLFewOafyNENB3NzgAQVVztwaWSyvF5FYSqav95JKcoHZzy3wG7aKlTPtGnq\n1QzJst03qPmZJ3j63obz2AvfEEzLEMlsPmOTy3B9oIrNzd2QhpGW1oF6pIgGB/VP\n5zh7U2ibUC+zRLmihwt+j2+7NBbuLbPozgxDTWh2f9O4rJb5bv98Q8RdbGrypBb9\nhOhDvmNCCfjSe+Q8myqsvawEG5p7s8gsIK/V3xbyqDihXjsGc7xeEWNftlU91jBL\nKPRbrLmXhhWnHJjYs4y5IHu735HA3aAT4TqURS9dGHOMVDRumkFpLqR2W7ptpDki\nOtIFZjO5smU29OD4AlcNUXqQuKEFasyTtkRlORnWhU37c36HB8dc57xWQKOf8pMq\n7lK+ublO9G4mO1Aqr9mioTN4oMONFJG4W5dWwG9baNg682ZACkvPaw45MqSztL3A\nKb4s2cDTWu/D34hV3oafkTwu8B7B2mFZnWRJ9q4akPmZF45uw4RZx2ALaYGGGs67\n+r5qS300As9ONg8hxfVkFQSHOc00IiBkgi3OpoCofEKTgDwZwHVqOJyyPjk6H9Sh\nZANmUOT2mGDLwl86Ar5bTu8ipzlsyDYQMFjho7WaVs8I5OXyVdONXDYLIOtpITGT\n1fRcXFzxYHhrNuFwrdj2zBVyvVD4O6xV97/9nv2Eng==\n-----END CERTIFICATE-----\n\nTrustwave Global Domain Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9AD30465CF22697F246B101EC92953B\n-----BEGIN CERTIFICATE-----\nMIIHCDCCBPCgAwIBAgITBs6C2a0wRlzyJpfyRrEB7JKVOzANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBjjE3MDUGA1UEAxMuVHJ1c3R3\nYXZlIEdsb2JhbCBEb21haW4gVmFsaWRhdGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UE\nChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAwDgYDVQQHEwdDaGljYWdvMREw\nDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggIiMA0GCSqGSIb3DQEBAQUA\nA4ICDwAwggIKAoICAQChh5brvvk/kFUZwhlUhqdsUmsMCBjzYqBBLnTyNrKPr4nd\nS9s2h2JvA+9TY7NnJc/Mq1eN5V6zqvbn/LN3c8W06f76xrVvFEKs5SzCefUS/V3Z\nC18dgwXXFrP+RgfK2kqfTHGIPrWoRSnUiLn3iUNEBtJ06oXjAqAMnAyL5AzD+eHm\nZzRK/yCw/gMPnVp2S7Dstka607fS4fW9Sl33mOMNwJRxEjQWHHR25PAb4muP6wjN\nvmoLMgiDMKseHSFVtC7SpmO89PsrUV6MahKJrZcAfquAyoO1zR2c2eGaCI/m8oSx\n3B7KiMZJ3NZims/siMp/5szemsutf36WJ31nmr7PqLJGJdVpoxbLckWIhZnNYSFm\n/pTutpNONqpyYC2gGSXdw5LuxU61913SbAPpk8DZiHi3WslHBo26ghXG++sgJUGj\nhtKZhiYlp8uD21WTP6/60wngpXyCtt9cpHxW1lXmqcxwe2J4/2S3xjHz1dC6BKxb\nr61HCPVrbTD90CZUpMI8JPdsVbz5eegv+SIyybHxZe4S0D9Kv5pgWfqdXf0BAiJC\nTbGwYmFr4uisKhkfMThyOgWEH+CRBzQqdZREQ5lTIlVyzi3jGPuu9Q6brAS9U9Ue\nQhUwX8TtY8Igfo8HlhjugDpy6WvDYQ9i+tG3AC6v8sJLdOOU83Lr+2C1LEF5ZwID\nAQABo4IBYTCCAV0wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYw\nEwYDVR0lBAwwCgYIKwYBBQUHAwEwHQYDVR0OBBYEFIaZQQzOP7aMcEnlkwfwhgcd\nLXqVMB8GA1UdIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6HMD0GA1UdIAQ2MDQw\nMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29t\nL0NBMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9U\nV0dDQS5jcmwwbgYIKwYBBQUHAQEEYjBgMCYGCCsGAQUFBzABhhpodHRwOi8vb2Nz\ncC50cnVzdHdhdmUuY29tLzA2BggrBgEFBQcwAoYqaHR0cDovL3NzbC50cnVzdHdh\ndmUuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQAmn0jp\n+lNp188KxjKQZtpJ3mixLmuqGdH6SVpRs40BYQg/68xOPH3C6AJ17tqE6IwZMW9s\nlgiO4B7khR3ESA6Sct3zmkA8woR/KJVzzegjscHhtQUifQ+Eb9Gi0ORNnetGV+5g\n5vlrFZMptBRGUxXMo2xa+Z/NTyimpMopfXj7qCW/nQWQbzvkQGchK9IokyqV2wra\ntX68/P3zleG+LLwzoJd5AhHYSXWrIRJpClZHN+LQKkbI3MYW7+upo/1e9HEmFKxu\n5SFV3nuQm5wSOsz/ZtIL1AS8IoZYxcSe1Q/yuV9GjnxtL1jkPbzsBx4eBGxUrcIe\nsBat6SI8G58uHTpIPpqUxRYsg8w0FdjK3kNBB5QWDeXiDxzqIRzA0iE1kHeTXRZ3\n7qgGXUcce7ciW5KqeRApjQbD5BSZG2EKkQ7aaOhvxK0LiuxHZnjPW4/fdEcaCuku\nMT5qMDiF2U85V9BvanEy/xkYn4I2UeK4EdSXe7q6j+CIJz9WnoLQDbIS04GqIWe0\nVRQUlx3idUWYSJU/SG8KrEHhlJLmgSjshCwtT6qo4vHwT5WcWDLIbjMqgL1iQ6JS\n4gxXuOGia3d0I4/wec5x23EWwx9V8BtDJ8N7NDeRNmZ8RXOHSYJsVQYIQuFUEXE1\nv3WMSIxuyQMyR5FYSCG9xnKRFzNmiPngDil5IA==\n-----END CERTIFICATE-----\n\nTrustwave Global Extended Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D99FB3B180C281020314A2D1C7640017\n-----BEGIN CERTIFICATE-----\nMIIHFDCCBPygAwIBAgITBs6C2Z+zsYDCgQIDFKLRx2QAFzANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBkDE5MDcGA1UEAxMwVHJ1c3R3\nYXZlIEdsb2JhbCBFeHRlbmRlZCBWYWxpZGF0aW9uIENBLCBMZXZlbCAxMSEwHwYD\nVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xEDAOBgNVBAcTB0NoaWNhZ28x\nETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJVUzCCAiIwDQYJKoZIhvcNAQEB\nBQADggIPADCCAgoCggIBAMRO7orfWjfmz6Y6qoAmDp2lqCJcdvbRQ8w18rl1JE3j\nf/1CScZLrnLg4RDm8JiRcvFuvoMXn/XNUWy5ICG57tjG2nO7jvBuXfvbdkGA+foN\n3yJKMTX/PmmGlN4qpzFtsB0kLrP14/0TRGeJB7qDfAFH0ReFk0ftQobLBGBOpEca\n+bv+LhcTe40/uNUSK2yQ9GpIw200mcsD3B9c29Im4tSZFuA2o1vnEeizYW5M4sPX\nHu7p5ZCxjJrXVNqWUPM38rShhMUNL5uaVYWoi7TG5JXbg0Lmt2nq1k5nnig9Yp/W\nlAFooWXjKQzHf/z+XZ57bqPe7SzLW5pzpZdSmY2VRybAwEmzMjCXgHiP2ru3TpAD\n+giakPDoz3ZmbKjwYKZ5PmnOmXx0Z2GloO37MjamjPor/+fZohfyma7VAQE8znJt\nI9MVoRN3G3gW/tuT3jXfzYdFBlfGoO7OYyLN1LK5YBKH2qXrCHD8rG2DauBt7U+w\nfOvwfkp8FcdTnfQ92Xe65U3Xdu0eCgQJbChxZtWhhLnbY6xhmwAWyJ1my+Im72Kx\nGP/XcA8SH2sz6/k0782BjRckDuFpVVpTNYl9wqe/tuOrZhWPapOsRlfsDTuhgGu5\n2inM9sU3CAzmFE85zoRQFZQSof3kFN2rUZF20bmTak99cBNLli6/ja3+KntpZ08d\nAgMBAAGjggFrMIIBZzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIB\nhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwHQYDVR0OBBYEFHM4IMZH\nbabGL3tQ4EDe3sedR958MB8GA1UdIwQYMBaAFJngGWcNYtt2s9o9uFvo/ULSMQ6H\nMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50\ncnVzdHdhdmUuY29tL0NBMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwudHJ1\nc3R3YXZlLmNvbS9UV0dDQS5jcmwwbgYIKwYBBQUHAQEEYjBgMCYGCCsGAQUFBzAB\nhhpodHRwOi8vb2NzcC50cnVzdHdhdmUuY29tLzA2BggrBgEFBQcwAoYqaHR0cDov\nL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvVFdHQ0EuY3J0MA0GCSqGSIb3DQEB\nCwUAA4ICAQBwnSHECaf+hfGrm3Cg+aRr57ytoOSzI1DjlTNcM7k4uSt6kJRPHJ4c\nldIujMaETV52RgE6ykaMGkuIwQOIsLI6SXwjU1f5gXFUbDTS3KTWc/jwQeyLmdOe\nhvc+wBSFv8d10Sx/Qiti8mqsTqr0+N94Cx01+SkiWxWWoSZOAPkz8DMQGlD4yndK\nceTMGtQ03cLnD/36Mv6tz/Ds9l/OExrJGGxHD0tmYwYwBZpPHm7BBY2ZzycVxLcg\n+uuggcX1pg5MhJ1rDyod+7X+ilvTgH7ftHCmxvR7viMLwSUuytZ05zb2teRQgU+8\niWnPEHO/ADm5VD1Zb5Rx0579/YEENBJtGUPPJzo+JEpiZIOIlwZ69ETWWNCLZr0V\nvoi+SDl65cr+dgR9JreJ2I4W9FzS45ruxYEC8LGKEmV46sAk1YLbnIBmhehAKy9t\nP8RVz3QXYJ6rLOAuXF7R2eVV0SqfivW9bVzvBZTUTFsbdSMBAAF1BJjdRqYR63DI\ncQASY7CRoUiak1NTgPkzeV8VcNJmUt8c2eKJIifqBAjquH6+6UXs9Ol0aMPn6v0y\nB+TSuxhX2sSrpna9QcOh/QyoR5Hvcd81rZSbMc7yasKoUMXviotV1SfEqs3RU5Ts\nwnU4NHPn5ITRiuh5VMuvB/VnjnPC953u5uqAGtZ8BkC7X9cu5E0rMQ==\n-----END CERTIFICATE-----\n\nTrustwave Global Organization Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A69703AEFE5D37D18858C74026B004\n-----BEGIN CERTIFICATE-----\nMIIHGDCCBQCgAwIBAgITBs6C2aaXA67+XTfRiFjHQCawBDANBgkqhkiG9w0BAQsF\nADCBiDELMAkGA1UEBhMCVVMxETAPBgNVBAgMCElsbGlub2lzMRAwDgYDVQQHDAdD\naGljYWdvMSEwHwYDVQQKDBhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xMTAvBgNV\nBAMMKFRydXN0d2F2ZSBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcN\nMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBlDE9MDsGA1UEAxM0VHJ1c3R3\nYXZlIEdsb2JhbCBPcmdhbml6YXRpb24gVmFsaWRhdGlvbiBDQSwgTGV2ZWwgMTEh\nMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAwDgYDVQQHEwdDaGlj\nYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMwggIiMA0GCSqGSIb3\nDQEBAQUAA4ICDwAwggIKAoICAQC8BzZtA3eWejFOGHc2DLgex6P471dLWIIHSlrF\nY4a2BCtzAd/VlpQ3gslWnTgthOmK2/hCc+WSaOLPVZzZf3lGnxbb0+Y87Kx+nS1m\nIfJ/4OR6o8XLMLoCTAI1jsWxggiB4NBMqsW2xXQ5VAvBb66KEQYbshNlRpTbtBFq\nEed4YIvCdjbnCUOy1zubgVHUVyCFHzN4XPjEQCtT5vZM576Lt10Je9COnqG0CtPU\nQNP2tjnSmOOYdWcVRZ0UqXUl2fMBfmSDHd8902foigjpP04AYYbq6AetqEgqdvQP\nxz5pVbZqzy8UrE/s/raJLFyTuIAYVt18M0whSgWzGgUWkq2xRqbfn7b1hd56dwRb\nR7pKc51FyTbeocnKlYLC+Dlzp7iKQ3Pb7WHRwLhaJB7u4CzwqhUxHc0xplMYsq92\nMbZ6WN5L5mI7hxY8gLMOR7vNX9CKz9XcYRS01iCDe5Y/9muW8bzGyNXLX1YaHAy4\n+6ncksb3Y3RUKj3f0+T4nbiRISmGazravJKSssBLP3kPa9h5aX+Vd00eL+Q7sXrh\nFO7xz+oWtOL5rfVszyc87JQvjw1sDHA710nViqzUE1bJZNe61EXdCb/RV+Wsu+rO\ncAMSr5x2j/wW875sh+U3EJmTzdEBUBxHnBD2mDTyonT7wL47TRXTEO1IaS4mVbnv\no0jWvQIDAQABo4IBazCCAWcwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8E\nBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBS3\n/VNzOCaKcKuTyoupCOrH07fj/TAfBgNVHSMEGDAWgBSZ4BlnDWLbdrPaPbhb6P1C\n0jEOhzA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9z\nc2wudHJ1c3R3YXZlLmNvbS9DQTAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3Js\nLnRydXN0d2F2ZS5jb20vVFdHQ0EuY3JsMG4GCCsGAQUFBwEBBGIwYDAmBggrBgEF\nBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbS8wNgYIKwYBBQUHMAKGKmh0\ndHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9pc3N1ZXJzL1RXR0NBLmNydDANBgkqhkiG\n9w0BAQsFAAOCAgEAFXwfmELpEGKUguzVTMix79XbUnkfLa7IXcqBOrwOWEF1V8F1\nxGY6jLlUTtoEXRYZwCpqOK/i4m4nmWCYE45O7URR8nqeFffceTi62t4Yvh6LkC9g\nUnj3aChLiO/Zdxilq6vfsXO0mKafrGtZXwjyskS250Pj9DsANs57QqvYN4hqbplJ\nzc95p09OUvEhPiyRyx6FyY28U+3X6+mSNMJWd4Nhr+3HtvmItLIXP2JCLxuYtu/K\n6nKcpFCFFKeF8K3PWpjsAb0hfXL4vc3WfyCYsQnvJeisyAh7yEuge2iDwl1/xXIo\nEOAyyYAxvy5UnzcAa0Z2lwjptve+jZ4gQ+A1ioYUavR3pSfBNzuJW30nZCWFadKc\nNXOPoAPkK8JLxgRBH3JboeBCXG6xgy/pXrTjyhW7/SS+Z+7eKkp9jgdTVQ12yUtc\nCiYWUuM4l240D/z+s03WOEcLTluESwFkJhzs3D9i5crTL72uSkDDmlh8HXoPAyYO\nl3Mn9cGWhd8M8IeQRXmb6O7gvvQZDoSXDVDbjBKcW1lFpi0wBxIBzLaOi4CX4OhI\nJHJ/H3duOMaltuzXLSLkc26jwHzMeq8seQRSXraXJi1t5oBKlmEWFEgq6xlH7mLW\n3TOqS19cuiSWl/CsnlLGaW8MH5YHmk+MJxQE1BcLBs6ciapvHlhLEd9EUpU=\n-----END CERTIFICATE-----\n\nSecureTrust TWG ECDSA P-256 Secure Email CA, Level 2\nTrustwave Holdings, Inc.\n072F30E9C4627001DECFEBF6BF5D3B1066D7E3\n-----BEGIN CERTIFICATE-----\nMIIDbTCCAxKgAwIBAgITBy8w6cRicAHez+v2v107EGbX4zAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMjAxMDA4MDY0OTQxWhcNMzAxMDA4MDY0ODQxWjBiMQswCQYDVQQGEwJV\nUzEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxPTA7BgNVBAMTNFNlY3VyZVRydXN0IFRX\nRyBFQ0RTQSBQLTI1NiBTZWN1cmUgRW1haWwgQ0EsIExldmVsIDIwWTATBgcqhkjO\nPQIBBggqhkjOPQMBBwNCAAT4KazLm94aiykBGkNQVkBrjmK77RlP627D2n3EwK3s\n49ljRkN6wiTWXHx3jPD5BBE/7mWhGWnphzGu1Deb6yzco4IBdTCCAXEwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUH\nAwQwHQYDVR0OBBYEFHMQ2nwjQr8tFHfBImxM7ct8lbBYMB8GA1UdIwQYMBaAFKNB\nBqyQbdFK63WlShCZs7Ghi0r3MEEGA1UdIAQ6MDgwNgYEVR0gADAuMCwGCCsGAQUF\nBwIBFiBodHRwczovL2NlcnRzLnNlY3VyZXRydXN0LmNvbS9DQTA5BgNVHR8EMjAw\nMC6gLKAqhihodHRwOi8vY3JsLnNlY3VyZXRydXN0LmNvbS9UV0dQMjU2Q0EuY3Js\nMHgGCCsGAQUFBwEBBGwwajAoBggrBgEFBQcwAYYcaHR0cDovL29jc3Auc2VjdXJl\ndHJ1c3QuY29tLzA+BggrBgEFBQcwAoYyaHR0cDovL2NlcnRzLnNlY3VyZXRydXN0\nLmNvbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwIDSQAwRgIhAN8G\nPwKUpMgV3LZjq7fuKS96f15BrwBjmTlKhOwgX83BAiEA9WpWhzRRoKeJGAqqXrMk\nZ8RE9xRtOFBqYdv9H5CeTVk=\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-256 Domain Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9AF531423847B85FB677932AAF80508\n-----BEGIN CERTIFICATE-----\nMIIDmDCCAz+gAwIBAgITBs6C2a9TFCOEe4X7Z3kyqvgFCDAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBmjFDMEEGA1UEAxM6\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBEb21haW4gVmFsaWRhdGlvbiBD\nQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAw\nDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMw\nWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATWpfTIQFPkZIoXXMDN9utRU+AbLGcg\nBmLA06x2qqdcpCMlYFoJhuRWzYCiqz1mKrAvNlQYkgoHfemk92sf8iaro4IBaTCC\nAWUwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAww\nCgYIKwYBBQUHAwEwHQYDVR0OBBYEFA/DUGGZflb1xtmcOeiDWJAHuhq0MB8GA1Ud\nIwQYMBaAFKNBBqyQbdFK63WlShCZs7Ghi0r3MD0GA1UdIAQ2MDQwMgYEVR0gADAq\nMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NBMDcGA1Ud\nHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9UV0dQMjU2Q0Eu\nY3JsMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0cDovL29jc3AudHJ1\nc3R3YXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNv\nbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwIDRwAwRAIgICvA5ttD\n0oeUcd37iYvoQ7iMIpZINp4e1j5NrlI3UnYCIEZhimm9+1dUWAfx9ZkGmIu0HiHR\nzEZifAHbPM3SJbRu\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-256 Extended Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A20A3797CD878EB3DAA41D08680AF7\n-----BEGIN CERTIFICATE-----\nMIIDpjCCA0ugAwIBAgITBs6C2aIKN5fNh46z2qQdCGgK9zAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBnDFFMEMGA1UEAxM8\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBFeHRlbmRlZCBWYWxpZGF0aW9u\nIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4x\nEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJV\nUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKXHfFxFDVI6uYWZlWciFFKtYzuJ\n+IBhot3PQGikE3sjU8d9dARkZCkInqmDyP/+XiLzgrYPMy7NS8lZcRsE5p2jggFz\nMIIBbzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUE\nFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwHQYDVR0OBBYEFAwlVqqzYgakv+7gGxtX\nzC8s9g1QMB8GA1UdIwQYMBaAFKNBBqyQbdFK63WlShCZs7Ghi0r3MD0GA1UdIAQ2\nMDQwMgYEVR0gADAqMCgGCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUu\nY29tL0NBMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNv\nbS9UV0dQMjU2Q0EuY3JsMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0\ncDovL29jc3AudHJ1c3R3YXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wu\ndHJ1c3R3YXZlLmNvbS9pc3N1ZXJzL1RXR1AyNTZDQS5jcnQwCgYIKoZIzj0EAwID\nSQAwRgIhALahroq1NScrFeCvG5uMgMKH/bo190D+Mkh2ZIojrUOfAiEAosFXFE73\n0WLRPjX2uOkLhXuA4cQEb1R1oeGDH4MNVOo=\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-256 Organization Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A8B57C104843994DACD79E28633E5F\n-----BEGIN CERTIFICATE-----\nMIIDqDCCA0+gAwIBAgITBs6C2ai1fBBIQ5lNrNeeKGM+XzAKBggqhkjOPQQDAjCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAyNTYgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBoDFJMEcGA1UEAxNA\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTI1NiBPcmdhbml6YXRpb24gVmFsaWRh\ndGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\nbmMuMRAwDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UE\nBhMCVVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQmHWo0mogvX1J61xysTqsn\n6qV06wxUH68/QJ2aDIka6beTrDoTZv3mIkyPxFTPy+9idjgSAERlBsDirgO2/NiY\no4IBczCCAW8wEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwHQYD\nVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB0GA1UdDgQWBBSv+Ju8XTSl3tA+\nFCldDY4lrbClhTAfBgNVHSMEGDAWgBSjQQaskG3RSut1pUoQmbOxoYtK9zA9BgNV\nHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly9zc2wudHJ1c3R3\nYXZlLmNvbS9DQTA3BgNVHR8EMDAuMCygKqAohiZodHRwOi8vY3JsLnRydXN0d2F2\nZS5jb20vVFdHUDI1NkNBLmNybDByBggrBgEFBQcBAQRmMGQwJgYIKwYBBQUHMAGG\nGmh0dHA6Ly9vY3NwLnRydXN0d2F2ZS5jb20vMDoGCCsGAQUFBzAChi5odHRwOi8v\nc3NsLnRydXN0d2F2ZS5jb20vaXNzdWVycy9UV0dQMjU2Q0EuY3J0MAoGCCqGSM49\nBAMCA0cAMEQCIGa3JyBYlXxRN5GIIulLaDxnANNRnY4j1Et166CCC5h+AiAVUlzJ\nIJTfUDBU7jnSTKSw/F+bLIPvaC6frMZv0h+RTA==\n-----END CERTIFICATE-----\n\nSecureTrust TWG ECDSA P-384 Secure Email CA, Level 2\nTrustwave Holdings, Inc.\n072F30E9C58D91DEF98A7F9EB2666CFE7BE1EE\n-----BEGIN CERTIFICATE-----\nMIIDqjCCAy+gAwIBAgITBy8w6cWNkd75in+esmZs/nvh7jAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMjAxMDA4MDY0OTQxWhcNMzAxMDA4MDY0ODQxWjBiMQswCQYDVQQGEwJV\nUzEUMBIGA1UEChMLU2VjdXJlVHJ1c3QxPTA7BgNVBAMTNFNlY3VyZVRydXN0IFRX\nRyBFQ0RTQSBQLTM4NCBTZWN1cmUgRW1haWwgQ0EsIExldmVsIDIwdjAQBgcqhkjO\nPQIBBgUrgQQAIgNiAAR4nTJ6MvtPBb7+L3tklhdDw0tr5FNY5Q1hsp6NR5OzZVeG\nx/X3VrCvkOsae1OEZHNqWCnnI1s/ix9qn/2+q0pPpXrT6wkN/HOQzpQaJWzCF7yX\nIfIB0o+x1Pr17UOX2qGjggF1MIIBcTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1Ud\nDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDBDAdBgNVHQ4EFgQUJd3xyUp6\n6EP6L9hCmkRrWAcU2mwwHwYDVR0jBBgwFoAUVamEidLBMr0Yy2ymB07I552+gpAw\nQQYDVR0gBDowODA2BgRVHSAAMC4wLAYIKwYBBQUHAgEWIGh0dHBzOi8vY2VydHMu\nc2VjdXJldHJ1c3QuY29tL0NBMDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu\nc2VjdXJldHJ1c3QuY29tL1RXR1AzODRDQS5jcmwweAYIKwYBBQUHAQEEbDBqMCgG\nCCsGAQUFBzABhhxodHRwOi8vb2NzcC5zZWN1cmV0cnVzdC5jb20vMD4GCCsGAQUF\nBzAChjJodHRwOi8vY2VydHMuc2VjdXJldHJ1c3QuY29tL2lzc3VlcnMvVFdHUDM4\nNENBLmNydDAKBggqhkjOPQQDAwNpADBmAjEA8X5zwZHtdHjLIn60rwG3Z3NAa6cU\n6gOFxyF+ksTCXvWCUP0oFUqsRPMKMYE2mtdQAjEA2diuEHTPUgCQ0ynhLjged8BO\nFyzL3UlFieGGp90v58gUpfjoFq0BReAw7MPYo/Qa\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-384 Domain Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9B07A17CC5376157813389A2930A44A\n-----BEGIN CERTIFICATE-----\nMIID1TCCA1ygAwIBAgITBs6C2bB6F8xTdhV4EziaKTCkSjAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBmjFDMEEGA1UEAxM6\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBEb21haW4gVmFsaWRhdGlvbiBD\nQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJbmMuMRAw\nDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UEBhMCVVMw\ndjAQBgcqhkjOPQIBBgUrgQQAIgNiAASxlBEflNumTKsypgdOscM2x6ZRpQGSyB4B\nhJScRQI81UhZvzYSwxPWcxNZwFQoV457HfqR51pviJnHltRS8MJhJ9Q9Rf1sSmy4\nW6SPsM9qnBjwfBRxghByIsEIaTW/PKyjggFpMIIBZTASBgNVHRMBAf8ECDAGAQH/\nAgEAMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4E\nFgQUp6etGGS1u/oGGEfIwJ68Zf9pAWAwHwYDVR0jBBgwFoAUVamEidLBMr0Yy2ym\nB07I552+gpAwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBz\nOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwNwYDVR0fBDAwLjAsoCqgKIYmaHR0cDov\nL2NybC50cnVzdHdhdmUuY29tL1RXR1AzODRDQS5jcmwwcgYIKwYBBQUHAQEEZjBk\nMCYGCCsGAQUFBzABhhpodHRwOi8vb2NzcC50cnVzdHdhdmUuY29tLzA6BggrBgEF\nBQcwAoYuaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvVFdHUDM4NENB\nLmNydDAKBggqhkjOPQQDAwNnADBkAjA6fS1jRjt+DvnWSI58v4lX+8DCXbdEhDaB\nbBOS/rXwS/ntsFXqTf0B90GPv3AWlFMCMBbz6nXMwX0jKRkaFZOZx9tvwUapdq7M\n6jYpT/NnAzH68x1t3/7ysZ8lPuKIqAwdKQ==\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-384 Extended Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A331594530006781829387E40DBCB6\n-----BEGIN CERTIFICATE-----\nMIID4zCCA2igAwIBAgITBs6C2aMxWUUwAGeBgpOH5A28tjAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIwWhcNMjgwMjI0MDUwMTIwWjCBnDFFMEMGA1UEAxM8\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBFeHRlbmRlZCBWYWxpZGF0aW9u\nIENBLCBMZXZlbCAxMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4x\nEDAOBgNVBAcTB0NoaWNhZ28xETAPBgNVBAgTCElsbGlub2lzMQswCQYDVQQGEwJV\nUzB2MBAGByqGSM49AgEGBSuBBAAiA2IABKcVGieqBjW3BuVza9VhkBlpGLHLZqQg\nI0GXaTpt5CogNWz6BmlZ1yAPjRnDUVfVwl57ATRtV7u+5TPFzKZ+RheFVc0iA8vl\nQ2JINGRz8XLDaivvuygQtFKSzCWn4e66cKOCAXMwggFvMBIGA1UdEwEB/wQIMAYB\nAf8CAQAwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF\nBQcDATAdBgNVHQ4EFgQUMFfit09gayJACkNfT/oNzXO8JCcwHwYDVR0jBBgwFoAU\nVamEidLBMr0Yy2ymB07I552+gpAwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYB\nBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5jb20vQ0EwNwYDVR0fBDAwLjAs\noCqgKIYmaHR0cDovL2NybC50cnVzdHdhdmUuY29tL1RXR1AzODRDQS5jcmwwcgYI\nKwYBBQUHAQEEZjBkMCYGCCsGAQUFBzABhhpodHRwOi8vb2NzcC50cnVzdHdhdmUu\nY29tLzA6BggrBgEFBQcwAoYuaHR0cDovL3NzbC50cnVzdHdhdmUuY29tL2lzc3Vl\ncnMvVFdHUDM4NENBLmNydDAKBggqhkjOPQQDAwNpADBmAjEA6pScrGT+SruK7iON\n7iDJZfhQsjfQIhaq9sHiEXd89B8ibWOb57no/K265dPxeuALAjEA27NTMZM344eT\nX3df9B22dY5ZshsUMIiRcMo1K4B/GBO8SIA0jParkHS5g4WO5K7O\n-----END CERTIFICATE-----\n\nTrustwave Global ECDSA P-384 Organization Validation CA, Level 1\nTrustwave Holdings, Inc.\n06CE82D9A9D8E29837EF90BEAF59DC6551BED6\n-----BEGIN CERTIFICATE-----\nMIID5jCCA2ygAwIBAgITBs6C2anY4pg375C+r1ncZVG+1jAKBggqhkjOPQQDAzCB\nkTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdDaGlj\nYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9sZGluZ3MsIEluYy4xOjA4BgNVBAMT\nMVRydXN0d2F2ZSBHbG9iYWwgRUNDIFAzODQgQ2VydGlmaWNhdGlvbiBBdXRob3Jp\ndHkwHhcNMTgwMjA2MTIyMTIxWhcNMjgwMjI0MDUwMTIxWjCBoDFJMEcGA1UEAxNA\nVHJ1c3R3YXZlIEdsb2JhbCBFQ0RTQSBQLTM4NCBPcmdhbml6YXRpb24gVmFsaWRh\ndGlvbiBDQSwgTGV2ZWwgMTEhMB8GA1UEChMYVHJ1c3R3YXZlIEhvbGRpbmdzLCBJ\nbmMuMRAwDgYDVQQHEwdDaGljYWdvMREwDwYDVQQIEwhJbGxpbm9pczELMAkGA1UE\nBhMCVVMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATvG09PrsO8UQZhH5Zw54rwgcUw\nKjC9D2V3myjD5WOa8uxdTL8PzdwPk4TCcSf6UUG1Tt74j/I+vBOi2tgMcDt68Zld\nvTj+jZT1BBYTQtYh6/dOUjmiapQU5XqoFMRNubGjggFzMIIBbzASBgNVHRMBAf8E\nCDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAgYI\nKwYBBQUHAwEwHQYDVR0OBBYEFDoXwH5iO1eguEDKzDRHzZZ+/AmIMB8GA1UdIwQY\nMBaAFFWphInSwTK9GMtspgdOyOedvoKQMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgG\nCCsGAQUFBwIBFhxodHRwczovL3NzbC50cnVzdHdhdmUuY29tL0NBMDcGA1UdHwQw\nMC4wLKAqoCiGJmh0dHA6Ly9jcmwudHJ1c3R3YXZlLmNvbS9UV0dQMzg0Q0EuY3Js\nMHIGCCsGAQUFBwEBBGYwZDAmBggrBgEFBQcwAYYaaHR0cDovL29jc3AudHJ1c3R3\nYXZlLmNvbS8wOgYIKwYBBQUHMAKGLmh0dHA6Ly9zc2wudHJ1c3R3YXZlLmNvbS9p\nc3N1ZXJzL1RXR1AzODRDQS5jcnQwCgYIKoZIzj0EAwMDaAAwZQIwMyHlVCVMacxP\nO0fC+uc4M7Eq1F9woaWBmLSSNC6EWe3nShMqsR9HrNWrOHBHucNWAjEArwrzEM8g\nJkR4iZxbyYNIn2sNEkNZt2pxqJn4G2cDDDFfOarykKVzP1aJ9OMdYUvs\n-----END CERTIFICATE-----\n\nTrustwave S/MIME SHA256 CA, Level 1\nXRamp Security Services Inc\n3A83B71EE02C3CCA1CE1A2643E9B66EA\n-----BEGIN CERTIFICATE-----\nMIIFHTCCBAWgAwIBAgIQOoO3HuAsPMoc4aJkPptm6jANBgkqhkiG9w0BAQsFADCB\ngjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk\nMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY\nUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQxMDAxMTky\nMjM4WhcNMjQwOTI4MTkyMjM4WjCBpDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCEls\nbGlub2lzMRAwDgYDVQQHEwdDaGljYWdvMSEwHwYDVQQKExhUcnVzdHdhdmUgSG9s\nZGluZ3MsIEluYy4xLDAqBgNVBAMTI1RydXN0d2F2ZSBTL01JTUUgU0hBMjU2IENB\nLCBMZXZlbCAxMR8wHQYJKoZIhvcNAQkBFhBjYUB0cnVzdHdhdmUuY29tMIIBIjAN\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4c5I5giD0wEh+RuoLIJkD7a6mBlm\n+YzTtXSefGejVVYtpjclkUl4C4hEfQMCUcrBnU3ORHVprXi/Q82dKNFPac8FI9bj\n8mtq0cjdSDfXJKfdf52wPXnTjASwKyhJt+CoJik+Fz72KAkjxi+OUSpWdQBeAQra\ndbtu4UGFTgPcuU/cwpF8J0g4CGk/saVKkkJNpq5wqpfQRYl025FyKbzmRjqhB/Ta\npoHlbHMQ7aeoZ+qtDC+eWnE3AqTUHx14Z5fegjLQRmPWqqdeZafthouglbEuHt4A\neyzefTDNwyXjUiRD/n0kaNNW+lcsLpw7ouw1OU8mwQ0C7LoPJljpXRjvOwIDAQAB\no4IBaTCCAWUwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUDDOjV6rjq9ZL\ncBs2nqPtYVDmr3QwDgYDVR0PAQH/BAQDAgGGMEgGA1UdIARBMD8wPQYPKwYBBAGB\n7RgDAwMFBAMDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRydXN0d2F2ZS5j\nb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVzdHdhdmUuY29t\nL1hHQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZaHR0cDovL29j\nc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3NzbC50cnVzdHdh\ndmUuY29tL2lzc3VlcnMvWEdDQS5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwQwHwYD\nVR0jBBgwFoAUxk+iPQZjhAmczmLkBKyNXLXpthswDQYJKoZIhvcNAQELBQADggEB\nAIdGLHufUegzFKVBQVWs3YAIFqCcJvdak14TMRImxJsnQWLz+jIW0olC0JATY6Ng\nxAbjIJA4wtW/tA+rgE6WcA5y3bLN3bRMQVDSu6X26hkVjvwo4/VYykOp3e9Cqlfe\ngJAsrqBQKXkUpEbYEmmorXxj6/74e//xwXTz0XS0BS9cXhONlTQffyJnMeLaunzQ\nS1x/MvALfPCHCZCTOfLDmwylKtHHu+V2Ks0HV+ZrzCBRR5W3MhGTU7PpNEMQwyGF\n+MG5eZTd0jyxOSOjaXQm7iDh0tG/iKZZegn5AhNdaHE74QEHTjK+teLQlo60QGBk\necyzakgVYZ/Ezalz8nQwhCA=\n-----END CERTIFICATE-----\n\nTrustwave XRamp Global Extended Validation CA, Level 1\nXRamp Security Services Inc\n00D3D519C2B2EB5C7040F64CBC957BBD2C\n-----BEGIN CERTIFICATE-----\nMIIFMDCCBBigAwIBAgIRANPVGcKy61xwQPZMvJV7vSwwDQYJKoZIhvcNAQELBQAw\ngYIxCzAJBgNVBAYTAlVTMR4wHAYDVQQLExV3d3cueHJhbXBzZWN1cml0eS5jb20x\nJDAiBgNVBAoTG1hSYW1wIFNlY3VyaXR5IFNlcnZpY2VzIEluYzEtMCsGA1UEAxMk\nWFJhbXAgR2xvYmFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE1MDgxMjIw\nMTczMVoXDTI1MDgwOTIwMTczMVowgbcxCzAJBgNVBAYTAlVTMREwDwYDVQQIEwhJ\nbGxpbm9pczEQMA4GA1UEBxMHQ2hpY2FnbzEhMB8GA1UEChMYVHJ1c3R3YXZlIEhv\nbGRpbmdzLCBJbmMuMT8wPQYDVQQDEzZUcnVzdHdhdmUgWFJhbXAgR2xvYmFsIEV4\ndGVuZGVkIFZhbGlkYXRpb24gQ0EsIExldmVsIDExHzAdBgkqhkiG9w0BCQEWEGNh\nQHRydXN0d2F2ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9\nAAbj9SknrNJT9pDatGvlR386KRi0SkqIOGr+C5W91+8E8PqydEHwjrnrWt/MTLGO\n+2kfEO3TEJlWxQQqbHy8SdhjCANefLzOT1cfTfjroWBIS9yiHpBIQytAaz/td95Y\n+JKrRBVCnIR/wB5qMMQ982RWwqggD763XLma0c1AIndsZL+dXp1zET4KBreoxn3q\nRYzMIsZIL2mAJoiCOTYuOGrOMVuaQn0HSu3K7bU+CpkdLQ/j+ikcQiI10IL9oOcO\nU9Gnt/hRyUX66Gk91RIpYXhla2tIYrg7ezrAnFoZIZCb891JjFtbSEOvAAK9F5d6\nfkkjPx0432o/v1c5GRFPAgMBAAGjggFoMIIBZDASBgNVHRMBAf8ECDAGAQH/AgEA\nMB0GA1UdDgQWBBTFzrk7QkXAzQnlaOhIOoNdbI6rGDAOBgNVHQ8BAf8EBAMCAYYw\nPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc3NsLnRy\ndXN0d2F2ZS5jb20vQ0EwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC50cnVz\ndHdhdmUuY29tL1hHQ0EuY3JsMGwGCCsGAQUFBwEBBGAwXjAlBggrBgEFBQcwAYYZ\naHR0cDovL29jc3AudHJ1c3R3YXZlLmNvbTA1BggrBgEFBQcwAoYpaHR0cDovL3Nz\nbC50cnVzdHdhdmUuY29tL2lzc3VlcnMvWEdDQS5jcnQwHQYDVR0lBBYwFAYIKwYB\nBQUHAwIGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFMZPoj0GY4QJnM5i5ASsjVy16bYb\nMA0GCSqGSIb3DQEBCwUAA4IBAQCA2N/WVTGYRGNTuvF2qKWPrQUx0/6pKmGqELl6\nNXs1bwRXCci98SkeNjiaa2dHEwcGR43/M1Y0nekXP8QCEFVqGOwaY0pnTb8wL+CI\n/HTp1zfmoCYNvtzt1fIq/+9ynLYEjX8rsrf51HIEjJJK8K3k/Ub3cFT+yJKNN2YN\nJS0IvJYlbpqS6VbcInwLcW7WvJmXUuL7t0Vtt0d2q1h5UdnJQP+skiOmN/B0zPut\nbRC4v5pNGJJmwbk58UlOSeviH2qzDGutamOJ6dFNWqQFoZorAT7fUsr3WDA4HKtx\neraYdCIRJX7weW9xpdMNsVO7Wy/Ma7Fz9fzKnOH5mnInBOof\n-----END CERTIFICATE-----\n\nSecure Global CA\nSecureTrust Corporation\n075622A4E8D48A894DF413C8F0F8EAA5\n-----BEGIN CERTIFICATE-----\nMIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx\nMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg\nQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG\nSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ\niQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa\n/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ\njnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI\nHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7\nsFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w\ngZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF\nMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw\nKaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG\nAQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L\nURYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO\nH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm\nI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY\niNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc\nf8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW\n-----END CERTIFICATE-----\n\nSecureTrust CA\nSecureTrust Corporation\n0CF08E5C0816A5AD427FF0EB271859D0\n-----BEGIN CERTIFICATE-----\nMIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI\nMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x\nFzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz\nMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv\ncnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz\nZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO\n0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao\nwW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj\n7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS\n8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT\nBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB\n/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg\nJYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC\nNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3\n6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/\n3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm\nD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS\nCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR\n3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=\n-----END CERTIFICATE-----\n\nTrustwave Global Certification Authority\nTrustwave Holdings, Inc.\n05F70E86DA49F346352EBAB2\n-----BEGIN CERTIFICATE-----\nMIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQsw\nCQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28x\nITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1\nc3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMx\nOTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwI\nSWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBI\nb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZp\nY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB\nALldUShLPDeS0YLOvR29zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0Xzn\nswuvCAAJWX/NKSqIk4cXGIDtiLK0thAfLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu\n7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4BqstTnoApTAbqOl5F2brz8\n1Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9oWN0EACyW\n80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotP\nJqX+OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1l\nRtzuzWniTY+HKE40Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfw\nhI0Vcnyh78zyiGG69Gm7DIwLdVcEuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10\ncoos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm+9jaJXLE9gCxInm943xZYkqc\nBW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqjifLJS3tBEW1n\ntwiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud\nEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1Ud\nDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W\n0OhUKDtkLSGm+J1WE2pIPU/HPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfe\nuyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0HZJDmHvUqoai7PF35owgLEQzxPy0Q\nlG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla4gt5kNdXElE1GYhB\naCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5RvbbE\nsLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPT\nMaCm/zjdzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qe\nqu5AvzSxnI9O4fKSTx+O856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxh\nVicGaeVyQYHTtgGJoC86cnn+OjC/QezHYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8\nh6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu3R3y4G5OBVixwJAWKqQ9\nEEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP29FpHOTK\nyeC2nOnOcXHebD8WpHk=\n-----END CERTIFICATE-----\n\nTrustwave Global ECC P256 Certification Authority\nTrustwave Holdings, Inc.\n0D6A5F083F285C3E5195DF5D\n-----BEGIN CERTIFICATE-----\nMIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYD\nVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf\nBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3\nYXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x\nNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYDVQQGEwJVUzERMA8G\nA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0\nd2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF\nQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqG\nSM49AwEHA0IABH77bOYj43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoN\nFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqmP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8w\nDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt0UrrdaVKEJmzsaGLSvcw\nCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjzRM4q3wgh\nDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7\n-----END CERTIFICATE-----\n\nTrustwave Global ECC P384 Certification Authority\nTrustwave Holdings, Inc.\n08BD85976C9927A48068473B\n-----BEGIN CERTIFICATE-----\nMIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYD\nVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf\nBgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3\nYXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x\nNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYDVQQGEwJVUzERMA8G\nA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0\nd2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF\nQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuB\nBAAiA2IABGvaDXU1CDFHBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJ\nj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr/TklZvFe/oyujUF5nQlgziip04pt89ZF\n1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G\nA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNnADBkAjA3\nAZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsC\nMGclCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVu\nSw==\n-----END CERTIFICATE-----\n";
|
|
47
47
|
|
|
48
48
|
var PKG_NAME = "@hpcc-js/comms";
|
|
49
|
-
var PKG_VERSION = "2.83.
|
|
50
|
-
var BUILD_VERSION = "2.104.
|
|
49
|
+
var PKG_VERSION = "2.83.1";
|
|
50
|
+
var BUILD_VERSION = "2.104.23";
|
|
51
51
|
|
|
52
52
|
/******************************************************************************
|
|
53
53
|
Copyright (c) Microsoft Corporation.
|
|
@@ -139,7 +139,7 @@ function __spreadArray(to, from, pack) {
|
|
|
139
139
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
var logger$
|
|
142
|
+
var logger$5 = util.scopedLogger("comms/connection.ts");
|
|
143
143
|
function instanceOfIOptions(object) {
|
|
144
144
|
return "baseUrl" in object;
|
|
145
145
|
}
|
|
@@ -241,12 +241,12 @@ function jsonp(opts, action, request, responseType, header) {
|
|
|
241
241
|
respondedTimeout -= respondedTick;
|
|
242
242
|
if (respondedTimeout <= 0) {
|
|
243
243
|
clearInterval(progress);
|
|
244
|
-
logger$
|
|
244
|
+
logger$5.error("Request timeout: " + script.src);
|
|
245
245
|
doCallback();
|
|
246
246
|
reject(Error("Request timeout: " + script.src));
|
|
247
247
|
}
|
|
248
248
|
else {
|
|
249
|
-
logger$
|
|
249
|
+
logger$5.debug("Request pending (" + respondedTimeout / 1000 + " sec): " + script.src);
|
|
250
250
|
}
|
|
251
251
|
}
|
|
252
252
|
}, respondedTick);
|
|
@@ -1426,7 +1426,7 @@ var LogaccessServiceBase = /** @class */ (function (_super) {
|
|
|
1426
1426
|
return LogaccessServiceBase;
|
|
1427
1427
|
}(Service));
|
|
1428
1428
|
|
|
1429
|
-
var logger$
|
|
1429
|
+
var logger$4 = util.scopedLogger("@hpcc-js/comms/services/wsLogaccess.ts");
|
|
1430
1430
|
var ElasticKnownColumns;
|
|
1431
1431
|
(function (ElasticKnownColumns) {
|
|
1432
1432
|
ElasticKnownColumns["audience"] = "hpcc.log.audience";
|
|
@@ -1628,7 +1628,7 @@ var LogaccessService = /** @class */ (function (_super) {
|
|
|
1628
1628
|
lines = (_d = (_c = logLines.lines) === null || _c === void 0 ? void 0 : _c.map(elasticToLogLine)) !== null && _d !== void 0 ? _d : [];
|
|
1629
1629
|
break;
|
|
1630
1630
|
default:
|
|
1631
|
-
logger$
|
|
1631
|
+
logger$4.warning("Unknown RemoteLogManagerType: ".concat(logInfo.RemoteLogManagerType));
|
|
1632
1632
|
lines = [];
|
|
1633
1633
|
}
|
|
1634
1634
|
return {
|
|
@@ -1637,7 +1637,7 @@ var LogaccessService = /** @class */ (function (_super) {
|
|
|
1637
1637
|
};
|
|
1638
1638
|
}
|
|
1639
1639
|
catch (e) {
|
|
1640
|
-
logger$
|
|
1640
|
+
logger$4.error(e);
|
|
1641
1641
|
}
|
|
1642
1642
|
return {
|
|
1643
1643
|
lines: [],
|
|
@@ -5025,7 +5025,7 @@ function formatNum(num) {
|
|
|
5025
5025
|
}
|
|
5026
5026
|
return num;
|
|
5027
5027
|
}
|
|
5028
|
-
var logger$
|
|
5028
|
+
var logger$3 = util.scopedLogger("workunit.ts");
|
|
5029
5029
|
var WUStateID = exports.WUStateID;
|
|
5030
5030
|
var WorkunitCache = /** @class */ (function (_super) {
|
|
5031
5031
|
__extends(WorkunitCache, _super);
|
|
@@ -6141,7 +6141,7 @@ var Workunit = /** @class */ (function (_super) {
|
|
|
6141
6141
|
return false;
|
|
6142
6142
|
});
|
|
6143
6143
|
if (!wuMissing) {
|
|
6144
|
-
logger$
|
|
6144
|
+
logger$3.warning("Unexpected exception: ");
|
|
6145
6145
|
throw e;
|
|
6146
6146
|
}
|
|
6147
6147
|
return {};
|
|
@@ -6178,7 +6178,7 @@ var Workunit = /** @class */ (function (_super) {
|
|
|
6178
6178
|
return false;
|
|
6179
6179
|
});
|
|
6180
6180
|
if (!wuMissing) {
|
|
6181
|
-
logger$
|
|
6181
|
+
logger$3.warning("Unexpected exception: ");
|
|
6182
6182
|
throw e;
|
|
6183
6183
|
}
|
|
6184
6184
|
return {};
|
|
@@ -6267,7 +6267,7 @@ var Workunit = /** @class */ (function (_super) {
|
|
|
6267
6267
|
}
|
|
6268
6268
|
return new util.XMLNode(command);
|
|
6269
6269
|
}).catch(function (_) {
|
|
6270
|
-
logger$
|
|
6270
|
+
logger$3.error(_);
|
|
6271
6271
|
return Promise.resolve(new util.XMLNode(command));
|
|
6272
6272
|
});
|
|
6273
6273
|
};
|
|
@@ -7086,158 +7086,492 @@ var Machine = /** @class */ (function (_super) {
|
|
|
7086
7086
|
return Machine;
|
|
7087
7087
|
}(util.StateObject));
|
|
7088
7088
|
|
|
7089
|
-
var
|
|
7090
|
-
__extends(
|
|
7091
|
-
function
|
|
7089
|
+
var TargetClusterCache = /** @class */ (function (_super) {
|
|
7090
|
+
__extends(TargetClusterCache, _super);
|
|
7091
|
+
function TargetClusterCache() {
|
|
7092
7092
|
return _super.call(this, function (obj) {
|
|
7093
|
-
return
|
|
7093
|
+
return "".concat(obj.BaseUrl, "-").concat(obj.Name);
|
|
7094
7094
|
}) || this;
|
|
7095
7095
|
}
|
|
7096
|
-
return
|
|
7096
|
+
return TargetClusterCache;
|
|
7097
7097
|
}(util.Cache));
|
|
7098
|
-
var
|
|
7099
|
-
var
|
|
7100
|
-
__extends(
|
|
7101
|
-
function
|
|
7098
|
+
var _targetCluster = new TargetClusterCache();
|
|
7099
|
+
var TargetCluster = /** @class */ (function (_super) {
|
|
7100
|
+
__extends(TargetCluster, _super);
|
|
7101
|
+
function TargetCluster(optsConnection, name) {
|
|
7102
7102
|
var _this = _super.call(this) || this;
|
|
7103
|
-
if (optsConnection instanceof
|
|
7103
|
+
if (optsConnection instanceof TopologyService) {
|
|
7104
7104
|
_this.connection = optsConnection;
|
|
7105
|
-
|
|
7105
|
+
_this.machineConnection = new MachineService(optsConnection.connectionOptions());
|
|
7106
7106
|
}
|
|
7107
7107
|
else {
|
|
7108
|
-
_this.connection = new
|
|
7109
|
-
|
|
7108
|
+
_this.connection = new TopologyService(optsConnection);
|
|
7109
|
+
_this.machineConnection = new MachineService(optsConnection);
|
|
7110
7110
|
}
|
|
7111
|
-
_this.
|
|
7112
|
-
|
|
7111
|
+
_this.clear({
|
|
7112
|
+
Name: name
|
|
7113
|
+
});
|
|
7113
7114
|
return _this;
|
|
7114
7115
|
}
|
|
7115
|
-
Object.defineProperty(
|
|
7116
|
+
Object.defineProperty(TargetCluster.prototype, "BaseUrl", {
|
|
7116
7117
|
get: function () { return this.connection.baseUrl; },
|
|
7117
7118
|
enumerable: false,
|
|
7118
7119
|
configurable: true
|
|
7119
7120
|
});
|
|
7120
|
-
Object.defineProperty(
|
|
7121
|
-
get: function () { return this.get(); },
|
|
7122
|
-
enumerable: false,
|
|
7123
|
-
configurable: true
|
|
7124
|
-
});
|
|
7125
|
-
Object.defineProperty(Query.prototype, "Exceptions", {
|
|
7126
|
-
get: function () { return this.get("Exceptions"); },
|
|
7127
|
-
enumerable: false,
|
|
7128
|
-
configurable: true
|
|
7129
|
-
});
|
|
7130
|
-
Object.defineProperty(Query.prototype, "QueryId", {
|
|
7131
|
-
get: function () { return this.get("QueryId"); },
|
|
7132
|
-
enumerable: false,
|
|
7133
|
-
configurable: true
|
|
7134
|
-
});
|
|
7135
|
-
Object.defineProperty(Query.prototype, "QuerySet", {
|
|
7136
|
-
get: function () { return this.get("QuerySet"); },
|
|
7137
|
-
enumerable: false,
|
|
7138
|
-
configurable: true
|
|
7139
|
-
});
|
|
7140
|
-
Object.defineProperty(Query.prototype, "QueryName", {
|
|
7141
|
-
get: function () { return this.get("QueryName"); },
|
|
7142
|
-
enumerable: false,
|
|
7143
|
-
configurable: true
|
|
7144
|
-
});
|
|
7145
|
-
Object.defineProperty(Query.prototype, "Wuid", {
|
|
7146
|
-
get: function () { return this.get("Wuid"); },
|
|
7147
|
-
enumerable: false,
|
|
7148
|
-
configurable: true
|
|
7149
|
-
});
|
|
7150
|
-
Object.defineProperty(Query.prototype, "Dll", {
|
|
7151
|
-
get: function () { return this.get("Dll"); },
|
|
7121
|
+
Object.defineProperty(TargetCluster.prototype, "Name", {
|
|
7122
|
+
get: function () { return this.get("Name"); },
|
|
7152
7123
|
enumerable: false,
|
|
7153
7124
|
configurable: true
|
|
7154
7125
|
});
|
|
7155
|
-
Object.defineProperty(
|
|
7156
|
-
get: function () { return this.get("
|
|
7126
|
+
Object.defineProperty(TargetCluster.prototype, "Prefix", {
|
|
7127
|
+
get: function () { return this.get("Prefix"); },
|
|
7157
7128
|
enumerable: false,
|
|
7158
7129
|
configurable: true
|
|
7159
7130
|
});
|
|
7160
|
-
Object.defineProperty(
|
|
7161
|
-
get: function () { return this.get("
|
|
7131
|
+
Object.defineProperty(TargetCluster.prototype, "Type", {
|
|
7132
|
+
get: function () { return this.get("Type"); },
|
|
7162
7133
|
enumerable: false,
|
|
7163
7134
|
configurable: true
|
|
7164
7135
|
});
|
|
7165
|
-
Object.defineProperty(
|
|
7166
|
-
get: function () { return this.get("
|
|
7136
|
+
Object.defineProperty(TargetCluster.prototype, "IsDefault", {
|
|
7137
|
+
get: function () { return this.get("IsDefault"); },
|
|
7167
7138
|
enumerable: false,
|
|
7168
7139
|
configurable: true
|
|
7169
7140
|
});
|
|
7170
|
-
Object.defineProperty(
|
|
7171
|
-
get: function () { return this.get("
|
|
7141
|
+
Object.defineProperty(TargetCluster.prototype, "TpClusters", {
|
|
7142
|
+
get: function () { return this.get("TpClusters"); },
|
|
7172
7143
|
enumerable: false,
|
|
7173
7144
|
configurable: true
|
|
7174
7145
|
});
|
|
7175
|
-
Object.defineProperty(
|
|
7176
|
-
get: function () { return this.get("
|
|
7146
|
+
Object.defineProperty(TargetCluster.prototype, "TpEclCCServers", {
|
|
7147
|
+
get: function () { return this.get("TpEclCCServers"); },
|
|
7177
7148
|
enumerable: false,
|
|
7178
7149
|
configurable: true
|
|
7179
7150
|
});
|
|
7180
|
-
Object.defineProperty(
|
|
7181
|
-
get: function () { return this.get("
|
|
7151
|
+
Object.defineProperty(TargetCluster.prototype, "TpEclServers", {
|
|
7152
|
+
get: function () { return this.get("TpEclServers"); },
|
|
7182
7153
|
enumerable: false,
|
|
7183
7154
|
configurable: true
|
|
7184
7155
|
});
|
|
7185
|
-
Object.defineProperty(
|
|
7186
|
-
get: function () { return this.get("
|
|
7156
|
+
Object.defineProperty(TargetCluster.prototype, "TpEclAgents", {
|
|
7157
|
+
get: function () { return this.get("TpEclAgents"); },
|
|
7187
7158
|
enumerable: false,
|
|
7188
7159
|
configurable: true
|
|
7189
7160
|
});
|
|
7190
|
-
Object.defineProperty(
|
|
7191
|
-
get: function () { return this.get("
|
|
7161
|
+
Object.defineProperty(TargetCluster.prototype, "TpEclSchedulers", {
|
|
7162
|
+
get: function () { return this.get("TpEclSchedulers"); },
|
|
7192
7163
|
enumerable: false,
|
|
7193
7164
|
configurable: true
|
|
7194
7165
|
});
|
|
7195
|
-
Object.defineProperty(
|
|
7196
|
-
get: function () { return this.get("
|
|
7166
|
+
Object.defineProperty(TargetCluster.prototype, "MachineInfoEx", {
|
|
7167
|
+
get: function () { return this.get("MachineInfoEx", []); },
|
|
7197
7168
|
enumerable: false,
|
|
7198
7169
|
configurable: true
|
|
7199
7170
|
});
|
|
7200
|
-
Object.defineProperty(
|
|
7201
|
-
get: function () {
|
|
7171
|
+
Object.defineProperty(TargetCluster.prototype, "CMachineInfoEx", {
|
|
7172
|
+
get: function () {
|
|
7173
|
+
var _this = this;
|
|
7174
|
+
return this.MachineInfoEx.map(function (machineInfoEx) { return Machine.attach(_this.machineConnection, machineInfoEx.Address, machineInfoEx); });
|
|
7175
|
+
},
|
|
7202
7176
|
enumerable: false,
|
|
7203
7177
|
configurable: true
|
|
7204
7178
|
});
|
|
7205
|
-
|
|
7206
|
-
get:
|
|
7207
|
-
|
|
7208
|
-
|
|
7179
|
+
TargetCluster.attach = function (optsConnection, name, state) {
|
|
7180
|
+
var retVal = _targetCluster.get({ BaseUrl: optsConnection.baseUrl, Name: name }, function () {
|
|
7181
|
+
return new TargetCluster(optsConnection, name);
|
|
7182
|
+
});
|
|
7183
|
+
if (state) {
|
|
7184
|
+
retVal.set(__assign({}, state));
|
|
7185
|
+
}
|
|
7186
|
+
return retVal;
|
|
7187
|
+
};
|
|
7188
|
+
TargetCluster.prototype.fetchMachines = function (request) {
|
|
7189
|
+
var _this = this;
|
|
7190
|
+
if (request === void 0) { request = {}; }
|
|
7191
|
+
return this.machineConnection.GetTargetClusterInfo(__assign({ TargetClusters: {
|
|
7192
|
+
Item: ["".concat(this.Type, ":").concat(this.Name)]
|
|
7193
|
+
} }, request)).then(function (response) {
|
|
7194
|
+
var retVal = [];
|
|
7195
|
+
for (var _i = 0, _a = response.TargetClusterInfoList.TargetClusterInfo; _i < _a.length; _i++) {
|
|
7196
|
+
var machineInfo = _a[_i];
|
|
7197
|
+
for (var _b = 0, _c = machineInfo.Processes.MachineInfoEx; _b < _c.length; _b++) {
|
|
7198
|
+
var machineInfoEx = _c[_b];
|
|
7199
|
+
retVal.push(machineInfoEx);
|
|
7200
|
+
}
|
|
7201
|
+
}
|
|
7202
|
+
_this.set("MachineInfoEx", retVal);
|
|
7203
|
+
return _this.CMachineInfoEx;
|
|
7204
|
+
});
|
|
7205
|
+
};
|
|
7206
|
+
TargetCluster.prototype.machineStats = function () {
|
|
7207
|
+
var maxDisk = 0;
|
|
7208
|
+
var totalFree = 0;
|
|
7209
|
+
var total = 0;
|
|
7210
|
+
for (var _i = 0, _a = this.CMachineInfoEx; _i < _a.length; _i++) {
|
|
7211
|
+
var machine = _a[_i];
|
|
7212
|
+
for (var _b = 0, _c = machine.Storage.StorageInfo; _b < _c.length; _b++) {
|
|
7213
|
+
var storageInfo = _c[_b];
|
|
7214
|
+
totalFree += storageInfo.Available;
|
|
7215
|
+
total += storageInfo.Total;
|
|
7216
|
+
var usage = 1 - storageInfo.Available / storageInfo.Total;
|
|
7217
|
+
if (usage > maxDisk) {
|
|
7218
|
+
maxDisk = usage;
|
|
7219
|
+
}
|
|
7220
|
+
}
|
|
7221
|
+
}
|
|
7222
|
+
return {
|
|
7223
|
+
maxDisk: maxDisk,
|
|
7224
|
+
meanDisk: 1 - (total ? totalFree / total : 1)
|
|
7225
|
+
};
|
|
7226
|
+
};
|
|
7227
|
+
TargetCluster.prototype.fetchUsage = function () {
|
|
7228
|
+
return this.machineConnection.GetTargetClusterUsageEx([this.Name]);
|
|
7229
|
+
};
|
|
7230
|
+
return TargetCluster;
|
|
7231
|
+
}(util.StateObject));
|
|
7232
|
+
function targetClusters(optsConnection) {
|
|
7233
|
+
var connection;
|
|
7234
|
+
if (optsConnection instanceof TopologyService) {
|
|
7235
|
+
connection = optsConnection;
|
|
7236
|
+
}
|
|
7237
|
+
else {
|
|
7238
|
+
connection = new TopologyService(optsConnection);
|
|
7239
|
+
}
|
|
7240
|
+
return connection.TpListTargetClusters({}).then(function (response) {
|
|
7241
|
+
return response.TargetClusters.TpClusterNameType.map(function (item) { return TargetCluster.attach(optsConnection, item.Name, item); });
|
|
7209
7242
|
});
|
|
7210
|
-
|
|
7211
|
-
|
|
7243
|
+
}
|
|
7244
|
+
var _defaultTargetCluster = {};
|
|
7245
|
+
function defaultTargetCluster(optsConnection) {
|
|
7246
|
+
if (!_defaultTargetCluster[optsConnection.baseUrl]) {
|
|
7247
|
+
var connection = void 0;
|
|
7248
|
+
if (optsConnection instanceof TopologyService) {
|
|
7249
|
+
connection = optsConnection;
|
|
7250
|
+
}
|
|
7251
|
+
else {
|
|
7252
|
+
connection = new TopologyService(optsConnection);
|
|
7253
|
+
}
|
|
7254
|
+
_defaultTargetCluster[optsConnection.baseUrl] = connection.TpListTargetClusters({}).then(function (response) {
|
|
7255
|
+
var firstItem;
|
|
7256
|
+
var defaultItem;
|
|
7257
|
+
var hthorItem;
|
|
7258
|
+
response.TargetClusters.TpClusterNameType.forEach(function (item) {
|
|
7259
|
+
if (!firstItem) {
|
|
7260
|
+
firstItem = item;
|
|
7261
|
+
}
|
|
7262
|
+
if (!defaultItem && item.IsDefault === true) {
|
|
7263
|
+
defaultItem = item;
|
|
7264
|
+
}
|
|
7265
|
+
if (!hthorItem && item.Type === "hthor") {
|
|
7266
|
+
hthorItem = item;
|
|
7267
|
+
}
|
|
7268
|
+
});
|
|
7269
|
+
var defItem = defaultItem || hthorItem || firstItem;
|
|
7270
|
+
return TargetCluster.attach(optsConnection, defItem.Name, defItem);
|
|
7271
|
+
});
|
|
7272
|
+
}
|
|
7273
|
+
return _defaultTargetCluster[optsConnection.baseUrl];
|
|
7274
|
+
}
|
|
7275
|
+
|
|
7276
|
+
var TopologyCache = /** @class */ (function (_super) {
|
|
7277
|
+
__extends(TopologyCache, _super);
|
|
7278
|
+
function TopologyCache() {
|
|
7279
|
+
return _super.call(this, function (obj) {
|
|
7280
|
+
return obj.BaseUrl;
|
|
7281
|
+
}) || this;
|
|
7282
|
+
}
|
|
7283
|
+
return TopologyCache;
|
|
7284
|
+
}(util.Cache));
|
|
7285
|
+
var _topology = new TopologyCache();
|
|
7286
|
+
var Topology = /** @class */ (function (_super) {
|
|
7287
|
+
__extends(Topology, _super);
|
|
7288
|
+
function Topology(optsConnection) {
|
|
7289
|
+
var _this = _super.call(this) || this;
|
|
7290
|
+
if (optsConnection instanceof TopologyService) {
|
|
7291
|
+
_this.connection = optsConnection;
|
|
7292
|
+
}
|
|
7293
|
+
else {
|
|
7294
|
+
_this.connection = new TopologyService(optsConnection);
|
|
7295
|
+
}
|
|
7296
|
+
return _this;
|
|
7297
|
+
}
|
|
7298
|
+
Object.defineProperty(Topology.prototype, "BaseUrl", {
|
|
7299
|
+
get: function () { return this.connection.baseUrl; },
|
|
7212
7300
|
enumerable: false,
|
|
7213
7301
|
configurable: true
|
|
7214
7302
|
});
|
|
7215
|
-
Object.defineProperty(
|
|
7216
|
-
|
|
7303
|
+
Object.defineProperty(Topology.prototype, "properties", {
|
|
7304
|
+
// Accessors ---
|
|
7305
|
+
get: function () { return this.get(); },
|
|
7217
7306
|
enumerable: false,
|
|
7218
7307
|
configurable: true
|
|
7219
7308
|
});
|
|
7220
|
-
Object.defineProperty(
|
|
7221
|
-
get: function () { return this.get("
|
|
7309
|
+
Object.defineProperty(Topology.prototype, "TargetClusters", {
|
|
7310
|
+
get: function () { return this.get("TargetClusters"); },
|
|
7222
7311
|
enumerable: false,
|
|
7223
7312
|
configurable: true
|
|
7224
7313
|
});
|
|
7225
|
-
Object.defineProperty(
|
|
7226
|
-
get: function () {
|
|
7314
|
+
Object.defineProperty(Topology.prototype, "CTargetClusters", {
|
|
7315
|
+
get: function () {
|
|
7316
|
+
var _this = this;
|
|
7317
|
+
return this.TargetClusters.map(function (tc) { return TargetCluster.attach(_this.connection, tc.Name, tc); });
|
|
7318
|
+
},
|
|
7227
7319
|
enumerable: false,
|
|
7228
7320
|
configurable: true
|
|
7229
7321
|
});
|
|
7230
|
-
Object.defineProperty(
|
|
7231
|
-
get: function () { return this.get("
|
|
7322
|
+
Object.defineProperty(Topology.prototype, "LogicalClusters", {
|
|
7323
|
+
get: function () { return this.get("LogicalClusters"); },
|
|
7232
7324
|
enumerable: false,
|
|
7233
7325
|
configurable: true
|
|
7234
7326
|
});
|
|
7235
|
-
Object.defineProperty(
|
|
7236
|
-
get: function () { return this.get("
|
|
7327
|
+
Object.defineProperty(Topology.prototype, "Services", {
|
|
7328
|
+
get: function () { return this.get("Services"); },
|
|
7237
7329
|
enumerable: false,
|
|
7238
7330
|
configurable: true
|
|
7239
7331
|
});
|
|
7240
|
-
|
|
7332
|
+
Topology.attach = function (optsConnection) {
|
|
7333
|
+
var retVal = _topology.get({ BaseUrl: optsConnection.baseUrl }, function () {
|
|
7334
|
+
return new Topology(optsConnection);
|
|
7335
|
+
});
|
|
7336
|
+
return retVal;
|
|
7337
|
+
};
|
|
7338
|
+
Topology.prototype.GetESPServiceBaseURL = function (type) {
|
|
7339
|
+
var _this = this;
|
|
7340
|
+
if (type === void 0) { type = ""; }
|
|
7341
|
+
return this.connection.TpServiceQuery({}).then(function (response) {
|
|
7342
|
+
var rootProtocol = _this.connection.protocol();
|
|
7343
|
+
var ip = _this.connection.ip();
|
|
7344
|
+
var port = rootProtocol === "https:" ? "18002" : "8002";
|
|
7345
|
+
if (util.exists("ServiceList.TpEspServers.TpEspServer", response)) {
|
|
7346
|
+
for (var _i = 0, _a = response.ServiceList.TpEspServers.TpEspServer; _i < _a.length; _i++) {
|
|
7347
|
+
var item = _a[_i];
|
|
7348
|
+
if (util.exists("TpBindings.TpBinding", item)) {
|
|
7349
|
+
for (var _b = 0, _c = item.TpBindings.TpBinding; _b < _c.length; _b++) {
|
|
7350
|
+
var binding = _c[_b];
|
|
7351
|
+
if (binding.Service === type && binding.Protocol + ":" === rootProtocol) {
|
|
7352
|
+
port = binding.Port;
|
|
7353
|
+
}
|
|
7354
|
+
}
|
|
7355
|
+
}
|
|
7356
|
+
}
|
|
7357
|
+
}
|
|
7358
|
+
return "".concat(rootProtocol, "//").concat(ip, ":").concat(port, "/");
|
|
7359
|
+
});
|
|
7360
|
+
};
|
|
7361
|
+
Topology.prototype.fetchTargetClusters = function () {
|
|
7362
|
+
var _this = this;
|
|
7363
|
+
return this.connection.TpTargetClusterQuery({ Type: "ROOT" }).then(function (response) {
|
|
7364
|
+
var _a, _b;
|
|
7365
|
+
_this.set({
|
|
7366
|
+
TargetClusters: (_b = (_a = response.TpTargetClusters) === null || _a === void 0 ? void 0 : _a.TpTargetCluster) !== null && _b !== void 0 ? _b : []
|
|
7367
|
+
});
|
|
7368
|
+
return _this.CTargetClusters;
|
|
7369
|
+
});
|
|
7370
|
+
};
|
|
7371
|
+
Topology.prototype.fetchLogicalClusters = function (request) {
|
|
7372
|
+
var _this = this;
|
|
7373
|
+
if (request === void 0) { request = {}; }
|
|
7374
|
+
return this.connection.TpLogicalClusterQuery(request).then(function (response) {
|
|
7375
|
+
_this.set({
|
|
7376
|
+
LogicalClusters: response.TpLogicalClusters.TpLogicalCluster
|
|
7377
|
+
});
|
|
7378
|
+
return _this.LogicalClusters;
|
|
7379
|
+
});
|
|
7380
|
+
};
|
|
7381
|
+
Topology.prototype.fetchServices = function (request) {
|
|
7382
|
+
var _this = this;
|
|
7383
|
+
if (request === void 0) { request = {}; }
|
|
7384
|
+
return this.connection.TpServiceQuery(request).then(function (response) {
|
|
7385
|
+
_this.set({
|
|
7386
|
+
Services: response.ServiceList
|
|
7387
|
+
});
|
|
7388
|
+
return _this.Services;
|
|
7389
|
+
});
|
|
7390
|
+
};
|
|
7391
|
+
Topology.prototype.refresh = function (force) {
|
|
7392
|
+
var _this = this;
|
|
7393
|
+
if (force === void 0) { force = false; }
|
|
7394
|
+
if (!this._prevRefresh || force) {
|
|
7395
|
+
this._prevRefresh = Promise.all([this.fetchTargetClusters(), this.fetchLogicalClusters(), this.fetchServices()]).then(function () {
|
|
7396
|
+
return _this;
|
|
7397
|
+
});
|
|
7398
|
+
}
|
|
7399
|
+
return this._prevRefresh;
|
|
7400
|
+
};
|
|
7401
|
+
// Monitoring ---
|
|
7402
|
+
// Events ---
|
|
7403
|
+
Topology.prototype.on = function (eventID, propIDorCallback, callback) {
|
|
7404
|
+
if (this.isCallback(propIDorCallback)) {
|
|
7405
|
+
switch (eventID) {
|
|
7406
|
+
case "changed":
|
|
7407
|
+
_super.prototype.on.call(this, eventID, propIDorCallback);
|
|
7408
|
+
break;
|
|
7409
|
+
}
|
|
7410
|
+
}
|
|
7411
|
+
else {
|
|
7412
|
+
switch (eventID) {
|
|
7413
|
+
case "changed":
|
|
7414
|
+
_super.prototype.on.call(this, eventID, propIDorCallback, callback);
|
|
7415
|
+
break;
|
|
7416
|
+
}
|
|
7417
|
+
}
|
|
7418
|
+
this._monitor();
|
|
7419
|
+
return this;
|
|
7420
|
+
};
|
|
7421
|
+
return Topology;
|
|
7422
|
+
}(util.StateObject));
|
|
7423
|
+
|
|
7424
|
+
var logger$2 = util.scopedLogger("@hpcc-js/comms/ecl/query.ts");
|
|
7425
|
+
var QueryCache = /** @class */ (function (_super) {
|
|
7426
|
+
__extends(QueryCache, _super);
|
|
7427
|
+
function QueryCache() {
|
|
7428
|
+
return _super.call(this, function (obj) {
|
|
7429
|
+
return util.Cache.hash([obj.QueryId, obj.QuerySet]);
|
|
7430
|
+
}) || this;
|
|
7431
|
+
}
|
|
7432
|
+
return QueryCache;
|
|
7433
|
+
}(util.Cache));
|
|
7434
|
+
var _queries = new QueryCache();
|
|
7435
|
+
var Query = /** @class */ (function (_super) {
|
|
7436
|
+
__extends(Query, _super);
|
|
7437
|
+
function Query(optsConnection, querySet, queryID, queryDetails) {
|
|
7438
|
+
var _this = _super.call(this) || this;
|
|
7439
|
+
if (optsConnection instanceof WorkunitsService) {
|
|
7440
|
+
_this.wsWorkunitsService = optsConnection;
|
|
7441
|
+
}
|
|
7442
|
+
else {
|
|
7443
|
+
_this.wsWorkunitsService = new WorkunitsService(optsConnection);
|
|
7444
|
+
}
|
|
7445
|
+
_this.topology = Topology.attach(_this.wsWorkunitsService.opts());
|
|
7446
|
+
_this.set(__assign({ QuerySet: querySet, QueryId: queryID }, queryDetails));
|
|
7447
|
+
return _this;
|
|
7448
|
+
}
|
|
7449
|
+
Object.defineProperty(Query.prototype, "BaseUrl", {
|
|
7450
|
+
get: function () { return this.wsWorkunitsService.baseUrl; },
|
|
7451
|
+
enumerable: false,
|
|
7452
|
+
configurable: true
|
|
7453
|
+
});
|
|
7454
|
+
Object.defineProperty(Query.prototype, "properties", {
|
|
7455
|
+
get: function () { return this.get(); },
|
|
7456
|
+
enumerable: false,
|
|
7457
|
+
configurable: true
|
|
7458
|
+
});
|
|
7459
|
+
Object.defineProperty(Query.prototype, "Exceptions", {
|
|
7460
|
+
get: function () { return this.get("Exceptions"); },
|
|
7461
|
+
enumerable: false,
|
|
7462
|
+
configurable: true
|
|
7463
|
+
});
|
|
7464
|
+
Object.defineProperty(Query.prototype, "QueryId", {
|
|
7465
|
+
get: function () { return this.get("QueryId"); },
|
|
7466
|
+
enumerable: false,
|
|
7467
|
+
configurable: true
|
|
7468
|
+
});
|
|
7469
|
+
Object.defineProperty(Query.prototype, "QuerySet", {
|
|
7470
|
+
get: function () { return this.get("QuerySet"); },
|
|
7471
|
+
enumerable: false,
|
|
7472
|
+
configurable: true
|
|
7473
|
+
});
|
|
7474
|
+
Object.defineProperty(Query.prototype, "QueryName", {
|
|
7475
|
+
get: function () { return this.get("QueryName"); },
|
|
7476
|
+
enumerable: false,
|
|
7477
|
+
configurable: true
|
|
7478
|
+
});
|
|
7479
|
+
Object.defineProperty(Query.prototype, "Wuid", {
|
|
7480
|
+
get: function () { return this.get("Wuid"); },
|
|
7481
|
+
enumerable: false,
|
|
7482
|
+
configurable: true
|
|
7483
|
+
});
|
|
7484
|
+
Object.defineProperty(Query.prototype, "Dll", {
|
|
7485
|
+
get: function () { return this.get("Dll"); },
|
|
7486
|
+
enumerable: false,
|
|
7487
|
+
configurable: true
|
|
7488
|
+
});
|
|
7489
|
+
Object.defineProperty(Query.prototype, "Suspended", {
|
|
7490
|
+
get: function () { return this.get("Suspended"); },
|
|
7491
|
+
enumerable: false,
|
|
7492
|
+
configurable: true
|
|
7493
|
+
});
|
|
7494
|
+
Object.defineProperty(Query.prototype, "Activated", {
|
|
7495
|
+
get: function () { return this.get("Activated"); },
|
|
7496
|
+
enumerable: false,
|
|
7497
|
+
configurable: true
|
|
7498
|
+
});
|
|
7499
|
+
Object.defineProperty(Query.prototype, "SuspendedBy", {
|
|
7500
|
+
get: function () { return this.get("SuspendedBy"); },
|
|
7501
|
+
enumerable: false,
|
|
7502
|
+
configurable: true
|
|
7503
|
+
});
|
|
7504
|
+
Object.defineProperty(Query.prototype, "Clusters", {
|
|
7505
|
+
get: function () { return this.get("Clusters"); },
|
|
7506
|
+
enumerable: false,
|
|
7507
|
+
configurable: true
|
|
7508
|
+
});
|
|
7509
|
+
Object.defineProperty(Query.prototype, "PublishedBy", {
|
|
7510
|
+
get: function () { return this.get("PublishedBy"); },
|
|
7511
|
+
enumerable: false,
|
|
7512
|
+
configurable: true
|
|
7513
|
+
});
|
|
7514
|
+
Object.defineProperty(Query.prototype, "Comment", {
|
|
7515
|
+
get: function () { return this.get("Comment"); },
|
|
7516
|
+
enumerable: false,
|
|
7517
|
+
configurable: true
|
|
7518
|
+
});
|
|
7519
|
+
Object.defineProperty(Query.prototype, "LogicalFiles", {
|
|
7520
|
+
get: function () { return this.get("LogicalFiles"); },
|
|
7521
|
+
enumerable: false,
|
|
7522
|
+
configurable: true
|
|
7523
|
+
});
|
|
7524
|
+
Object.defineProperty(Query.prototype, "SuperFiles", {
|
|
7525
|
+
get: function () { return this.get("SuperFiles"); },
|
|
7526
|
+
enumerable: false,
|
|
7527
|
+
configurable: true
|
|
7528
|
+
});
|
|
7529
|
+
Object.defineProperty(Query.prototype, "IsLibrary", {
|
|
7530
|
+
get: function () { return this.get("IsLibrary"); },
|
|
7531
|
+
enumerable: false,
|
|
7532
|
+
configurable: true
|
|
7533
|
+
});
|
|
7534
|
+
Object.defineProperty(Query.prototype, "Priority", {
|
|
7535
|
+
get: function () { return this.get("Priority"); },
|
|
7536
|
+
enumerable: false,
|
|
7537
|
+
configurable: true
|
|
7538
|
+
});
|
|
7539
|
+
Object.defineProperty(Query.prototype, "WUSnapShot", {
|
|
7540
|
+
get: function () { return this.get("WUSnapShot"); },
|
|
7541
|
+
enumerable: false,
|
|
7542
|
+
configurable: true
|
|
7543
|
+
});
|
|
7544
|
+
Object.defineProperty(Query.prototype, "CompileTime", {
|
|
7545
|
+
get: function () { return this.get("CompileTime"); },
|
|
7546
|
+
enumerable: false,
|
|
7547
|
+
configurable: true
|
|
7548
|
+
});
|
|
7549
|
+
Object.defineProperty(Query.prototype, "LibrariesUsed", {
|
|
7550
|
+
get: function () { return this.get("LibrariesUsed"); },
|
|
7551
|
+
enumerable: false,
|
|
7552
|
+
configurable: true
|
|
7553
|
+
});
|
|
7554
|
+
Object.defineProperty(Query.prototype, "CountGraphs", {
|
|
7555
|
+
get: function () { return this.get("CountGraphs"); },
|
|
7556
|
+
enumerable: false,
|
|
7557
|
+
configurable: true
|
|
7558
|
+
});
|
|
7559
|
+
Object.defineProperty(Query.prototype, "ResourceURLCount", {
|
|
7560
|
+
get: function () { return this.get("ResourceURLCount"); },
|
|
7561
|
+
enumerable: false,
|
|
7562
|
+
configurable: true
|
|
7563
|
+
});
|
|
7564
|
+
Object.defineProperty(Query.prototype, "WsEclAddresses", {
|
|
7565
|
+
get: function () { return this.get("WsEclAddresses"); },
|
|
7566
|
+
enumerable: false,
|
|
7567
|
+
configurable: true
|
|
7568
|
+
});
|
|
7569
|
+
Object.defineProperty(Query.prototype, "WUGraphs", {
|
|
7570
|
+
get: function () { return this.get("WUGraphs"); },
|
|
7571
|
+
enumerable: false,
|
|
7572
|
+
configurable: true
|
|
7573
|
+
});
|
|
7574
|
+
Object.defineProperty(Query.prototype, "WUTimers", {
|
|
7241
7575
|
get: function () { return this.get("WUTimers"); },
|
|
7242
7576
|
enumerable: false,
|
|
7243
7577
|
configurable: true
|
|
@@ -7248,17 +7582,40 @@ var Query = /** @class */ (function (_super) {
|
|
|
7248
7582
|
});
|
|
7249
7583
|
return retVal;
|
|
7250
7584
|
};
|
|
7585
|
+
Query.prototype.wsEclService = function () {
|
|
7586
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
7587
|
+
return __generator(this, function (_a) {
|
|
7588
|
+
if (!this._eclService) {
|
|
7589
|
+
this._eclService = this.topology.fetchServices({}).then(function (services) {
|
|
7590
|
+
var _a, _b, _c, _d;
|
|
7591
|
+
for (var _i = 0, _e = (_b = (_a = services === null || services === void 0 ? void 0 : services.TpEspServers) === null || _a === void 0 ? void 0 : _a.TpEspServer) !== null && _b !== void 0 ? _b : []; _i < _e.length; _i++) {
|
|
7592
|
+
var espServer = _e[_i];
|
|
7593
|
+
for (var _f = 0, _g = (_d = (_c = espServer === null || espServer === void 0 ? void 0 : espServer.TpBindings) === null || _c === void 0 ? void 0 : _c.TpBinding) !== null && _d !== void 0 ? _d : []; _f < _g.length; _f++) {
|
|
7594
|
+
var binding = _g[_f];
|
|
7595
|
+
if ((binding === null || binding === void 0 ? void 0 : binding.Service) === "ws_ecl") {
|
|
7596
|
+
var baseUrl = "".concat(binding.Protocol, "://").concat(globalThis.location.hostname, ":").concat(binding.Port);
|
|
7597
|
+
return new EclService({ baseUrl: baseUrl });
|
|
7598
|
+
}
|
|
7599
|
+
}
|
|
7600
|
+
}
|
|
7601
|
+
return undefined;
|
|
7602
|
+
});
|
|
7603
|
+
}
|
|
7604
|
+
return [2 /*return*/, this._eclService];
|
|
7605
|
+
});
|
|
7606
|
+
});
|
|
7607
|
+
};
|
|
7251
7608
|
Query.prototype.fetchDetails = function () {
|
|
7252
7609
|
return __awaiter(this, void 0, void 0, function () {
|
|
7253
7610
|
var queryDetails;
|
|
7254
7611
|
return __generator(this, function (_a) {
|
|
7255
7612
|
switch (_a.label) {
|
|
7256
|
-
case 0: return [4 /*yield*/, this.
|
|
7613
|
+
case 0: return [4 /*yield*/, this.wsWorkunitsService.WUQueryDetails({
|
|
7257
7614
|
QuerySet: this.QuerySet,
|
|
7258
7615
|
QueryId: this.QueryId,
|
|
7259
|
-
IncludeStateOnClusters:
|
|
7260
|
-
IncludeSuperFiles:
|
|
7261
|
-
IncludeWsEclAddresses:
|
|
7616
|
+
IncludeStateOnClusters: true,
|
|
7617
|
+
IncludeSuperFiles: true,
|
|
7618
|
+
IncludeWsEclAddresses: true,
|
|
7262
7619
|
CheckAllNodes: false
|
|
7263
7620
|
})];
|
|
7264
7621
|
case 1:
|
|
@@ -7270,31 +7627,57 @@ var Query = /** @class */ (function (_super) {
|
|
|
7270
7627
|
});
|
|
7271
7628
|
};
|
|
7272
7629
|
Query.prototype.fetchRequestSchema = function () {
|
|
7630
|
+
var _a;
|
|
7273
7631
|
return __awaiter(this, void 0, void 0, function () {
|
|
7274
|
-
var
|
|
7275
|
-
return __generator(this, function (
|
|
7276
|
-
switch (
|
|
7277
|
-
case 0:
|
|
7278
|
-
_a = this;
|
|
7279
|
-
return [4 /*yield*/, this.connection.requestJson(this.QuerySet, this.QueryId)];
|
|
7632
|
+
var wsEclService, _b, e_1;
|
|
7633
|
+
return __generator(this, function (_c) {
|
|
7634
|
+
switch (_c.label) {
|
|
7635
|
+
case 0: return [4 /*yield*/, this.wsEclService()];
|
|
7280
7636
|
case 1:
|
|
7281
|
-
|
|
7282
|
-
|
|
7637
|
+
wsEclService = _c.sent();
|
|
7638
|
+
_c.label = 2;
|
|
7639
|
+
case 2:
|
|
7640
|
+
_c.trys.push([2, 4, , 5]);
|
|
7641
|
+
_b = this;
|
|
7642
|
+
return [4 /*yield*/, (wsEclService === null || wsEclService === void 0 ? void 0 : wsEclService.requestJson(this.QuerySet, this.QueryId))];
|
|
7643
|
+
case 3:
|
|
7644
|
+
_b._requestSchema = (_a = _c.sent()) !== null && _a !== void 0 ? _a : [];
|
|
7645
|
+
return [3 /*break*/, 5];
|
|
7646
|
+
case 4:
|
|
7647
|
+
e_1 = _c.sent();
|
|
7648
|
+
// See: https://track.hpccsystems.com/browse/HPCC-29827
|
|
7649
|
+
logger$2.debug(e_1);
|
|
7650
|
+
this._requestSchema = [];
|
|
7651
|
+
return [3 /*break*/, 5];
|
|
7652
|
+
case 5: return [2 /*return*/];
|
|
7283
7653
|
}
|
|
7284
7654
|
});
|
|
7285
7655
|
});
|
|
7286
7656
|
};
|
|
7287
7657
|
Query.prototype.fetchResponseSchema = function () {
|
|
7658
|
+
var _a;
|
|
7288
7659
|
return __awaiter(this, void 0, void 0, function () {
|
|
7289
|
-
var
|
|
7290
|
-
return __generator(this, function (
|
|
7291
|
-
switch (
|
|
7292
|
-
case 0:
|
|
7293
|
-
_a = this;
|
|
7294
|
-
return [4 /*yield*/, this.connection.responseJson(this.QuerySet, this.QueryId)];
|
|
7660
|
+
var wsEclService, _b, e_2;
|
|
7661
|
+
return __generator(this, function (_c) {
|
|
7662
|
+
switch (_c.label) {
|
|
7663
|
+
case 0: return [4 /*yield*/, this.wsEclService()];
|
|
7295
7664
|
case 1:
|
|
7296
|
-
|
|
7297
|
-
|
|
7665
|
+
wsEclService = _c.sent();
|
|
7666
|
+
_c.label = 2;
|
|
7667
|
+
case 2:
|
|
7668
|
+
_c.trys.push([2, 4, , 5]);
|
|
7669
|
+
_b = this;
|
|
7670
|
+
return [4 /*yield*/, (wsEclService === null || wsEclService === void 0 ? void 0 : wsEclService.responseJson(this.QuerySet, this.QueryId))];
|
|
7671
|
+
case 3:
|
|
7672
|
+
_b._responseSchema = (_a = _c.sent()) !== null && _a !== void 0 ? _a : {};
|
|
7673
|
+
return [3 /*break*/, 5];
|
|
7674
|
+
case 4:
|
|
7675
|
+
e_2 = _c.sent();
|
|
7676
|
+
// See: https://track.hpccsystems.com/browse/HPCC-29827
|
|
7677
|
+
logger$2.debug(e_2);
|
|
7678
|
+
this._responseSchema = {};
|
|
7679
|
+
return [3 /*break*/, 5];
|
|
7680
|
+
case 5: return [2 /*return*/];
|
|
7298
7681
|
}
|
|
7299
7682
|
});
|
|
7300
7683
|
});
|
|
@@ -7312,14 +7695,33 @@ var Query = /** @class */ (function (_super) {
|
|
|
7312
7695
|
});
|
|
7313
7696
|
};
|
|
7314
7697
|
Query.prototype.fetchSummaryStats = function () {
|
|
7315
|
-
return this.
|
|
7698
|
+
return this.wsWorkunitsService.WUQueryGetSummaryStats({ Target: this.QuerySet, QueryId: this.QueryId });
|
|
7316
7699
|
};
|
|
7317
7700
|
Query.prototype.submit = function (request) {
|
|
7318
|
-
|
|
7319
|
-
|
|
7320
|
-
|
|
7321
|
-
|
|
7322
|
-
|
|
7701
|
+
var _a;
|
|
7702
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
7703
|
+
var wsEclService;
|
|
7704
|
+
return __generator(this, function (_b) {
|
|
7705
|
+
switch (_b.label) {
|
|
7706
|
+
case 0: return [4 /*yield*/, this.wsEclService()];
|
|
7707
|
+
case 1:
|
|
7708
|
+
wsEclService = _b.sent();
|
|
7709
|
+
try {
|
|
7710
|
+
return [2 /*return*/, (_a = wsEclService === null || wsEclService === void 0 ? void 0 : wsEclService.submit(this.QuerySet, this.QueryId, request).then(function (results) {
|
|
7711
|
+
for (var key in results) {
|
|
7712
|
+
results[key] = results[key].Row;
|
|
7713
|
+
}
|
|
7714
|
+
return results;
|
|
7715
|
+
})) !== null && _a !== void 0 ? _a : []];
|
|
7716
|
+
}
|
|
7717
|
+
catch (e) {
|
|
7718
|
+
// See: https://track.hpccsystems.com/browse/HPCC-29827
|
|
7719
|
+
logger$2.debug(e);
|
|
7720
|
+
return [2 /*return*/, []];
|
|
7721
|
+
}
|
|
7722
|
+
return [2 /*return*/];
|
|
7723
|
+
}
|
|
7724
|
+
});
|
|
7323
7725
|
});
|
|
7324
7726
|
};
|
|
7325
7727
|
Query.prototype.refresh = function () {
|
|
@@ -7522,341 +7924,6 @@ var Store = /** @class */ (function () {
|
|
|
7522
7924
|
return Store;
|
|
7523
7925
|
}());
|
|
7524
7926
|
|
|
7525
|
-
var TargetClusterCache = /** @class */ (function (_super) {
|
|
7526
|
-
__extends(TargetClusterCache, _super);
|
|
7527
|
-
function TargetClusterCache() {
|
|
7528
|
-
return _super.call(this, function (obj) {
|
|
7529
|
-
return "".concat(obj.BaseUrl, "-").concat(obj.Name);
|
|
7530
|
-
}) || this;
|
|
7531
|
-
}
|
|
7532
|
-
return TargetClusterCache;
|
|
7533
|
-
}(util.Cache));
|
|
7534
|
-
var _targetCluster = new TargetClusterCache();
|
|
7535
|
-
var TargetCluster = /** @class */ (function (_super) {
|
|
7536
|
-
__extends(TargetCluster, _super);
|
|
7537
|
-
function TargetCluster(optsConnection, name) {
|
|
7538
|
-
var _this = _super.call(this) || this;
|
|
7539
|
-
if (optsConnection instanceof TopologyService) {
|
|
7540
|
-
_this.connection = optsConnection;
|
|
7541
|
-
_this.machineConnection = new MachineService(optsConnection.connectionOptions());
|
|
7542
|
-
}
|
|
7543
|
-
else {
|
|
7544
|
-
_this.connection = new TopologyService(optsConnection);
|
|
7545
|
-
_this.machineConnection = new MachineService(optsConnection);
|
|
7546
|
-
}
|
|
7547
|
-
_this.clear({
|
|
7548
|
-
Name: name
|
|
7549
|
-
});
|
|
7550
|
-
return _this;
|
|
7551
|
-
}
|
|
7552
|
-
Object.defineProperty(TargetCluster.prototype, "BaseUrl", {
|
|
7553
|
-
get: function () { return this.connection.baseUrl; },
|
|
7554
|
-
enumerable: false,
|
|
7555
|
-
configurable: true
|
|
7556
|
-
});
|
|
7557
|
-
Object.defineProperty(TargetCluster.prototype, "Name", {
|
|
7558
|
-
get: function () { return this.get("Name"); },
|
|
7559
|
-
enumerable: false,
|
|
7560
|
-
configurable: true
|
|
7561
|
-
});
|
|
7562
|
-
Object.defineProperty(TargetCluster.prototype, "Prefix", {
|
|
7563
|
-
get: function () { return this.get("Prefix"); },
|
|
7564
|
-
enumerable: false,
|
|
7565
|
-
configurable: true
|
|
7566
|
-
});
|
|
7567
|
-
Object.defineProperty(TargetCluster.prototype, "Type", {
|
|
7568
|
-
get: function () { return this.get("Type"); },
|
|
7569
|
-
enumerable: false,
|
|
7570
|
-
configurable: true
|
|
7571
|
-
});
|
|
7572
|
-
Object.defineProperty(TargetCluster.prototype, "IsDefault", {
|
|
7573
|
-
get: function () { return this.get("IsDefault"); },
|
|
7574
|
-
enumerable: false,
|
|
7575
|
-
configurable: true
|
|
7576
|
-
});
|
|
7577
|
-
Object.defineProperty(TargetCluster.prototype, "TpClusters", {
|
|
7578
|
-
get: function () { return this.get("TpClusters"); },
|
|
7579
|
-
enumerable: false,
|
|
7580
|
-
configurable: true
|
|
7581
|
-
});
|
|
7582
|
-
Object.defineProperty(TargetCluster.prototype, "TpEclCCServers", {
|
|
7583
|
-
get: function () { return this.get("TpEclCCServers"); },
|
|
7584
|
-
enumerable: false,
|
|
7585
|
-
configurable: true
|
|
7586
|
-
});
|
|
7587
|
-
Object.defineProperty(TargetCluster.prototype, "TpEclServers", {
|
|
7588
|
-
get: function () { return this.get("TpEclServers"); },
|
|
7589
|
-
enumerable: false,
|
|
7590
|
-
configurable: true
|
|
7591
|
-
});
|
|
7592
|
-
Object.defineProperty(TargetCluster.prototype, "TpEclAgents", {
|
|
7593
|
-
get: function () { return this.get("TpEclAgents"); },
|
|
7594
|
-
enumerable: false,
|
|
7595
|
-
configurable: true
|
|
7596
|
-
});
|
|
7597
|
-
Object.defineProperty(TargetCluster.prototype, "TpEclSchedulers", {
|
|
7598
|
-
get: function () { return this.get("TpEclSchedulers"); },
|
|
7599
|
-
enumerable: false,
|
|
7600
|
-
configurable: true
|
|
7601
|
-
});
|
|
7602
|
-
Object.defineProperty(TargetCluster.prototype, "MachineInfoEx", {
|
|
7603
|
-
get: function () { return this.get("MachineInfoEx", []); },
|
|
7604
|
-
enumerable: false,
|
|
7605
|
-
configurable: true
|
|
7606
|
-
});
|
|
7607
|
-
Object.defineProperty(TargetCluster.prototype, "CMachineInfoEx", {
|
|
7608
|
-
get: function () {
|
|
7609
|
-
var _this = this;
|
|
7610
|
-
return this.MachineInfoEx.map(function (machineInfoEx) { return Machine.attach(_this.machineConnection, machineInfoEx.Address, machineInfoEx); });
|
|
7611
|
-
},
|
|
7612
|
-
enumerable: false,
|
|
7613
|
-
configurable: true
|
|
7614
|
-
});
|
|
7615
|
-
TargetCluster.attach = function (optsConnection, name, state) {
|
|
7616
|
-
var retVal = _targetCluster.get({ BaseUrl: optsConnection.baseUrl, Name: name }, function () {
|
|
7617
|
-
return new TargetCluster(optsConnection, name);
|
|
7618
|
-
});
|
|
7619
|
-
if (state) {
|
|
7620
|
-
retVal.set(__assign({}, state));
|
|
7621
|
-
}
|
|
7622
|
-
return retVal;
|
|
7623
|
-
};
|
|
7624
|
-
TargetCluster.prototype.fetchMachines = function (request) {
|
|
7625
|
-
var _this = this;
|
|
7626
|
-
if (request === void 0) { request = {}; }
|
|
7627
|
-
return this.machineConnection.GetTargetClusterInfo(__assign({ TargetClusters: {
|
|
7628
|
-
Item: ["".concat(this.Type, ":").concat(this.Name)]
|
|
7629
|
-
} }, request)).then(function (response) {
|
|
7630
|
-
var retVal = [];
|
|
7631
|
-
for (var _i = 0, _a = response.TargetClusterInfoList.TargetClusterInfo; _i < _a.length; _i++) {
|
|
7632
|
-
var machineInfo = _a[_i];
|
|
7633
|
-
for (var _b = 0, _c = machineInfo.Processes.MachineInfoEx; _b < _c.length; _b++) {
|
|
7634
|
-
var machineInfoEx = _c[_b];
|
|
7635
|
-
retVal.push(machineInfoEx);
|
|
7636
|
-
}
|
|
7637
|
-
}
|
|
7638
|
-
_this.set("MachineInfoEx", retVal);
|
|
7639
|
-
return _this.CMachineInfoEx;
|
|
7640
|
-
});
|
|
7641
|
-
};
|
|
7642
|
-
TargetCluster.prototype.machineStats = function () {
|
|
7643
|
-
var maxDisk = 0;
|
|
7644
|
-
var totalFree = 0;
|
|
7645
|
-
var total = 0;
|
|
7646
|
-
for (var _i = 0, _a = this.CMachineInfoEx; _i < _a.length; _i++) {
|
|
7647
|
-
var machine = _a[_i];
|
|
7648
|
-
for (var _b = 0, _c = machine.Storage.StorageInfo; _b < _c.length; _b++) {
|
|
7649
|
-
var storageInfo = _c[_b];
|
|
7650
|
-
totalFree += storageInfo.Available;
|
|
7651
|
-
total += storageInfo.Total;
|
|
7652
|
-
var usage = 1 - storageInfo.Available / storageInfo.Total;
|
|
7653
|
-
if (usage > maxDisk) {
|
|
7654
|
-
maxDisk = usage;
|
|
7655
|
-
}
|
|
7656
|
-
}
|
|
7657
|
-
}
|
|
7658
|
-
return {
|
|
7659
|
-
maxDisk: maxDisk,
|
|
7660
|
-
meanDisk: 1 - (total ? totalFree / total : 1)
|
|
7661
|
-
};
|
|
7662
|
-
};
|
|
7663
|
-
TargetCluster.prototype.fetchUsage = function () {
|
|
7664
|
-
return this.machineConnection.GetTargetClusterUsageEx([this.Name]);
|
|
7665
|
-
};
|
|
7666
|
-
return TargetCluster;
|
|
7667
|
-
}(util.StateObject));
|
|
7668
|
-
function targetClusters(optsConnection) {
|
|
7669
|
-
var connection;
|
|
7670
|
-
if (optsConnection instanceof TopologyService) {
|
|
7671
|
-
connection = optsConnection;
|
|
7672
|
-
}
|
|
7673
|
-
else {
|
|
7674
|
-
connection = new TopologyService(optsConnection);
|
|
7675
|
-
}
|
|
7676
|
-
return connection.TpListTargetClusters({}).then(function (response) {
|
|
7677
|
-
return response.TargetClusters.TpClusterNameType.map(function (item) { return TargetCluster.attach(optsConnection, item.Name, item); });
|
|
7678
|
-
});
|
|
7679
|
-
}
|
|
7680
|
-
var _defaultTargetCluster = {};
|
|
7681
|
-
function defaultTargetCluster(optsConnection) {
|
|
7682
|
-
if (!_defaultTargetCluster[optsConnection.baseUrl]) {
|
|
7683
|
-
var connection = void 0;
|
|
7684
|
-
if (optsConnection instanceof TopologyService) {
|
|
7685
|
-
connection = optsConnection;
|
|
7686
|
-
}
|
|
7687
|
-
else {
|
|
7688
|
-
connection = new TopologyService(optsConnection);
|
|
7689
|
-
}
|
|
7690
|
-
_defaultTargetCluster[optsConnection.baseUrl] = connection.TpListTargetClusters({}).then(function (response) {
|
|
7691
|
-
var firstItem;
|
|
7692
|
-
var defaultItem;
|
|
7693
|
-
var hthorItem;
|
|
7694
|
-
response.TargetClusters.TpClusterNameType.forEach(function (item) {
|
|
7695
|
-
if (!firstItem) {
|
|
7696
|
-
firstItem = item;
|
|
7697
|
-
}
|
|
7698
|
-
if (!defaultItem && item.IsDefault === true) {
|
|
7699
|
-
defaultItem = item;
|
|
7700
|
-
}
|
|
7701
|
-
if (!hthorItem && item.Type === "hthor") {
|
|
7702
|
-
hthorItem = item;
|
|
7703
|
-
}
|
|
7704
|
-
});
|
|
7705
|
-
var defItem = defaultItem || hthorItem || firstItem;
|
|
7706
|
-
return TargetCluster.attach(optsConnection, defItem.Name, defItem);
|
|
7707
|
-
});
|
|
7708
|
-
}
|
|
7709
|
-
return _defaultTargetCluster[optsConnection.baseUrl];
|
|
7710
|
-
}
|
|
7711
|
-
|
|
7712
|
-
var TopologyCache = /** @class */ (function (_super) {
|
|
7713
|
-
__extends(TopologyCache, _super);
|
|
7714
|
-
function TopologyCache() {
|
|
7715
|
-
return _super.call(this, function (obj) {
|
|
7716
|
-
return obj.BaseUrl;
|
|
7717
|
-
}) || this;
|
|
7718
|
-
}
|
|
7719
|
-
return TopologyCache;
|
|
7720
|
-
}(util.Cache));
|
|
7721
|
-
var _topology = new TopologyCache();
|
|
7722
|
-
var Topology = /** @class */ (function (_super) {
|
|
7723
|
-
__extends(Topology, _super);
|
|
7724
|
-
function Topology(optsConnection) {
|
|
7725
|
-
var _this = _super.call(this) || this;
|
|
7726
|
-
if (optsConnection instanceof TopologyService) {
|
|
7727
|
-
_this.connection = optsConnection;
|
|
7728
|
-
}
|
|
7729
|
-
else {
|
|
7730
|
-
_this.connection = new TopologyService(optsConnection);
|
|
7731
|
-
}
|
|
7732
|
-
return _this;
|
|
7733
|
-
}
|
|
7734
|
-
Object.defineProperty(Topology.prototype, "BaseUrl", {
|
|
7735
|
-
get: function () { return this.connection.baseUrl; },
|
|
7736
|
-
enumerable: false,
|
|
7737
|
-
configurable: true
|
|
7738
|
-
});
|
|
7739
|
-
Object.defineProperty(Topology.prototype, "properties", {
|
|
7740
|
-
// Accessors ---
|
|
7741
|
-
get: function () { return this.get(); },
|
|
7742
|
-
enumerable: false,
|
|
7743
|
-
configurable: true
|
|
7744
|
-
});
|
|
7745
|
-
Object.defineProperty(Topology.prototype, "TargetClusters", {
|
|
7746
|
-
get: function () { return this.get("TargetClusters"); },
|
|
7747
|
-
enumerable: false,
|
|
7748
|
-
configurable: true
|
|
7749
|
-
});
|
|
7750
|
-
Object.defineProperty(Topology.prototype, "CTargetClusters", {
|
|
7751
|
-
get: function () {
|
|
7752
|
-
var _this = this;
|
|
7753
|
-
return this.TargetClusters.map(function (tc) { return TargetCluster.attach(_this.connection, tc.Name, tc); });
|
|
7754
|
-
},
|
|
7755
|
-
enumerable: false,
|
|
7756
|
-
configurable: true
|
|
7757
|
-
});
|
|
7758
|
-
Object.defineProperty(Topology.prototype, "LogicalClusters", {
|
|
7759
|
-
get: function () { return this.get("LogicalClusters"); },
|
|
7760
|
-
enumerable: false,
|
|
7761
|
-
configurable: true
|
|
7762
|
-
});
|
|
7763
|
-
Object.defineProperty(Topology.prototype, "Services", {
|
|
7764
|
-
get: function () { return this.get("Services"); },
|
|
7765
|
-
enumerable: false,
|
|
7766
|
-
configurable: true
|
|
7767
|
-
});
|
|
7768
|
-
Topology.attach = function (optsConnection) {
|
|
7769
|
-
var retVal = _topology.get({ BaseUrl: optsConnection.baseUrl }, function () {
|
|
7770
|
-
return new Topology(optsConnection);
|
|
7771
|
-
});
|
|
7772
|
-
return retVal;
|
|
7773
|
-
};
|
|
7774
|
-
Topology.prototype.GetESPServiceBaseURL = function (type) {
|
|
7775
|
-
var _this = this;
|
|
7776
|
-
if (type === void 0) { type = ""; }
|
|
7777
|
-
return this.connection.TpServiceQuery({}).then(function (response) {
|
|
7778
|
-
var rootProtocol = _this.connection.protocol();
|
|
7779
|
-
var ip = _this.connection.ip();
|
|
7780
|
-
var port = rootProtocol === "https:" ? "18002" : "8002";
|
|
7781
|
-
if (util.exists("ServiceList.TpEspServers.TpEspServer", response)) {
|
|
7782
|
-
for (var _i = 0, _a = response.ServiceList.TpEspServers.TpEspServer; _i < _a.length; _i++) {
|
|
7783
|
-
var item = _a[_i];
|
|
7784
|
-
if (util.exists("TpBindings.TpBinding", item)) {
|
|
7785
|
-
for (var _b = 0, _c = item.TpBindings.TpBinding; _b < _c.length; _b++) {
|
|
7786
|
-
var binding = _c[_b];
|
|
7787
|
-
if (binding.Service === type && binding.Protocol + ":" === rootProtocol) {
|
|
7788
|
-
port = binding.Port;
|
|
7789
|
-
}
|
|
7790
|
-
}
|
|
7791
|
-
}
|
|
7792
|
-
}
|
|
7793
|
-
}
|
|
7794
|
-
return "".concat(rootProtocol, "//").concat(ip, ":").concat(port, "/");
|
|
7795
|
-
});
|
|
7796
|
-
};
|
|
7797
|
-
Topology.prototype.fetchTargetClusters = function () {
|
|
7798
|
-
var _this = this;
|
|
7799
|
-
return this.connection.TpTargetClusterQuery({ Type: "ROOT" }).then(function (response) {
|
|
7800
|
-
var _a, _b;
|
|
7801
|
-
_this.set({
|
|
7802
|
-
TargetClusters: (_b = (_a = response.TpTargetClusters) === null || _a === void 0 ? void 0 : _a.TpTargetCluster) !== null && _b !== void 0 ? _b : []
|
|
7803
|
-
});
|
|
7804
|
-
return _this.CTargetClusters;
|
|
7805
|
-
});
|
|
7806
|
-
};
|
|
7807
|
-
Topology.prototype.fetchLogicalClusters = function (request) {
|
|
7808
|
-
var _this = this;
|
|
7809
|
-
if (request === void 0) { request = {}; }
|
|
7810
|
-
return this.connection.TpLogicalClusterQuery(request).then(function (response) {
|
|
7811
|
-
_this.set({
|
|
7812
|
-
LogicalClusters: response.TpLogicalClusters.TpLogicalCluster
|
|
7813
|
-
});
|
|
7814
|
-
return _this.LogicalClusters;
|
|
7815
|
-
});
|
|
7816
|
-
};
|
|
7817
|
-
Topology.prototype.fetchServices = function (request) {
|
|
7818
|
-
var _this = this;
|
|
7819
|
-
if (request === void 0) { request = {}; }
|
|
7820
|
-
return this.connection.TpServiceQuery(request).then(function (response) {
|
|
7821
|
-
_this.set({
|
|
7822
|
-
Services: response.ServiceList
|
|
7823
|
-
});
|
|
7824
|
-
return _this.Services;
|
|
7825
|
-
});
|
|
7826
|
-
};
|
|
7827
|
-
Topology.prototype.refresh = function (force) {
|
|
7828
|
-
var _this = this;
|
|
7829
|
-
if (force === void 0) { force = false; }
|
|
7830
|
-
if (!this._prevRefresh || force) {
|
|
7831
|
-
this._prevRefresh = Promise.all([this.fetchTargetClusters(), this.fetchLogicalClusters(), this.fetchServices()]).then(function () {
|
|
7832
|
-
return _this;
|
|
7833
|
-
});
|
|
7834
|
-
}
|
|
7835
|
-
return this._prevRefresh;
|
|
7836
|
-
};
|
|
7837
|
-
// Monitoring ---
|
|
7838
|
-
// Events ---
|
|
7839
|
-
Topology.prototype.on = function (eventID, propIDorCallback, callback) {
|
|
7840
|
-
if (this.isCallback(propIDorCallback)) {
|
|
7841
|
-
switch (eventID) {
|
|
7842
|
-
case "changed":
|
|
7843
|
-
_super.prototype.on.call(this, eventID, propIDorCallback);
|
|
7844
|
-
break;
|
|
7845
|
-
}
|
|
7846
|
-
}
|
|
7847
|
-
else {
|
|
7848
|
-
switch (eventID) {
|
|
7849
|
-
case "changed":
|
|
7850
|
-
_super.prototype.on.call(this, eventID, propIDorCallback, callback);
|
|
7851
|
-
break;
|
|
7852
|
-
}
|
|
7853
|
-
}
|
|
7854
|
-
this._monitor();
|
|
7855
|
-
return this;
|
|
7856
|
-
};
|
|
7857
|
-
return Topology;
|
|
7858
|
-
}(util.StateObject));
|
|
7859
|
-
|
|
7860
7927
|
var logger$1 = util.scopedLogger("@hpcc-js/comms/dfuWorkunit.ts");
|
|
7861
7928
|
var States;
|
|
7862
7929
|
(function (States) {
|