'*** '*** Copyright © 2013 ViCon GmbH '*** '*** Use this script at your own risk! '*** Option Explicit '*********************************************************************************************************************************************************************************************** '**************************************************************** DON'T TOUCH ANYTHING ABOVE THIS COMMENT !!! ********************************************************************************** '*********************************************************************************************************************************************************************************************** Const CREATE_ZIP = True ' possible values: TRUE | FALSE Const INCLUDE_DATABASE_WITHIN_ZIP = True ' possible values: TRUE | FALSE Const DISPLAY_FINISH_MESSAGE = True ' possible values: TRUE | FALSE Const SEND_MAIL = True ' possible values: TRUE | FALSE Const MAIL_SERVER = "mail.mydomain.tld" ' server.domain.tld Const MAIL_PORT = 25 ' normally 25! Const MAIL_USER = "username" ' username for server authentication Const MAIL_PASS = "password" ' password for server authentication Const MAIL_AUTH = 0 ' authentication schema; possible values: 0 | 1 | 2 (Anonymous | Basic | NTLM) Const MAIL_USESSL = False ' secure mail communication; possible values: TRUE | FALSE Const MAIL_SENDER = "sender@mydomain.tld" ' sender address Const MAIL_RECIPIENT = "recipient1@mydomain.tld;recipient2@mydomain.tld" ' recipient address(es) Const MAIL_SUBJECT = "Created new WebModel!" ' desired mail subject Const MAIL_TEXT = "A new WebModel has been placed here: %PATH%" ' desired mail text (body) Const FINISH_MESSAGE_TITLE = "WebWizard Batch Operation" ' desired title of the finish message Const FINISH_MESSAGE_TEXT_SUCCESS = "Batch operation finished." ' desired success message Const FINISH_MESSAGE_TEXT_FAILED = "Batch operation failed." ' desired failure message Const FINISH_MESSAGE_TEXT_DELAY = "This message will disappear within %DELAY% seconds." ' desired delay message Const FINISH_MESSAGE_DELAY = 5 ' desired delay '*********************************************************************************************************************************************************************************************** '**************************************************************** DON'T TOUCH ANYTHING BELOW THIS COMMENT !!! ********************************************************************************** '*********************************************************************************************************************************************************************************************** Call Main Sub Main() Dim fso ' file system object Dim sh ' WScript shell Dim xd ' xml document Dim xn ' xml node Dim wp ' WebModel path Dim dp ' database path Dim tp ' target path Dim sz ' multiple usage [string] On Error Resume Next Set fso = CreateObject("Scripting.FileSystemObject") ' prepare file system object. If Cbool(Err.number) Then Call Err.Clear Exit Sub End If Set sh = CreateObject("WScript.Shell") ' prepare scripting shell. If Cbool(Err.number) Then Call Err.Clear Exit Sub End If Set xd = CreateObject("MSXML.DOMDocument") ' prepare xml reader. If Cbool(Err.number) Then Call Err.Clear Exit Sub End If On Error Goto 0 dp = sh.RegRead("HKCU\Software\VB And VBA Program Settings\ViCon\ViFlow\050\ViFlow\Database") ' let's get and validate ViFlow If Not(fso.FileExists(dp)) Then Exit Sub ' database path. sz = sh.RegRead("HKCU\Software\VB And VBA Program Settings\ViCon\ViFlow\050\WebWizard\PropertyFile") ' let's get and validate WebWizard If Not(fso.FileExists(sz)) Then Exit Sub ' settings path. If Not(xd.Load(sz)) Then Exit Sub Set xn = xd.SelectSingleNode("/properties/categories/category[@key=""allg0a""]/settings/setting[@key=""allg1a""]/values/value") ' let's extract WebModel export path If xn Is Nothing Then Exit Sub ' from settings. sz = xn.Text ' translate path to a full path if If sz = "%DEF_EXPORTPATH%" Then sz = sh.SpecialFolders("MyDocuments") & "\ViFlow\WebModels" ' required. If Right(sz, 1) <> "\" Then sz = sz & "\" sz = Left(sz, Len(sz) - 1) wp = sz sz = Right(dp, Len(dp) - InstrRev(dp, "\")) ' attach database name without sz = Left(sz, InstrRev(sz, ".") - 1) ' extension to export path for wp = wp & "\" & sz ' resulting in WebModel path. If Not(fso.FolderExists(wp)) Then Exit Sub If CREATE_ZIP Then tp = wp & ".zip" ' name zip container accordingly. If createZIP(tp, wp, dp) Then ' create zip file. On Error Resume Next Call fso.DeleteFolder(wp, True) ' on successful zip file creation Call fso.DeleteFile(wp & ".htm", True) ' we remove the WebModel folder and ' base file. If SEND_MAIL Then Call sendMail(tp) ' let's send notification if requested. If CBool(Err.number) Then Call Err.Clear On Error Goto 0 sz = FINISH_MESSAGE_TEXT_SUCCESS Else sz = FINISH_MESSAGE_TEXT_FAILED End If Else If SEND_MAIL Then Call sendMail(wp) ' let's send notification if requested. End If If CBool(Len(FINISH_MESSAGE_TEXT_DELAY)) Then sz = sz & vbCrLf & vbCrLf & Replace(FINISH_MESSAGE_TEXT_DELAY, "%DELAY%", CStr(FINISH_MESSAGE_DELAY)) If DISPLAY_FINISH_MESSAGE Then Call sh.Popup(sz, FINISH_MESSAGE_DELAY, FINISH_MESSAGE_TITLE, 64) Set xn = Nothing Set xd = Nothing Set sh = Nothing Set fso = Nothing End Sub Function createZIP(myZipFile, myWebModel, myDatabase) Dim fso ' file system object Dim fl ' file object Dim sa ' shell application Dim zc ' zip container Dim n On Error Resume Next Set fso = CreateObject("Scripting.FileSystemObject") ' prepare file system object. If Not(fso Is Nothing) Then myZipFile = fso.GetAbsolutePathName(myZipFile) ' prepare path parameters. myWebModel = fso.GetAbsolutePathName(myWebModel) Set fl = fso.CreateTextFile(myZipFile, True, False) ' create base zip container. If Not(fl Is Nothing) Then Call fl.Write(Chr(80) & Chr(75) & Chr(5) & Chr(6) & String(18, 0)) Call fl.Close Set fl = Nothing If Not(CBool(Err.number)) Then Set sa = CreateObject("Shell.Application") ' get shell application object. If Not(sa Is Nothing) Then Set zc = sa.NameSpace(myZipFile) ' get processing namespace. n = 0 Call zc.CopyHere(CStr(myWebModel), 256) ' move folder to zip. If Not(CBool(Err.Number)) Then n = n + 1 Do ' wait until process completes. Call WScript.Sleep(100) Loop Until zc.Items.Count >= n Or CBool(Err.number) If fso.FileExists(CStr(myWebModel & ".htm")) Then Call zc.CopyHere(CStr(myWebModel & ".htm"), 4) ' move base html file to zip. If Not(CBool(Err.Number)) Then n = n + 1 End If Do ' wait until process completes. Call WScript.Sleep(100) Loop Until zc.Items.Count >= n Or CBool(Err.number) If INCLUDE_DATABASE_WITHIN_ZIP Then Call zc.CopyHere(CStr(myDatabase), 256) ' move database to zip. If Not(CBool(Err.Number)) Then n = n + 1 End If Do ' wait until process completes. Call WScript.Sleep(100) Loop Until zc.Items.Count >= n Or CBool(Err.number) createZIP = Not(CBool(Err.number)) ' finally set return code. Set zc = Nothing End If End If End If If CBool(Err.number) And fso.FileExists(myZipFile) Then Call fso.DeleteFile(myZipFile, True) Set fso = Nothing End If End Function Sub sendMail(myZipFile) Dim eml On Error Resume Next Set eml = CreateObject("CDO.Message") If eml Is Nothing Then Exit Sub With eml .From = MAIL_SENDER .To = MAIL_RECIPIENT .Subject = MAIL_SUBJECT .Textbody = Replace(MAIL_TEXT, "%PATH%", myZipFile) .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = MAIL_SERVER .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = MAIL_PORT .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = MAIL_AUTH .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = MAIL_USER .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = MAIL_PASS .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = MAIL_USESSL Call .Configuration.Fields.Update Call .Send End With If CBool(Err.number) Then Call Err.Clear End Sub '' SIG '' Begin signature block '' SIG '' MIIZdgYJKoZIhvcNAQcCoIIZZzCCGWMCAQExCzAJBgUr '' SIG '' DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB '' SIG '' gjcCAR4wJAIBAQQQTvApFpkntU2P5azhDxfrqwIBAAIB '' SIG '' AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFNVOfxzQYKdb '' SIG '' uVRaxdFvO3FfCWs2oIIUFzCCA+4wggNXoAMCAQICEH6T '' SIG '' 6/t8xk5Z6kuad9QG/DswDQYJKoZIhvcNAQEFBQAwgYsx '' SIG '' CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh '' SIG '' cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK '' SIG '' EwZUaGF3dGUxHTAbBgNVBAsTFFRoYXd0ZSBDZXJ0aWZp '' SIG '' Y2F0aW9uMR8wHQYDVQQDExZUaGF3dGUgVGltZXN0YW1w '' SIG '' aW5nIENBMB4XDTEyMTIyMTAwMDAwMFoXDTIwMTIzMDIz '' SIG '' NTk1OVowXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5 '' SIG '' bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h '' SIG '' bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0g '' SIG '' RzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB '' SIG '' AQCxrLNJVEuXHBIK2CV5kSJXKm/cuCbEQ3Nrwr8uUFr7 '' SIG '' FMJ2jkMBJUO0oeJF9Oi3e8N0zCLXtJQAAvdN7b+0t0Qk '' SIG '' a81fRTvRRM5DEnMXgotptCvLmR6schsmTXEfsTHd+1Fh '' SIG '' AlOmqvVJLAV4RaUvic7nmef+jOJXPz3GktxK+Hsz5HkK '' SIG '' +/B1iEGc/8UDUZmq12yfk2mHZSmDhcJgFMTIyTsU2sCB '' SIG '' 8B8NdN6SIqvK9/t0fCfm90obf6fDni2uiuqm5qonFn1h '' SIG '' 95hxEbziUKFL5V365Q6nLJ+qZSDT2JboyHylTkhE/xni '' SIG '' RAeSC9dohIBdanhkRc1gRn5UwRN8xXnxycFxAgMBAAGj '' SIG '' gfowgfcwHQYDVR0OBBYEFF+a9W5czMx0mtTdfe8/2+xM '' SIG '' gC7dMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcwAYYW '' SIG '' aHR0cDovL29jc3AudGhhd3RlLmNvbTASBgNVHRMBAf8E '' SIG '' CDAGAQH/AgEAMD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHA6 '' SIG '' Ly9jcmwudGhhd3RlLmNvbS9UaGF3dGVUaW1lc3RhbXBp '' SIG '' bmdDQS5jcmwwEwYDVR0lBAwwCgYIKwYBBQUHAwgwDgYD '' SIG '' VR0PAQH/BAQDAgEGMCgGA1UdEQQhMB+kHTAbMRkwFwYD '' SIG '' VQQDExBUaW1lU3RhbXAtMjA0OC0xMA0GCSqGSIb3DQEB '' SIG '' BQUAA4GBAAMJm495739ZMKrvaLX64wkdu0+CBl03X6ZS '' SIG '' nxaN6hySCURu9W3rWHww6PlpjSNzCxJvR6muORH4KrGb '' SIG '' sBrDjutZlgCtzgxNstAxpghcKnr84nodV0yoZRjpeUBi '' SIG '' JZZux8c3aoMhCI5B6t3ZVz8dd0mHKhYGXqY4aiISo1EZ '' SIG '' g362MIIEozCCA4ugAwIBAgIQDs/0OMj+vzVuBNhqmBsa '' SIG '' UDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEd '' SIG '' MBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xMDAu '' SIG '' BgNVBAMTJ1N5bWFudGVjIFRpbWUgU3RhbXBpbmcgU2Vy '' SIG '' dmljZXMgQ0EgLSBHMjAeFw0xMjEwMTgwMDAwMDBaFw0y '' SIG '' MDEyMjkyMzU5NTlaMGIxCzAJBgNVBAYTAlVTMR0wGwYD '' SIG '' VQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjE0MDIGA1UE '' SIG '' AxMrU3ltYW50ZWMgVGltZSBTdGFtcGluZyBTZXJ2aWNl '' SIG '' cyBTaWduZXIgLSBHNDCCASIwDQYJKoZIhvcNAQEBBQAD '' SIG '' ggEPADCCAQoCggEBAKJjCzlEuLsjp0RJuw7/ofBhClOT '' SIG '' sJjbrSwPSsVu/4Y8U1UPFc4EPyv9qZaW2b5heQtbyUyG '' SIG '' duXgQ0sile7CK0PBn9hotI5AT+6FOLkRxSPyZFjwFTJv '' SIG '' TlehroikAtcqHs1L4d1j1ReJMluwXplaqJ0oUA4X7pbb '' SIG '' YTtFUR3PElYLkkf8q672Zj1HrHBy55LnX80QucSDZJQZ '' SIG '' vSWA4ejSIqXQugJ6oXeTW2XD7hd0vEGGKtwITIySjJEt '' SIG '' nndEH2jWqHR32w5bMotWizO92WPISZ06xcXqMwvS8aMb '' SIG '' 9Iu+2bNXizveBKd6IrIkri7HcMW+ToMmCPsLvalPmQjh '' SIG '' EChyqs0CAwEAAaOCAVcwggFTMAwGA1UdEwEB/wQCMAAw '' SIG '' FgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwDgYDVR0PAQH/ '' SIG '' BAQDAgeAMHMGCCsGAQUFBwEBBGcwZTAqBggrBgEFBQcw '' SIG '' AYYeaHR0cDovL3RzLW9jc3Aud3Muc3ltYW50ZWMuY29t '' SIG '' MDcGCCsGAQUFBzAChitodHRwOi8vdHMtYWlhLndzLnN5 '' SIG '' bWFudGVjLmNvbS90c3MtY2EtZzIuY2VyMDwGA1UdHwQ1 '' SIG '' MDMwMaAvoC2GK2h0dHA6Ly90cy1jcmwud3Muc3ltYW50 '' SIG '' ZWMuY29tL3Rzcy1jYS1nMi5jcmwwKAYDVR0RBCEwH6Qd '' SIG '' MBsxGTAXBgNVBAMTEFRpbWVTdGFtcC0yMDQ4LTIwHQYD '' SIG '' VR0OBBYEFEbGaaMOShQe1UzaUmMXP142vA3mMB8GA1Ud '' SIG '' IwQYMBaAFF+a9W5czMx0mtTdfe8/2+xMgC7dMA0GCSqG '' SIG '' SIb3DQEBBQUAA4IBAQB4O7SRKgBM8I9iMDd4o4QnB28Y '' SIG '' st4l3KDUlAOqhk4ln5pAAxzdzuN5yyFoBtq2MrRtv/Qs '' SIG '' JmMz5ElkbQ3mw2cO9wWkNWx8iRbG6bLfsundIMZxD82V '' SIG '' dNy2XN69Nx9DeOZ4tc0oBCCjqvFLxIgpkQ6A0RH83Vx2 '' SIG '' bk9eDkVGQW4NsOo4mrE62glxEPwcebSAe6xp9P2ctgwW '' SIG '' K/F/Wwk9m1viFsoTgW0ALjgNqCmPLOGy9FqpAa8VnCwv '' SIG '' SRvbIrvD/niUUcOGsYKIXfA9tFGheTMrLnu53CAJE3Hr '' SIG '' ahlbz+ilMFcsiUk/uc9/yb8+ImhjU5q9aXSsxR08f5Lg '' SIG '' w7wc2AR1MIIFbDCCBFSgAwIBAgIQYfIq/fE4YfrTOob3 '' SIG '' bsBXOzANBgkqhkiG9w0BAQUFADCBtDELMAkGA1UEBhMC '' SIG '' VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYD '' SIG '' VQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYD '' SIG '' VQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cu '' SIG '' dmVyaXNpZ24uY29tL3JwYSAoYykxMDEuMCwGA1UEAxMl '' SIG '' VmVyaVNpZ24gQ2xhc3MgMyBDb2RlIFNpZ25pbmcgMjAx '' SIG '' MCBDQTAeFw0xMDEyMTQwMDAwMDBaFw0xNDAxMjEyMzU5 '' SIG '' NTlaMIGvMQswCQYDVQQGEwJERTEWMBQGA1UECBMNTmll '' SIG '' ZGVyc2FjaHNlbjERMA8GA1UEBxMISGFubm92ZXIxEzAR '' SIG '' BgNVBAoUClZpQ29uIEdtYkgxPjA8BgNVBAsTNURpZ2l0 '' SIG '' YWwgSUQgQ2xhc3MgMyAtIE1pY3Jvc29mdCBTb2Z0d2Fy '' SIG '' ZSBWYWxpZGF0aW9uIHYyMQswCQYDVQQLFAJJVDETMBEG '' SIG '' A1UEAxQKVmlDb24gR21iSDCCASIwDQYJKoZIhvcNAQEB '' SIG '' BQADggEPADCCAQoCggEBALBGgc2pZ2tEeI1AZ884vjXr '' SIG '' uXnPR36nsWG2rDjv8aOLsYLxLytypcyqUufVl1anV5+0 '' SIG '' SuoGcXwcmeeso3ba3ZyyqDHGI87h8W/UbLAbW1yXOYrC '' SIG '' CoBFgrgCUQlAayEnzUq+YL/uvt5pR//e8ibE3dxUS93+ '' SIG '' ogAg/f0rgL/h83z0nuAevE7vB7kiR98/e05SkhkpdxnH '' SIG '' MWbzrCbPTTdNxxqpT+lfN9M4cyd7XCqBNasFWafFTG2A '' SIG '' MtnMqcofP5/q21zUK4zcw8LynJI1qUdZHEqoLdvIFYT8 '' SIG '' cqDL7y6IsCv2hleD+jR4tq0mPTK7qtm221ekAoKfEbCp '' SIG '' 67DphFE1NmkCAwEAAaOCAXswggF3MAkGA1UdEwQCMAAw '' SIG '' DgYDVR0PAQH/BAQDAgeAMEAGA1UdHwQ5MDcwNaAzoDGG '' SIG '' L2h0dHA6Ly9jc2MzLTIwMTAtY3JsLnZlcmlzaWduLmNv '' SIG '' bS9DU0MzLTIwMTAuY3JsMEQGA1UdIAQ9MDswOQYLYIZI '' SIG '' AYb4RQEHFwMwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93 '' SIG '' d3cudmVyaXNpZ24uY29tL3JwYTATBgNVHSUEDDAKBggr '' SIG '' BgEFBQcDAzBxBggrBgEFBQcBAQRlMGMwJAYIKwYBBQUH '' SIG '' MAGGGGh0dHA6Ly9vY3NwLnZlcmlzaWduLmNvbTA7Bggr '' SIG '' BgEFBQcwAoYvaHR0cDovL2NzYzMtMjAxMC1haWEudmVy '' SIG '' aXNpZ24uY29tL0NTQzMtMjAxMC5jZXIwHwYDVR0jBBgw '' SIG '' FoAUz5mp6nsm9EvJjo/X8AUm7+PSp50wEQYJYIZIAYb4 '' SIG '' QgEBBAQDAgQQMBYGCisGAQQBgjcCARsECDAGAQEAAQH/ '' SIG '' MA0GCSqGSIb3DQEBBQUAA4IBAQA9qFMor6cAVs9rT6NU '' SIG '' Arhuf4l6P2VH5LKxJxURjFTB1ZYlI5y1crJ166EK6gZ6 '' SIG '' Ze62GWFCGz7zVH+b/Rm8aWGLelMFf0Hicgt1MQ3RS7aX '' SIG '' emC+oxZSJruSeWm9hK52DTBrxpqKPW1kbPsWedQyBOOI '' SIG '' 7BpDIXlEFdWbXyeGcBAOZcgDpaNVIM/b7ZpD1w3scmdy '' SIG '' b/Nj3ryI7ExXA0hiYzqRf7vqsbPTZXJ34o0B88STqefG '' SIG '' kCjop9DpdTtB8tjVNhissCF7L/gicGji3xGAxzBSYLP9 '' SIG '' TVMQIBm+TkpbFOkP+Q1ZtiU3t6gwn3ovt2Z7iYR8DOrG '' SIG '' rOHWejq2CResA+4HMIIGCjCCBPKgAwIBAgIQUgDlqiVW '' SIG '' /BqG7ZbJ1EszxzANBgkqhkiG9w0BAQUFADCByjELMAkG '' SIG '' A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMu '' SIG '' MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3Jr '' SIG '' MTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5j '' SIG '' LiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYD '' SIG '' VQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt '' SIG '' YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUw '' SIG '' HhcNMTAwMjA4MDAwMDAwWhcNMjAwMjA3MjM1OTU5WjCB '' SIG '' tDELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWdu '' SIG '' LCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO '' SIG '' ZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQg '' SIG '' aHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykx '' SIG '' MDEuMCwGA1UEAxMlVmVyaVNpZ24gQ2xhc3MgMyBDb2Rl '' SIG '' IFNpZ25pbmcgMjAxMCBDQTCCASIwDQYJKoZIhvcNAQEB '' SIG '' BQADggEPADCCAQoCggEBAPUjS16l14q7MunUV/fv5Mcm '' SIG '' fq0ZmP6onX2U9jZrENd1gTB/BGh/yyt1Hs0dCIzfaZSn '' SIG '' N6Oce4DgmeHuN01fzjsU7obU0PUnNbwlCzinjGOdF6MI '' SIG '' pauw+81qYoJM1SHaG9nx44Q7iipPhVuQAU/Jp3YQfycD '' SIG '' fL6ufn3B3fkFvBtInGnnwKQ8PEEAPt+W5cXklHHWVQHH '' SIG '' ACZKQDy1oSapDKdtgI6QJXvPvz8c6y+W+uWHd8a1VrJ6 '' SIG '' O1QwUxvfYjT/HtH0WpMoheVMF05+W/2kk5l/383vpHXv '' SIG '' 7xX2R+f4GXLYLjQaprSnTH69u08MPVfxMNamNo7WgHbX '' SIG '' GS6lzX40LYkCAwEAAaOCAf4wggH6MBIGA1UdEwEB/wQI '' SIG '' MAYBAf8CAQAwcAYDVR0gBGkwZzBlBgtghkgBhvhFAQcX '' SIG '' AzBWMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJp '' SIG '' c2lnbi5jb20vY3BzMCoGCCsGAQUFBwICMB4aHGh0dHBz '' SIG '' Oi8vd3d3LnZlcmlzaWduLmNvbS9ycGEwDgYDVR0PAQH/ '' SIG '' BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFswWTBXMFUW '' SIG '' CWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O '' SIG '' a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlz '' SIG '' aWduLmNvbS92c2xvZ28uZ2lmMDQGA1UdHwQtMCswKaAn '' SIG '' oCWGI2h0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTMt '' SIG '' ZzUuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcw '' SIG '' AYYYaHR0cDovL29jc3AudmVyaXNpZ24uY29tMB0GA1Ud '' SIG '' JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDAzAoBgNVHREE '' SIG '' ITAfpB0wGzEZMBcGA1UEAxMQVmVyaVNpZ25NUEtJLTIt '' SIG '' ODAdBgNVHQ4EFgQUz5mp6nsm9EvJjo/X8AUm7+PSp50w '' SIG '' HwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMw '' SIG '' DQYJKoZIhvcNAQEFBQADggEBAFYi5jSkxGHLSLkBrVao '' SIG '' ZA/ZjJHEu8wM5a16oCJ/30c4Si1s0X9xGnzscKmx8E/k '' SIG '' DwxT+hVe/nSYSSSFgSYckRRHsExjjLuhNNTGRegNhSZz '' SIG '' A9CpjGRt3HGS5kUFYBVZUTn8WBRr/tSk7XlrCAxBcuc3 '' SIG '' IgYJviPpP0SaHulhncyxkFz8PdKNrEI9ZTbUtD1AKI+b '' SIG '' EM8jJsxLIMuQH12MTDTKPNjlN9ZvpSC9NOsm2a4N58Wa '' SIG '' 96G0IZEzb4boWLslfHQOWP51G2M/zjF8m48blp7FU3aE '' SIG '' W5ytkfqs7ZO6XcghU8KCU2OvEg1QhxEbPVRSloosnD2S '' SIG '' GgiaBS7Hk6VIkdMxggTLMIIExwIBATCByTCBtDELMAkG '' SIG '' A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMu '' SIG '' MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3Jr '' SIG '' MTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6 '' SIG '' Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDEuMCwG '' SIG '' A1UEAxMlVmVyaVNpZ24gQ2xhc3MgMyBDb2RlIFNpZ25p '' SIG '' bmcgMjAxMCBDQQIQYfIq/fE4YfrTOob3bsBXOzAJBgUr '' SIG '' DgMCGgUAoIHIMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3 '' SIG '' AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEV '' SIG '' MCMGCSqGSIb3DQEJBDEWBBSmjnLUAas0Y0W++cA4cVpY '' SIG '' LFHQhzBoBgorBgEEAYI3AgEMMVowWKAwgC4AVwBlAGIA '' SIG '' VwBpAHoAYQByAGQAIABFAHgAYQBtAHAAbABlACAAQgBh '' SIG '' AHQAYwBooSSAImh0dHA6Ly9zdXBwb3J0LnZpY29uLmJp '' SIG '' ei9rYi8xMDI4MSAwDQYJKoZIhvcNAQEBBQAEggEAixnV '' SIG '' 7qt40pJk2JRjPGAJvkPLUsjrXzgsJsYJxNu8f00j0VsU '' SIG '' 105e+1ZMaUuV2UTibTVkmMJ3Yqtt+XGGtA6TBbXe4SXZ '' SIG '' pBRMtyZ9FHPWx6/ZGNamBSnzybxEOr013asDwOyddNUE '' SIG '' Bw7A0DSIBt9T8H9mXEpjxF38YTir8VSFHvrevgIsryWR '' SIG '' jM9L+iB4uv25h0sUc22MkfRxl3TMl/+cBBKX3Suep5jD '' SIG '' FDxBDswIZYSI2FlIpaPD+TBLZDoYN345cOfwTkHrQskw '' SIG '' wNIoU919cm3LDT6olQ9+ZH6LTrLfhBTUvkywXEI3P66Z '' SIG '' wQt9scygJCCQYEbgAmD+Ksm4bUwqB6GCAgswggIHBgkq '' SIG '' hkiG9w0BCQYxggH4MIIB9AIBATByMF4xCzAJBgNVBAYT '' SIG '' AlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3JhdGlv '' SIG '' bjEwMC4GA1UEAxMnU3ltYW50ZWMgVGltZSBTdGFtcGlu '' SIG '' ZyBTZXJ2aWNlcyBDQSAtIEcyAhAOz/Q4yP6/NW4E2GqY '' SIG '' GxpQMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJ '' SIG '' KoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xMzAzMjYx '' SIG '' MDUxMTdaMCMGCSqGSIb3DQEJBDEWBBTbyxH4ur1/WhGI '' SIG '' syHOu/AhZxOcOjANBgkqhkiG9w0BAQEFAASCAQBsyZSd '' SIG '' CKFeMqkMiXZRdEZbJna1A87cI3eC5LAOT+3utFNPXGDo '' SIG '' wqXY85rYB2eg28kEBAnHPxuKxqZKSa9pA/0QFJPl/Pm8 '' SIG '' GTvUUHHOBAtqsK2SRylHzqbGsxPOk53Ni3B5wTUmzLPC '' SIG '' 1vshW56hEJSYQsbYKHlaiKCXZvBxGwUik24JjeMRoXmz '' SIG '' 3UkCqWmcjPclKkY5QCBTcTVyjPEjpYEJst0pkzJ8h2YH '' SIG '' jcmJv9/64VNczLLLrFp1nLBkWpWk7DU9Z1LqCc6yHB/C '' SIG '' qCsxmwR3buDTbNaBvjtETwiUvFIPmU+mb5SX7YBt0n/E '' SIG '' S9VMSO4X8c5jcnOPT215SOpbBZ3Y '' SIG '' End signature block