From 3ed1e9917885237d019a52ada66d56e6f5203bf3 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 15:09:19 +0100 Subject: [PATCH 01/31] Fixed issue with displaying the LastLoggedOnDisplayName when the reg key does not exist --- Toast_Notify.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Toast_Notify.ps1 b/Toast_Notify.ps1 index eb1c2f6..4113813 100644 --- a/Toast_Notify.ps1 +++ b/Toast_Notify.ps1 @@ -100,7 +100,7 @@ If ($XMLValid -eq $True) { #Get last(current) logged on user $LoggedOnUserPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI" - If (!(Test-Path $LoggedOnUserPath)) { + If (!((Get-ItemProperty $LoggedOnUserPath).LastLoggedOnDisplayName)) { Try { $Firstname = $Null } From 273cfbd1909d674ce0a18dc29f2753f1b93f2e2d Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 15:34:41 +0100 Subject: [PATCH 02/31] Updated Help File --- Toast_Notify.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Toast_Notify.ps1 b/Toast_Notify.ps1 index 4113813..0f29473 100644 --- a/Toast_Notify.ps1 +++ b/Toast_Notify.ps1 @@ -6,11 +6,11 @@ Filename: Toast_Notify.ps1 =========================================================================== .SYNOPSIS -The purpose of the script is to create simple Toast Notifications in Windows 10 +The purpose of the script is to create simple Toast Notifications in Windows 10, deliverd as a package by MEMCM. .DESCRIPTION Toast_Notify.ps1 will read an XML file so Toast Notifications can be changed "on the fly" without having to repackage an application. The CustomMessage.xml file can be hosted on a fileshare. -To create a custom XML, copy CustomMessage.xml and edit the text you want to disaply in the toast notification. The following files should be present in the Script Directory +To create a custom XML, copy CustomMessage.xml and edit the text you want to disaply in the toast notification. The following files should be present in the Script Directory when you create the package in MEMCM:- Toast_Notify.ps1 BadgeImage.jpg From 63f7ed40528646ae3c073307b2bd8e07bac2df55 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 15:40:35 +0100 Subject: [PATCH 03/31] Update README.md --- README.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/README.md b/README.md index 9a68073..8b37b66 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,30 @@ # Toast +Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM +Toast_Notify.ps1 will read an XML file on a file share so Toast Notifications can be changed "on the fly" without having to repackage. +To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Reference that file using one of the script parameters. + +The following files should be present in the Script Directory when you create the package in MEMCM:- + +Toast_Notify.ps1 +BadgeImage.jpg +HeroImage.jpg +CustomMessage.xml + +.PARAMETER XMLScriptDirSource +Specify the name of the XML file to read. The XML file must exist in the same directory as Toast_Notify.ps1. If no parameter is passed, it is assumed the XML file is called CustomMessage.xml. + +.PARAMETER XMLOtherSource +Specify the location of the Custom XML file used for the Toast when it is not in the MEMCM package + +.EXAMPLE +Toast_Notify.ps1 -XMLOtherSource "\\fileserverhome\xml\CustomMessage.xml" + +.EXAMPLE +Toast_Notify.ps1 -XMLSciptDirSource "PhoneSystemProblems.xml" + +.EXAMPLE +Toast_Notify.ps1 + +**Known Issues** +Currently, the images in the XML can only be read from the local files system. This is not an issue if we are deploying the package from MEMCM. Further development will see the ability to convert images to Base64 or host them on a web server From ad5204c097881e495e8fd7078164e833f07a6021 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 15:41:22 +0100 Subject: [PATCH 04/31] Update README.md --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 8b37b66..fd49be6 100644 --- a/README.md +++ b/README.md @@ -4,27 +4,27 @@ Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed a Toast_Notify.ps1 will read an XML file on a file share so Toast Notifications can be changed "on the fly" without having to repackage. To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Reference that file using one of the script parameters. -The following files should be present in the Script Directory when you create the package in MEMCM:- - +The following files should be present in the Script Directory when you create the package in MEMCM:- + Toast_Notify.ps1 BadgeImage.jpg HeroImage.jpg CustomMessage.xml - -.PARAMETER XMLScriptDirSource + +.PARAMETER XMLScriptDirSource Specify the name of the XML file to read. The XML file must exist in the same directory as Toast_Notify.ps1. If no parameter is passed, it is assumed the XML file is called CustomMessage.xml. - -.PARAMETER XMLOtherSource + +.PARAMETER XMLOtherSource Specify the location of the Custom XML file used for the Toast when it is not in the MEMCM package - -.EXAMPLE + +.EXAMPLE Toast_Notify.ps1 -XMLOtherSource "\\fileserverhome\xml\CustomMessage.xml" - -.EXAMPLE + +.EXAMPLE Toast_Notify.ps1 -XMLSciptDirSource "PhoneSystemProblems.xml" - -.EXAMPLE + +.EXAMPLE Toast_Notify.ps1 - -**Known Issues** + +**Known Issues** Currently, the images in the XML can only be read from the local files system. This is not an issue if we are deploying the package from MEMCM. Further development will see the ability to convert images to Base64 or host them on a web server From 02b316e8796f6d5afaae97299cd66b5ab32373b6 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 15:41:57 +0100 Subject: [PATCH 05/31] Update README.md --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index fd49be6..6113499 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,13 @@ Toast_Notify.ps1 will read an XML file on a file share so Toast Notifications ca To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Reference that file using one of the script parameters. The following files should be present in the Script Directory when you create the package in MEMCM:- +** +Toast_Notify.ps1 +BadgeImage.jpg +HeroImage.jpg +CustomMessage.xml -Toast_Notify.ps1 -BadgeImage.jpg -HeroImage.jpg -CustomMessage.xml - +** .PARAMETER XMLScriptDirSource Specify the name of the XML file to read. The XML file must exist in the same directory as Toast_Notify.ps1. If no parameter is passed, it is assumed the XML file is called CustomMessage.xml. From f69da6c5bad6884956fb5b8e05b91bc46209eab0 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 15:42:29 +0100 Subject: [PATCH 06/31] Update README.md --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6113499..26b1b5d 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,14 @@ Toast_Notify.ps1 will read an XML file on a file share so Toast Notifications ca To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Reference that file using one of the script parameters. The following files should be present in the Script Directory when you create the package in MEMCM:- -** -Toast_Notify.ps1 + + +**Toast_Notify.ps1 BadgeImage.jpg HeroImage.jpg -CustomMessage.xml +CustomMessage.xml** + -** .PARAMETER XMLScriptDirSource Specify the name of the XML file to read. The XML file must exist in the same directory as Toast_Notify.ps1. If no parameter is passed, it is assumed the XML file is called CustomMessage.xml. From fbd203e20bd080fb6542eabb0ad09d226e345731 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 15:43:03 +0100 Subject: [PATCH 07/31] Update README.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 26b1b5d..d99990d 100644 --- a/README.md +++ b/README.md @@ -13,19 +13,19 @@ HeroImage.jpg CustomMessage.xml** -.PARAMETER XMLScriptDirSource +**.PARAMETER XMLScriptDirSource** Specify the name of the XML file to read. The XML file must exist in the same directory as Toast_Notify.ps1. If no parameter is passed, it is assumed the XML file is called CustomMessage.xml. -.PARAMETER XMLOtherSource +**.PARAMETER XMLOtherSource** Specify the location of the Custom XML file used for the Toast when it is not in the MEMCM package -.EXAMPLE +**.EXAMPLE** Toast_Notify.ps1 -XMLOtherSource "\\fileserverhome\xml\CustomMessage.xml" -.EXAMPLE +**.EXAMPLE** Toast_Notify.ps1 -XMLSciptDirSource "PhoneSystemProblems.xml" -.EXAMPLE +**.EXAMPLE** Toast_Notify.ps1 **Known Issues** From c8ec57078d10ab21f7f8c4a473e9b127f224e0c0 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 15:46:48 +0100 Subject: [PATCH 08/31] Update README.md --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d99990d..bd36ec1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Toast -Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM +Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM Toast_Notify.ps1 will read an XML file on a file share so Toast Notifications can be changed "on the fly" without having to repackage. To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Reference that file using one of the script parameters. @@ -30,3 +30,15 @@ Toast_Notify.ps1 **Known Issues** Currently, the images in the XML can only be read from the local files system. This is not an issue if we are deploying the package from MEMCM. Further development will see the ability to convert images to Base64 or host them on a web server + + +**Thanks for the help from** + + @guyrleech + @young_robbo + +**Community** + + Seriously check our Martin Bentsson's work on Toasts. It is very comprehensive. https://www.imab.dk/windows-10-toast-notification-script/ + I challenged myself to learn how Windows Toasts work so this was a labour of love for me. I have enjoyed the ride so far + From aa66e4eb99297ccd7d8422cdcebc858e98caa75a Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 15:47:24 +0100 Subject: [PATCH 09/31] Update README.md --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index bd36ec1..935eea6 100644 --- a/README.md +++ b/README.md @@ -29,16 +29,13 @@ Toast_Notify.ps1 -XMLSciptDirSource "PhoneSystemProblems.xml" Toast_Notify.ps1 **Known Issues** -Currently, the images in the XML can only be read from the local files system. This is not an issue if we are deploying the package from MEMCM. Further development will see the ability to convert images to Base64 or host them on a web server - +Currently, the images in the XML can only be read from the local files system. This is not an issue if we are deploying the package from MEMCM. Further development will see the ability to convert images to Base64 or host them on a web server. **Thanks for the help from** - @guyrleech @young_robbo **Community** - Seriously check our Martin Bentsson's work on Toasts. It is very comprehensive. https://www.imab.dk/windows-10-toast-notification-script/ I challenged myself to learn how Windows Toasts work so this was a labour of love for me. I have enjoyed the ride so far From 20a9b8a058a067646c50f854d2bd344ceafcd67e Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 15:47:55 +0100 Subject: [PATCH 10/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 935eea6..0012638 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Toast -Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM +Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM Toast_Notify.ps1 will read an XML file on a file share so Toast Notifications can be changed "on the fly" without having to repackage. To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Reference that file using one of the script parameters. From ff014a92b0dc123714acc58bcfa5267487cd76a9 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 15:48:04 +0100 Subject: [PATCH 11/31] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0012638..8c6816c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Toast -Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM +Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM + Toast_Notify.ps1 will read an XML file on a file share so Toast Notifications can be changed "on the fly" without having to repackage. To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Reference that file using one of the script parameters. From 6273ef83eee736e6041f4abca799bc007bca4cf8 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 15:51:41 +0100 Subject: [PATCH 12/31] Update README.md --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8c6816c..e8f6c81 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,13 @@ Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM Toast_Notify.ps1 will read an XML file on a file share so Toast Notifications can be changed "on the fly" without having to repackage. -To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Reference that file using one of the script parameters. - -The following files should be present in the Script Directory when you create the package in MEMCM:- +To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Reference that file using one of the script parameters. +**Points to Consider** + +I am using an existing app in Windows to call the Toasts. This script creates two buttons in the Toast, "Details" and "Dismiss". Cicking details is designed to take the user to an internal Service Desk announcement page. For that reason, **MSEdge** works really well because the Toast Action launches the browser in the foreground. Oh, you will need MSEdge installed on your client computers for this to work. + +The following files should be present in the Script Directory when you create the package in MEMCM:- **Toast_Notify.ps1 BadgeImage.jpg From 9bff7e8135cbb2c4250d93403d7b1facef0d35e2 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 15:57:06 +0100 Subject: [PATCH 13/31] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e8f6c81..2132f3a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ -# Toast - +# Toast + + https://byteben.com/bb/toast-example/ + Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM Toast_Notify.ps1 will read an XML file on a file share so Toast Notifications can be changed "on the fly" without having to repackage. From 359c7332bb14edaf722e772261a9d98f6b08e488 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 15:57:31 +0100 Subject: [PATCH 14/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2132f3a..1331c81 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Toast - https://byteben.com/bb/toast-example/ + http://byteben.com/bb/wp-content/uploads/2020/07/Toast-Example.jpg Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM From 13f119ec2cd540f54896026ea7069da810e25945 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 15:58:06 +0100 Subject: [PATCH 15/31] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1331c81..795eb0f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Toast - http://byteben.com/bb/wp-content/uploads/2020/07/Toast-Example.jpg + http://byteben.com/bb/wp-content/uploads/2020/07/Toast-Example.jpg + http://byteben.com/bb/wp-content/uploads/2020/07/Content-Example.jpg Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM From 47cbbde49f7e8ca2daaa5c3f2f90b4baec5e2cfa Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 16:01:19 +0100 Subject: [PATCH 16/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 795eb0f..6d6e50f 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ http://byteben.com/bb/wp-content/uploads/2020/07/Toast-Example.jpg http://byteben.com/bb/wp-content/uploads/2020/07/Content-Example.jpg -Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM +Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM. The "Set and forget" mentality of packages works really well because we don't need to specify a detection method once the script has run. Toast_Notify.ps1 will read an XML file on a file share so Toast Notifications can be changed "on the fly" without having to repackage. To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Reference that file using one of the script parameters. From efd1b0ac0e682848f1b3d6c29e6e62e3fcce926e Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 16:21:56 +0100 Subject: [PATCH 17/31] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 6d6e50f..abff930 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,7 @@ Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed a Toast_Notify.ps1 will read an XML file on a file share so Toast Notifications can be changed "on the fly" without having to repackage. To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Reference that file using one of the script parameters. -**Points to Consider** - +**Points to Consider** I am using an existing app in Windows to call the Toasts. This script creates two buttons in the Toast, "Details" and "Dismiss". Cicking details is designed to take the user to an internal Service Desk announcement page. For that reason, **MSEdge** works really well because the Toast Action launches the browser in the foreground. Oh, you will need MSEdge installed on your client computers for this to work. The following files should be present in the Script Directory when you create the package in MEMCM:- From 211d29f020285865cdb83a0a68ba7d988a6f7330 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 16:38:01 +0100 Subject: [PATCH 18/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index abff930..c26f4fb 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ http://byteben.com/bb/wp-content/uploads/2020/07/Toast-Example.jpg http://byteben.com/bb/wp-content/uploads/2020/07/Content-Example.jpg -Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM. The "Set and forget" mentality of packages works really well because we don't need to specify a detection method once the script has run. +Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM. Toast_Notify.ps1 will read an XML file on a file share so Toast Notifications can be changed "on the fly" without having to repackage. To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Reference that file using one of the script parameters. From bd97565adec2e0e97e8aab8c3ebd37aff0ce8355 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 16:40:00 +0100 Subject: [PATCH 19/31] Removed legacy $Time variable --- Toast_Notify.ps1 | 3 --- 1 file changed, 3 deletions(-) diff --git a/Toast_Notify.ps1 b/Toast_Notify.ps1 index 0f29473..8aea7c9 100644 --- a/Toast_Notify.ps1 +++ b/Toast_Notify.ps1 @@ -86,9 +86,6 @@ If ($XMLValid -eq $True) { #ToastDuration: Short = 7s, Long = 25s $ToastDuration = "long" - #Toast Time Format - $Time = Get-Date -Format HH:mm - #Images $BadgeImage = "file:///$CurrentDir/badgeimage.jpg" $HeroImage = "file:///$CurrentDir/heroimage.jpg" From aed254b96bb1c64076f8ac36ae4d9fd1b34cf3be Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 16:44:32 +0100 Subject: [PATCH 20/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c26f4fb..a874fda 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ http://byteben.com/bb/wp-content/uploads/2020/07/Toast-Example.jpg http://byteben.com/bb/wp-content/uploads/2020/07/Content-Example.jpg -Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM. +Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM. The "Set and forget" mentality of packages works really well because we don't need to specify a detection method once the script has run. Toast_Notify.ps1 will read an XML file on a file share so Toast Notifications can be changed "on the fly" without having to repackage. To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Reference that file using one of the script parameters. From 7fe5a09cf7a8a8827ae2bb8b314ace1fab423713 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 18:26:32 +0100 Subject: [PATCH 21/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a874fda..7d7ed90 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ Specify the name of the XML file to read. The XML file must exist in the same di Specify the location of the Custom XML file used for the Toast when it is not in the MEMCM package **.EXAMPLE** -Toast_Notify.ps1 -XMLOtherSource "\\fileserverhome\xml\CustomMessage.xml" +Toast_Notify.ps1 -XMLOtherSource "\\\\fileserverhome\xml\CustomMessage.xml" **.EXAMPLE** Toast_Notify.ps1 -XMLSciptDirSource "PhoneSystemProblems.xml" From e8f15c0603394db872dff887b234e0b93347c6f2 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Wed, 22 Jul 2020 18:31:30 +0100 Subject: [PATCH 22/31] Update README.md --- README.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7d7ed90..9fb3892 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,15 @@ # Toast + +**Screenshots** http://byteben.com/bb/wp-content/uploads/2020/07/Toast-Example.jpg http://byteben.com/bb/wp-content/uploads/2020/07/Content-Example.jpg +**Description** Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM. The "Set and forget" mentality of packages works really well because we don't need to specify a detection method once the script has run. -Toast_Notify.ps1 will read an XML file on a file share so Toast Notifications can be changed "on the fly" without having to repackage. -To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Reference that file using one of the script parameters. +Toast_Notify.ps1 will read an XML file on a file share or from the same directory. If the XML is stored on a fileservr, theo Toast Notifications can be changed "on the fly" without having to repackage the script. +To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Place the modified XML in the script directory or on a fileserver. Call your custom file using one of the script parameters below. **Points to Consider** I am using an existing app in Windows to call the Toasts. This script creates two buttons in the Toast, "Details" and "Dismiss". Cicking details is designed to take the user to an internal Service Desk announcement page. For that reason, **MSEdge** works really well because the Toast Action launches the browser in the foreground. Oh, you will need MSEdge installed on your client computers for this to work. @@ -18,12 +21,14 @@ BadgeImage.jpg HeroImage.jpg CustomMessage.xml** +**Parameters** +You should specify either XMLScriptSourceDir **or** XMLOtherSource parameters but not both. If you specify no parameter the script will read the CustomMessage.xml in the script root. **.PARAMETER XMLScriptDirSource** Specify the name of the XML file to read. The XML file must exist in the same directory as Toast_Notify.ps1. If no parameter is passed, it is assumed the XML file is called CustomMessage.xml. **.PARAMETER XMLOtherSource** -Specify the location of the Custom XML file used for the Toast when it is not in the MEMCM package +Specify the location of the Custom XML file used for the Toast when it is not the same directory as Toast_Notify.ps1 e.g the full UNC path to the XML file. **.EXAMPLE** Toast_Notify.ps1 -XMLOtherSource "\\\\fileserverhome\xml\CustomMessage.xml" @@ -35,7 +40,7 @@ Toast_Notify.ps1 -XMLSciptDirSource "PhoneSystemProblems.xml" Toast_Notify.ps1 **Known Issues** -Currently, the images in the XML can only be read from the local files system. This is not an issue if we are deploying the package from MEMCM. Further development will see the ability to convert images to Base64 or host them on a web server. +Currently, the images in the XML can only be read from the local file system. This is not an issue if we are deploying the package from MEMCM. **Thanks for the help from** @guyrleech From 4aad364bd2ef8e16f15c7f436e05a1d2544c6966 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Thu, 23 Jul 2020 07:50:58 +0100 Subject: [PATCH 23/31] Update README.md --- README.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9fb3892..8c425c7 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,15 @@ http://byteben.com/bb/wp-content/uploads/2020/07/Toast-Example.jpg http://byteben.com/bb/wp-content/uploads/2020/07/Content-Example.jpg -**Description** +**Description** + Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM. The "Set and forget" mentality of packages works really well because we don't need to specify a detection method once the script has run. Toast_Notify.ps1 will read an XML file on a file share or from the same directory. If the XML is stored on a fileservr, theo Toast Notifications can be changed "on the fly" without having to repackage the script. To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Place the modified XML in the script directory or on a fileserver. Call your custom file using one of the script parameters below. **Points to Consider** + I am using an existing app in Windows to call the Toasts. This script creates two buttons in the Toast, "Details" and "Dismiss". Cicking details is designed to take the user to an internal Service Desk announcement page. For that reason, **MSEdge** works really well because the Toast Action launches the browser in the foreground. Oh, you will need MSEdge installed on your client computers for this to work. The following files should be present in the Script Directory when you create the package in MEMCM:- @@ -25,28 +27,36 @@ CustomMessage.xml** You should specify either XMLScriptSourceDir **or** XMLOtherSource parameters but not both. If you specify no parameter the script will read the CustomMessage.xml in the script root. **.PARAMETER XMLScriptDirSource** + Specify the name of the XML file to read. The XML file must exist in the same directory as Toast_Notify.ps1. If no parameter is passed, it is assumed the XML file is called CustomMessage.xml. -**.PARAMETER XMLOtherSource** +**.PARAMETER XMLOtherSource** + Specify the location of the Custom XML file used for the Toast when it is not the same directory as Toast_Notify.ps1 e.g the full UNC path to the XML file. **.EXAMPLE** + Toast_Notify.ps1 -XMLOtherSource "\\\\fileserverhome\xml\CustomMessage.xml" **.EXAMPLE** + Toast_Notify.ps1 -XMLSciptDirSource "PhoneSystemProblems.xml" **.EXAMPLE** + Toast_Notify.ps1 -**Known Issues** +**Known Issues** + Currently, the images in the XML can only be read from the local file system. This is not an issue if we are deploying the package from MEMCM. **Thanks for the help from** + @guyrleech @young_robbo **Community** + Seriously check our Martin Bentsson's work on Toasts. It is very comprehensive. https://www.imab.dk/windows-10-toast-notification-script/ I challenged myself to learn how Windows Toasts work so this was a labour of love for me. I have enjoyed the ride so far From 60ca7e3b0025623a4a7766d2a5ed0603ec8435a9 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Thu, 23 Jul 2020 08:03:13 +0100 Subject: [PATCH 24/31] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c425c7..33c3b91 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,9 @@ **Description** -Toast_Notify.ps1 is a simple Toast Notification script designed to be deployed as a package from MEMCM. The "Set and forget" mentality of packages works really well because we don't need to specify a detection method once the script has run. +The "Toast Notify" solution will pop a notification toast from the system tray in Windows 10 (See Toast-Example.jpg). This project was born out of the desire for me to understand Toast Notifications better and seek t replace a 3rd party desktop notification solution. The titles, texts and action button are customisable via an XML document. + +Toast_Notify.ps1 is a script designed to be deployed as a package from MEMCM. The "Set and forget" mentality of packages works really well because we don't need to specify a detection method once the script has run. Toast_Notify.ps1 will read an XML file on a file share or from the same directory. If the XML is stored on a fileservr, theo Toast Notifications can be changed "on the fly" without having to repackage the script. To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Place the modified XML in the script directory or on a fileserver. Call your custom file using one of the script parameters below. From 24c0a33adbcb019ca8a4ec70e7b6f74b24bef684 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Thu, 23 Jul 2020 08:03:36 +0100 Subject: [PATCH 25/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 33c3b91..a27d774 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ **Description** -The "Toast Notify" solution will pop a notification toast from the system tray in Windows 10 (See Toast-Example.jpg). This project was born out of the desire for me to understand Toast Notifications better and seek t replace a 3rd party desktop notification solution. The titles, texts and action button are customisable via an XML document. +The "Toast Notify" solution will pop a notification toast from the system tray in Windows 10 (See Toast-Example.jpg). This project was born out of the desire for me to understand Toast Notifications better and seek to replace a 3rd party desktop notification solution. The titles, texts and action button are customisable via an XML document. Toast_Notify.ps1 is a script designed to be deployed as a package from MEMCM. The "Set and forget" mentality of packages works really well because we don't need to specify a detection method once the script has run. From 364ddff0c4753b909023e6e38e0587915c6eabd9 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Thu, 23 Jul 2020 08:10:21 +0100 Subject: [PATCH 26/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a27d774..e8921c3 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ The following files should be present in the Script Directory when you create th **Toast_Notify.ps1 BadgeImage.jpg -HeroImage.jpg +HeroImage.jpg (364 x 180px, 3MB Normal Connection / 1MB Metered Connection) CustomMessage.xml** **Parameters** From 58b2997f33657e46de14ef99968895d56b3c2c92 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Thu, 23 Jul 2020 08:11:37 +0100 Subject: [PATCH 27/31] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e8921c3..c975b08 100644 --- a/README.md +++ b/README.md @@ -22,9 +22,11 @@ The following files should be present in the Script Directory when you create th **Toast_Notify.ps1 BadgeImage.jpg -HeroImage.jpg (364 x 180px, 3MB Normal Connection / 1MB Metered Connection) +HeroImage.jpg (364 x 180px, 3MB Normal Connection / 1MB Metered Connection) CustomMessage.xml** +More on Toast Content can be found here:- https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/adaptive-interactive-toasts + **Parameters** You should specify either XMLScriptSourceDir **or** XMLOtherSource parameters but not both. If you specify no parameter the script will read the CustomMessage.xml in the script root. From 7a1371453095c103f30eb2768bb3498c9d938b36 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Thu, 23 Jul 2020 08:12:51 +0100 Subject: [PATCH 28/31] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c975b08..367ba3b 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,8 @@ BadgeImage.jpg HeroImage.jpg (364 x 180px, 3MB Normal Connection / 1MB Metered Connection) CustomMessage.xml** -More on Toast Content can be found here:- https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/adaptive-interactive-toasts +More information and Toast Content guidelines can be found at:- +https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/toast-ux-guidance **Parameters** You should specify either XMLScriptSourceDir **or** XMLOtherSource parameters but not both. If you specify no parameter the script will read the CustomMessage.xml in the script root. From bd8a40bd810157bc44f994f25cca71dc6f64578d Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Thu, 23 Jul 2020 08:15:13 +0100 Subject: [PATCH 29/31] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 367ba3b..86cd8bf 100644 --- a/README.md +++ b/README.md @@ -63,5 +63,7 @@ Currently, the images in the XML can only be read from the local file system. Th **Community** Seriously check our Martin Bentsson's work on Toasts. It is very comprehensive. https://www.imab.dk/windows-10-toast-notification-script/ - I challenged myself to learn how Windows Toasts work so this was a labour of love for me. I have enjoyed the ride so far + I don't believe in reinventing the wheel, part of me was saying "Use Martin's Script", but I challenged myself to learn how Windows Toasts work from the ground up - so this project was a labour of love for me. I have enjoyed the ride so far. + + If you have any comments, feedback or would like to contribute - please don't be shy! From 860f01e39cd2451f2af4ead8099646bd2f480916 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Thu, 23 Jul 2020 13:50:18 +0100 Subject: [PATCH 30/31] Updated heroimage.jpg and CustomMessage.xml content --- CustomMessage.xml | 4 ++-- heroimage.jpg | Bin 25405 -> 19975 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CustomMessage.xml b/CustomMessage.xml index 1b39fe2..4f02a1b 100644 --- a/CustomMessage.xml +++ b/CustomMessage.xml @@ -2,8 +2,8 @@ We want to bring to your attention some important information. Please review the details below before contacting the Service Desk Sent on behalf of the ICT Service Desk - Major IT Issues - We are currently experiencing problems with all our systems. We are drinking coffee will provide an update shortly. Thank you for your patience + Major IT Issues - Flooding + We are currently experiencing problems with all our systems. We are drinking coffee with our feet up and will provide an update shortly. Thank you for your patience Details https://byteben.com \ No newline at end of file diff --git a/heroimage.jpg b/heroimage.jpg index 9ff75c939c946023f009bef457edbd66d7275875..25571206221a27c925d37ba0c1751396bc72f578 100644 GIT binary patch delta 19524 zcmV)6K*+zn#sP<%0kCBPf3yK?0|5~L0uccN5dr_&01N{G00I#M5dc2`;5t`HnA}p_ zeoR~%wb+5*(wNxV1hgt#3<@5)q3q481;lmaPjjhk7ZzN>wFL7{dTD5J;+3II?j81X>194R4=6-;{$6d)Wa4`ITXy$1?5 z819q}3se9F0EGg9iUj~;YFbKNsVXqlq+No?J85|?ktdZlOlPOHTi0TC(CuKICs4>i z2C*#@;-q3wv;rw(e-bGKWF9G}Z9{Xk_<7<+(I*;J+kc`;e{#+I41a*1L)x`W=A3P+ zK7bygw=fZgMn5VCu+=+;(~OP|C=G~VWsLbngEvq;2c<2B_0*@iZEiNGW50vJB7*lq zUB=5Oc;hU3`M-A*Zkoe*@O2Lhv}I%Gg6md6LSL ziW{=fYkM2kEBml3$DZu!U5yyfp&fv%N-JtOC^22MH!_)w1}oC^IqhLUqhLDCHE{^9 zIIN+#3Mkln3r}%}wK41zAzYz-f2YTKq!G}_t+=>wtbST$o$Ld{OVCTJ*vXoRbe<^QEy~&AkkXz9jnAaZ?H5qtF;g9en{-&qe zK8A{#MqJ)G)+HG8f`7V-Kc!DRnE4VjPm1+y{{Y9-qv&x(+t%f%#cq!hHR|;|$Do8! z!rvRQdhLG>T!6mBiI zI$IwIUu^Rybc!-E1ANX$QSy$N9;UE$5`3{*{skq~n(g4*jlOC(?(v*A4u1}V{3}S* ze~!}JmwnN5Pt&aIkh>?JBw_cKJC_?z%m+*_Y!0<;>!z9+r`*}_I;1*eH&2I}b9&@{B>#+xqB#CtS9fm~Qk&K+E?fxD4uG)26p~|;kk%NL#*QxPC zYPTAF;k&bTg~8yj85z#jUW6X%ax2<`f4ov;OGlyWJ{|GRuCKPcPHgIJP};Bv8ZmKJcZp%U>bpr%}567pcgc30%n1tz0I;* zuGbl+rC?~}Wrl4UP4VQ$dWz`ML~L}{SLt}0l=JCa@>VHoUd4MxWM{T>Q3~&u-T06=Yp%t8S5`Jr1c5=8LKJb54mr=Te_sCe(M}3p z{N0jQW^YGiVc2+<-^FhB+I+#qu`y2gINk;b2iy34PAS<^_vEyDFCp6g>9eZEYozJZ z$cytOynr6y?IY=*>s;!zr0vktks=)qH-}BMhmVrpBG~9RC_mQ~%`07+oX^Bt$G6hm zR17y6V~lZ*J9EXfzR(FAM7#v!~K)^VzHDIwOfrzqu1;;D}72KJ*$Z$KAlwhFzTn+{uRXH;_Pb| za`0-4SfRks0*0rtLhhgt?9u?;O)CsDjwl$(5oKMhG7U8Cu#Qsdf5KfpPd?l3^($Im znGlDkq{UCs}AZSB}n=p{Y}`Mh>QM!o3&}VsLZ#1Z@e+smOj*1EXRprguw%v||j=s~ux|P5M)gc6b%SHhHAZHcE@eo=o zx8#fEeNK`e0LLERI#V$}ct`T8@#=X$O3&*T>0q^vlEXx@(||F@8hV!bn>`22eR}cq zu6b3sS-pz-#6tCvBy6VPh}hsr!|pBz@Po}b)a6Y@Yi<7kf0Rx={{Z36AH?1;u<)hg zTU<&~?@)AKD;*ahHxf8d4sq-Btsza-j8j@isPD^mx}5@QO>XINAj-L5ndlII7{{*| zpt@-_QV8`R{kFbY3RW1qT6teh1mrm3Qna`i;FHrDPL zn1umMd!Gw{f89c7__4>Y0+&0NxVF>g7Uk8SA?k4Ie+M;K{{XWkOZzQUhm9Rdv*Ju` zb?O~Sz+uBzxUF3{R92L2bYXs7R>!`0gIc|lN4i^xtR6~BFI;ofcdlnf z5Kd9O{J~AOlRX;J1-G}3G53-v)Q-d~YCgOkYsqhYe-4e=U#igq%m_yVjMRIr8S@&?e>&Wy!&n#azLuwTWnd=bw4-vQv9+G z#+9rz&ALSoqzGP}X?cuLIL|os#XDb6B-qP>Ltymdtu9ssg5E;G0yg8&Vyl(*9qpiv z42p17fgP#xOR%}Dc|Cfp^L86T>@CSE$rq&se?118R#avmrFidi zs>S+3*r#!$UtS+F-ri{uM=TKFXWqN$)Pz-~B%fx?q?>vz4xdQ)W2j!JlI@n!2_GpN zq`~jBa6cN(rZ$~BsNPS@MSoGoo9m(JT7Sdc7f%DsiLRtxS*2r-$#4Mf1$fmlwPfuU zf1duJMNbA$cu#CI`Ac;nBxKN`VN$bV)cRBQ|+Pfax6a>q72P^`RcCa6YeLZp3 ziAR$6)$|&7*lRPisN6mj;db(;KPd;_f2TFfoRYFMvOawA=Y}o3c=y`Hjm&9#qN8o{ z+kcqRe(DgLYyV`tiRx#wsLK*hR?%Wy=Pysit}7juZCDzlVv|XaN|`(a%LdPL17rk-MZyM=AG@jl?vKHi+<);ME8EG4q>?b~3BVgYGJlnG(34lS?nO;4V=GpQ-gb-Z z;wEEr9C-*nRgJeglhE|%KGo4ue@~I8b#h?69W*$3S8?!!sM>0rQ_r-d@4#K&cBN&;u zI~0+hLxX|(*GzR+Io^zkV_6PV{Jx*(>6)<+5snQoB#7XB4;5RJvFJJve~l%w0t?*D z5a2)Yp#K2bfc)zjQ_|?P?0TK8>{pSAU~wWhLJ#PD53#Ohn$eo3Sr6$_G2y7UU|I{h zjfOZkYAi9?rD37K(hY|SHUlpEOcVa{FP1^bBAQ@9WvDc59CqtkB#75y8`z?jP3yA^0juV*C&~tc1|S^Ol1bBwWNaTwt%?%_ z@CHw%ChQ|$Oz_5`eAx1rM*0`!kTHQ@zta^2)g5gb}f9`z4jnWicM;Z>l zJ75+)0Iwmwv~SnaL6C8ij}uyI6eepSa2oOm*JC z?#E5F#a4^AI{0s6e|XC3&vOgnw~I9|2n!3F6k%r9Kk3p0-WCv7DBs=O3EF)|DkxHo zS18Hqm%6WQM&#pb9WJv4uZ?s$VbgBXDD_B++RvP1_ZxU)(5nH+=CP)oDv8c5^1HNL zoz|UCEcjb_bEe5ZhILDD4~JEs&xn$;mS!k90CXg&=s@SCe|nXwN0C*F`1DJ+bDc+9 zc0Dh{cZsjt$Eryrl6|5_Yk1sk@^+IRFgt>$J+sI>)^bWQv{jY0eOR@>|&?BJZQsTJx_ zp%)%`?Z1+-f6pmCYa=`1e}fmnwwDmy+(ka4aO*AFqXzQ$J7ZzVJy@|L3{M>^ml0dq zwBnkA(mHSEZ5Zo2VuqsZ%T?uyUBmUif-B*zmEJnd#mVj zS=f#DWGGn7n*$8v%yu7pU_0^Cit3Ewr_A+#!#WXVt&kTrQl6`pkSD?vS=uwt+Sqhw-F*)tX#t8c371tdSFnTdeBRPzKP5=Y$ zkC&29YORD;m5y-33_APO0Fe-@lhAWalC#d+f3x>}1u!FXYb3Wl@hh>Lz`I=h2ZpN+H@NcbqZ^-hlPj78C!(tS7KkTVL z(w)-Xq&0J|)4UO=-a4#^U{=R0J$<`Y60I1krk%SFk+Y-Iz8f^NG&fFH833rr;BZf| zu1Vsp9%cUk1hosh7vD+KG>D!gjJ?VMf4s5I-Mp6L?&r|<>q;|~O>dwzV~Nsr%Y9MZ z?MWeIDV&fprvwjgO4*?jX}&AJ@zsoaY-o_Ey^<0G0DfQfeqi8$21zG^ewEM38gg}H z`hDHaF65L^cfejVlfyT+ULNsNymv85(nTwfU|VniU9LC@fyb_WYl9I(+FG>~f1GW1 zZQq@Zp(Pc__cE{Ny3ssh_m*>u>m5?ru3gw-g!~NVYIl;lmu4uVaa;H60zMHGP zjUB9-F6dq%yZDgW#f{N0=yytOf2^blhWT@uM(!VW19QMU15@myMMk3d)~{VX1Dl)O z=*&M4Xg~0g>lQ1gJ4K;*RlJzVKQ+zL{L&GQ56#OrOmI5XN^YDbDeF4Ff-NiAEs?$B zId3)XeS9mYt6D*FiFK%5#0Zv1fhw^U8QQEy&`+&R2*t(Kp3%BV_Y~V&e0x(jW#zM$3$RSC>^aq^RLayUY(OWmG>u$tytK9GlPwg*+ zek6TYUSG9Y>aQvpqHyHqe?Z9Wr|y;G1g9-lUDf{E7NzEQ|ZgU zv%i%k%lUB?F0YI!Cm0*M5)MH2uNs`)H)!s(H*rsL^fw|^j6p8tPy;dNBe322;oQ7O{Dn2_0m#1e?rXgtRn++sSF$r z7Ym*T1f18m3hH#ZUi%!)S=}CwYj*b9r?%jS9;usf2PI@0*42!cC8LlNaQi{I(5fm^%THYa_m_3JkSCK+<+dL&*jZf zhq4FZs9;riN^-o4U`uaw(UF6KInPXe4MRYBc7@|sj}Tvc=r|IOyg%Oc9{p=44ye&P z9+?F3+#r%B4vaV;z^a`!9)Qc}>AH3bqYRE&{YkZek=e@F?H#Z9bQV`hpwmDuAn zEda?`q|zG?mxS~_l{UV@*y(NVQgsZ6Aknsk7ZyM{qz9+yz7n>-wT|VcEM!o`CNR1F zAE@u|TEd?)yJk+Ki?xiq-wi#q%^Ei42ZN5@{`IG^mqs-+jPUn?EUow4-))&7$pD{~ zurrhX$m(mJf4(9~B~97A-(x62ZzIs|wMz{O-rC_pBv*1p3|?9&1j+YKanl{iuOnH$ zS0>-7)3(M2v#&f_<-UsKMIHUTtdo#NBvJs0Pfh!GH$AJSDaI~OXtZU!vCL|^)Y>Mw zdux3z+X*Zqn$~rHk|PUkb0#_7>_7*-ZB28e{{X$Of1xi;JdS=l&-g;8)UNM?%W0|$ zXO2PxIF{$-^1*MFkyHmbvXuGe?nKFK0mxPEZfM zJlG#~M>Xnm^245bSzV(9xt}UKKNM(|b{E$ge}`u;sp@gSE*U^XvbKpql2&i|=`rci zuyNkFf9cefWz9I+3H|+-`Iuh?Hyac;YS-p;I7VPVTg8zdjPHw@s{EU@#8oj7Z4dlaOayU^`*EmGG?fZXa5 zMQsZ7c^G%;*Nppf#c}ex@}%4H)YA6Ug39{eSVf-JWs)fuayl?z$~v6%01<=Jo+$Qm zNx3GH@1S!l*%ny>j48s92{`8j_8y$@ihJk-~z?>j9Mb`)Ykt9btaNzyeav^kiqf8^|_ zqZvhJ8BN6S6^{Upgw_$GI+1k}(Q3_HlF;kqkcf*-jfxI&-;T%7cRtlHO*D}*vE}|9 zGE1n;6Yhi@4su>YwC>NM^Xs2#_NrMG%i4{u&j>9x;1dGvs8oO9S@s2uUwE`4Vu*g~f=Ocqjfdacg z!*IwIBRV}F#8c_7m`)V^~uETn$Dq=)@@r-(>FBTc5OA7z{Cgp%aekAaqCo@j>NUixvYF;bb6II@4qiqgq?s(_YE_B=C zKeP1DA~d-lGs!YZpDG-6bpcQ^{{Rs+P`YYSTD>g7R(cqk)YoRx)iqXC)vg-qTVhD^ z>}}aLw389lp^K&tcbr##iE^iOt$#LSZETKn#M9Y8EVP^4jUv+4f7#}_12bQ4llL&A zpWrY1#u@3st*NJZN-JC0E{KQGGY8_9r>WZNK4toD)2&(*u#JWgD}lOp1E~OQQhH*w z!zj49uZg#RBRSnWJ%;MO7QXPtoW3p7neJ{L<~bOk-Q?K;^Df*Gh9HL{j2gamDw3fs zt@qq&Jh4+o-;EPNf7JBb+m8;;6H?UL8=1Ej+(bwuXi(r3kGbuhE1HU_%#`oR8>P`c zpE9P>S6j1$)U~S*89Y+mL@g)PB1j)^%-f>Ed4T$5asm2RrA{8sJgMCnN!{F=z@9j{ z@KiEs(?|BG?rv7r71#qf4iJ(LRoYl%zC~qTny8b1X6&fRf2U>C&+(>?JQ1yG6I(_t ztldGjhjvw(Kn_CW;3?h5Zj@o>>Qho~?`QG}$CcQUeQ4g>>3XKWgD#sdoZ|snbOl-{ zxF0E9g8*@Z(>1Gxl8Vyz`CNDGDZK-v0nD zNIM7d9>YB=s|y}VYJFv?oky*^9>?%r%vtEt?mxTxe@lq-o^S^I{{XYQJao=YaARHM zlI?a~F6T}08^jlS4~MSrtQ54-DyVQiR5B2S$8)e8`U8sN!&6miD9dH7yW63(-zw1M zz7u%lc!x$4rAkWrPif)r0I5X z$vBkBe=}`D+>)rJitsQpYOsk@Q*yGix7>#}&1)X~vs>B09jPIFh|w~5A0mb8>&AKQ zUM!oNZ@W4YwugiKPWXKmwz7DqOt~WJ+Az+5?}|?=p+_8}jC+E5kzSq}zp}L%tsCE} zxs>C5Q8&Z?02|);j>>hq1f{qUhEQ0x0{o=oe}(IwP5|r8cTSXI?sMIp2ZJRIt!hf7 z2;h#{5Do_CF6RfQLO%-U#Cx$)?(AGO(C&2&LE>=|kbd&9BLk369N^>EH87(W2T`t? zb@`Cy)Rb3!PnkSR1XIa)9E?PTmj?%aaJ_nr0x&w{n!0YyBy_z|=1u;igO8V}`d50= ze@M@voRc(4$m_XZjQSs~b$OVT56UTq!?S>W>4>yYz{nV512ogV!g>}JL-2X^VeQan ztdcVkUOMOe^HSZnDJzV|IUTBQinWIn3_0W)5Q>somHDIT=}ZZ2ubSWG1n_>C$E6@z z9oCuR5aCj0+vwx}0A?T5Rx*u?S{-`ae@LJl?o-f?hOoazXtpOyzg2r>BS+|)F-0r@WdNEqYwY}Jxa;Na9*rZ>E zncc44tZgKo{RwoSaZC7;mHj#-Twa>&k>_yua$QboyiNpGf3||p&9<_4 z0%o;Aw|PY!A8+f)uSyjaIH*qUP1&`oxz6LwcD6<(oto>{mU@({9lh3~9W?tC8xlAn zTnPy{A2|nRe(}lXw^C3}F7{i$Q#P-$HiCI^T+go96QJDx=o#LEw<8t~H?0R7I#zlIbh8q$j zkECl49;6wp??8eV0GLWP7XWrD4h{xYxiq%<0@V9sK=Adig={0zfArPa6bqfX%NB2$ zo!h%H=cfPx(!Nr?PiZFK^p5DRQ#vU$e+=Hqs7(Zob8&F8tLy?lIid2KYm>+*L2f?q zJ?quNRJ=Jqm-1#66`lK=wvj}PS~XZBe6qzFg+D=d<;Hx(#+y4NDEh`>( z;*W{8+77>K;jgoOf3>dmEXOKBdB3%ah?YvQ2X^M>DA#5y?y0VyrT~!8musB`@-gq5U>+{p)lf19Lm#Gqso`<&CU6vah z71@R3vGn>@6=|oc>!_nEXn42AKNdx%*tU{^Hze_UZ%2^mRp;D3Vbhh;oS)7`miQTnHl7_bDu6ZP&}sOfLjHbdlEb5vc%Mk z>Rz8kYp$(-k#J2dPWI15)AYMTZKc5-oD2L42nQtY1oF+FUcH578q#vTM&DvwbkO5G zCloq+UP(DZe`mQb-#a5!jaQM^A+euY?vy27&0fnx7bQb_26}` z$Sz2@Z)lv`$xF=nx5SsR#Fqk5xXL)}bCL!>o_`9)n!8r$cRi0jkx!MkJ9=~U>0W|< z@s+HK25Do6#=|kOI3#!OL9VYOBAp-<^!&e_Gz`+df97lqoG29#^6oi)g=4xSwB=8y zO4yCdiG~4~_2)RQSw3cLv>k|)$8TwY& zxs|L%HLz|NVTDo=K&#svjzI521F6$IMDSr4Gm zKM(6%e-ezMX?}&UF<7?CH)Du-VAQ7WSvZJ_Io<4Cg%OHsW91$r^sN-MCziy5EYjw% z((Y7}$)G-LKZ@4sSJ8>a+ZLml8FF|%>MquZM{^XiKA8}>W?60|Z?W#q+ZZERrme`%E6cI;}AF*keZf5I@X1!Z9uN}IhlgaK$;Hx=o zFYk04xjdW8+b!nxmA9Lj3CN6|sT!OBJu)#-R`Q3rvTEzP9DUcRe$p5I)VTP6sK{Z` zf37Uzj?tsQGCE=BkT*G!L%VomoK}3RmDftrO}lnoi*E0ip=a!|=-w%pLe-SdqiXgm zZDky9`>5lAazm&iX(d>*j&s!D)?ChXok;v~cYXY9CF(`TVm#x~k!wk`Gl016qJ{{Tq7 zj>0{W?uCx;yR-X)I1DhjtED-`@>aE_7c2F(hT@vMdT4I=r(3h};%dGddr@;PlWelA zy#Tx*0+DU|q%kYk=HwogjU_5h6=n*547GLu*Ql8 z0}xAWAH)to#|Mm8PvmF5hq>rq3g1@JbjzJ`St6DRR^{#X=1DV+vA-Z8AyBs&>J51{ zv3$JHhOcY%Oz4e0Q$6k(q?eaZe=9i{-IIWL>Bmml&MUxZ>KS#XTk4ScHwYLbZ&RK@ z9SHhXwCc*2!`E_U6(frAzN-ER(I?fQ%(F$cW8KP!knK|5$=4muE4q_arlH?+7P)oo zc<+UqOYrozz9{iywA$9UCi`$ykpymbBZcTP2s@A6QUZ>(y;nM%)F^xqe_r>PMJ4Y` zcd_(c_2j7_RU9bEKA__m&jawyWk#Ciz4!bK=JmH?wZ5epxr)@BWR_xh`LItvOb&b3 zM5(nIOUpwv^+@qA0{l1BG_Mj~>$>8rv`ujKd0_2vD`c#y0VFCXLU2P7fyGs7iPBWz z*4Oe~jU%JEq44j=*SfZ;e|e^BN6M6QZiRLb%FVqpNXr$&WS$0bT$QLOQ;kY`_h#{* zGjV6HYIibO!zIM!LIl83$@EY<@=to=r4DJR`IRSRdEbL0xYRVoxReP2xwv7IgS1M) zLG=KFabD__X}1NVX!GWq*RiXs#vp~}Y^ha0FHAQ;c|9@D%T7{ie=RP$U&v5i_1{C~ zKNG%XA2xizqaBAQr{T?ACB3>Ga?r(L=O)!S!RmWrx6&@`oz;r6JkdktNHT={r;ZMJ z{Oe@X*_m3~m0`D*fAwh3j=MoPs%|w`H zcr}*Vn(FjM#C9cPCO|fhneSNM??X#lMpu($F@gL!Car8w zQPXE6leqr?FK@!Ni7!GVYk?Fh1FgwCiOI06mHb2<#?qX%4aWg zs>x_Fc>=oO2Q3ku?26HNqdeD7uw--G(2K@dSq7e zG|ob-Zn$HH?C~HQy-ywL8fm(b?mOEoN6^5M7`@RJx+HO&3CbltLitn({CnV+R%nne}c_d=6R@%n3a#t8Io<;;gk{sbj5FI)rz;n{zP5Hvn?l< zBWt9rLwa(x*Im(}p?opAF+n}_e}#1`l`nN9{{TFIvC1GB-H;9&kOxYi ztwNpBSBiFuUx+$#mAXErpMX9UNo(Q@oo`etJ-wu?ma4#l?lJqqr=myEdgSxkrxS^^ z6k)uT{S*B{oGkU|d)&7^Yq*OgqB}=^Tb>W|^sfl(u#89_HUkfSGvAsv0hwTWpRe@x ze-r@?+)!S`_SaFQ(740LBJV@c{n7{|V?NZ=aeUEjKOtKCo=fp(;oN>Eu>RAxlv-VB zF*C+7`?rZO+c^7-xcLak9SE;a30sm*64g)h{{VtxQC(ehEc`I>z2A*=d2TfbLd|6& zz+{Xavf%;Uj&T0~-p3q{mAvUHGfFRge{9TKZC#^UXqs;|z$ne~u737Ak?o4^QniuK zu-zW{%<^8bF0rSUi=RwqZ>K;iD#10#w7a=+cGTp4EckM75!l74X!fQ{=v`IX--&*1 zo3VnyNgp?FrE}7L#$L{=_gdNPYw;_s&q$6LwCw>Q)Yv@GS|Uv$IVM$3aqEWQf0NXL zYlSP#%9hvBc^WsRnT6m?e`8tOr_5FpEQgE(BQx{slGWE*^wX;P*&`M2zE$%h_=R&F zt(M`#I^bir&`&>7d;Kb~&Q()yWD`mb$oW@WMQVZF*j z@}Iqq-`2W0T!nQJ4ADy#Um;**~RD@HL23uT_uDbTwMShcR4)zbMIVjIm+@j zS}P-;znKi_a)WM9%st0b`B!We;^X%iOGcU&+vmMdIr)e3&2&>%Rxz8qxvzWTpR?S{ zX)5A4+hAqufsUi=+*Wf<>}eK}srCyUejxEOiC2*EkgN}*4*vj%tden7e`V<2g*Cfr zMhV@sDo!z+antau+T|@f=yQ`?CC3PGLHnd&jCRFow&d9r*@~Usf~j^T=*uxUYjCIU zXFr{4v><9JV}aNFDz*a89VrZsOLUZBhvP-S&S<8!`H+&M)3@P9oi`QVL$J`iUnQm@ zo9B-_gVcYzdwnaKbd-%0f9<*J_8Nu0pquU3HynaHk-Tn zZUwE^@LM8dWJo%1Ze5R4k3nA#@m}3J9)`%xu+U#q^Yj~xTm6~fe~`(~nRyW#re|#O zB!86p4h>!GzIzhv^)e^XFFavvwv+zu`%1W<{Tu+XCIJ@Pfa<$8lq0`d-VIZJ)1zOH z`~n`T#&?FiAe!c$+L}!3uUpzrr;_}Lt_DLs?_7MLhd^su)f%)u%d_=eg%#JSo1ypy z+u{z2FC>xS)otK?e?84#N;uU6jGT6^ipF1=O=bIVA2FC2v&l0dEq(QZ8Q_hP&CeUZGR zljU3fM_+W}e+}ct8UU>+7#_Zr z-w8_UG1kX3NosOdb{}BV&ASq3e1VV8IQ7OW(sI1-(H!SpqFcV7Y6FtYesht7gV!V5 z`B#~VYNXY=Xmr!}QO*29d1TXz$M+IB3!X>bLaGQKpFY*59?|CJ-$aEiZDBkeZk84S zOD^#oe?XugFbcT&y)t`MV_RwoCX(yj{{X-uhOS-Ccj9~!%cuG9?Gdis+n57_dk+1( z^H+qa7)8PE?o~)RPU~ak?P0>YkMJ#k&M)ytNLC(U>4bB@U)9jS)KwXUFB_figU zFn*QGI9pU|rO;*cfteI`IW?sGH-rpaju&{uvkP*wouzXuChat7+Vi?6Jx*Y~L{J6OFD2 zf9=m-!mUn&GXR9Ip~WQn z4`Hah;*b^R)7C?|K1TfwJKI38S?af1Orf$t9-Z-0;TdiTxSh@Chz_}6(Z$5zX9JA? z0QKvK*z!v2W2sK-%<~7hole&*2V+85n8H45G3tIz{?!5!0t&T)-B(C z%Ghjc7D}q91d`YQ0#8$c{71Pwf0``d)UU9weF`$X7B7@Tye}n3Bxj8J59^c)_{c&6}_hjO_9Sd0BxtpNquxP$?u`!lgnM{u>a8Eoa{{Urs zX11?c)a6#POGWyb#x^$D_maTp7|0pN{{Ua>Tt?)4V~hjbPz85+5wH-le*uzlpZ@?? z^rkC-V8b0fG5XLkio1E>WxLW9ixEe+IQ7Zr*Zeu4dkufOdUgK*_2WG~>f@%wJx*^_ zR%s%~+)T0eW56f+4%O;VdN%j{4oaF?BPz~gb$HIl3mCu$r{P_)_hYA1C966)E{ct+ z!zYhnpI@NuTzr>z>}h*we{mi-xs&?}Xrg5^T$O^^bAv3dz$hIsHy@@2TC$o?)%hZl zy1CM58hqMKluLJqyJTOq5rPbu8-T~~gVWZzaW$P;S$qp`^D2}SJznRNd|A|yVv5OI z?>_emdoL@M?aylK!qR-QsU*^051*J$c9Mj5>U`s>?!RX) zpM5IIFl1(tebtzdYZ-h^d6ylRp{wDko9##e`^wva9WbQiRx;SuEVpicct73G=1nT7<4K=pL(Ue-WjR`C#hnU!0ARlq~arAEg0F7YMj*CLA+f-+WR&FCD zWbYIFtPim~H{n_;yt++UcihRs`w)=Bh6H1-eT{6I-5IrQf62>-Y>qQmuy3IE8xB1w zY(0lOX)^6$kZHGKtYph&Et`3^aP4E0aP&$g~x3Y_S zw!Y&(iLQtxv5q8uRy^dA8w7iwuYT3Ys!CE_e2uwMS{T}7&{}RLRb(G|vJP|8I6s%5 zuIa{7Nm|dbiqPNtb+J%<)ByB5)N%Nl<#grOa?`O{fAvc!Pt7zVw-P2t>raujZAp9F z&TU%L%`<(X0E(nwNV)6Pj&Vt+%gYq+a?-QADNo{i7?%d--Ai(Rc%%S2{$J0f6zIF& zOGWsOQs{+GANYFQDjV1_(-|k9t|`uh-Q{9awuo8$b)rNAHT|$w`=MBq_~3C|-o}5* z%@K!lfAJ&3(Go@47g3%Ae87Kn9ZHhE@ zP(VBu1AXr5@md;<0SQP zFh4KQQT1uZu&$XE{{Y4PE6Fbo_nBJ=p-)cdC$(HCH1*hr#9gJLC+|9B0qcyRW-raXdFt|Jqt!X8DF2dxo1fLYInZx-Jl>mUHm<;0?Ja{4ZLw& zGHoY&VP7BX6#aP$YY5VWUH4vOxVO~s%cZ`(xNED4T3K9@%*~vW{Hwp6Ta|6wu{^eS z>NVpsC=)Jm=}@05(5qc)QhRa_?#_LWe^FfuY3TGZacg2GfRDb1>IG?Z_GHpMH@QfX{u*!<6I5B&37fBv*o zPm!-r%u(M%o7LiYFC-2zxr;7)spvjIP=?v%SQUw4?TihIUmW*hHji^ka^+V_`+i{+c1?4s+}d7E-8{k>_q#cZ{C6k^{%AUmD9R2+d=R* znZV!-;+WGU-ANQ+U5~TQBpoxFu7vD%5ZrkRw~=A6IYY=Gk561zB$m2pf6kb@9Y=;% z&TG)tcdLXwBEm&g;k}|?6B$hQHu7tZgO3oDtvvbKm5PkDgOX? zkLh0>>|(UCXP}#XNY9J4X*pZ#gX%K-h0i0H?43q}Tx`wLOG4C+SoLcS#RMe>7;c3lZ*_I{d@+ zrmP{~YLR%^PRWMEt8!1?PsXE`;c{?P^y3s*u7h)qxD;wFh+HG}0R1YJ#bP3xdNE&W zrKqi85U_0RR$<#CLAR(!pRxd9MQ{;>h~=zj{dil zSqA%7$sJL;kD>2cf2!8fdU=rH)*x+f^zpm{x3A03<|}B`i_-d;I5a^XqB@M`k!3F~-yD(?5+*#U`534(=&f z+PBuyTVVIR{3JQel<+HlHUzWy= zU1(;<5l7fFe;fY*b@=?7p%t>I*TuJyk1e(&+Tpym7$cr)y`)yD=*xvEO7`eMb#3O2 zt}uI6ib<=YB^MWID->Y4mrfxh89;dd0P9m}G81t&Qtf4bHY0=I91ur(=aek&jpHQu zK7#O8r*V6xBgj0`tjW0bA#se?wTGOYKYLc2TAZ^)@1E<841gv}ubY2;$Ob*trQ ztGMbhbQ^X7mncuAbi6!YbWgQthEET-@IGF`{MaI#b;UX2aA|*j5{g zLK7IO9@`0yDKQKwpIU1`u@{oVqqp;?a2^2zo@fwIFe8lPG|-B&Nh*($GEcbxQ_wYA z6`JDZdcp|$=CnyJqPrJzOg>~~J@ML&wh+;8e+l5Mhac@4FJL5FIGdnxk5WY|v^y47 z0GwryvmDZL3jv7_x6-EJVWJ|Oq5l9HFMY>r79+l%6O;M%rOJvY-)nL)G-^(HAYl9S z^`n|=;bP^B)s@>sf?t~2O^5rf$o%@%#=Mr3Uo=CepTfw%)O5atvJX$0e=cg;rCW5b zfA>GUi%JBLYPRb8=7dEd;JjmL{8yo=_EL?#l=NLCs{8jBGU~qI)GZTJk!H7%7~^XO z`CHqA#}sqUI#rFl)~K~b~zY098_}N?HXRzxjn?CCRScSP(bT|YZj7PBf6HCF5J$q5I6vlj(UIf zsYdbD8%i;f<&rW;3^2eE=xfl6=2zJAYRB2jl^Ity#^3jlk}=d(TKY2`kAL`Qe|$!c z0Vn-*pUG>kg_K(Jf1#Y-zas7Xo2w}a7{g$G73afQD~;@8M4u@30=+$sWXZNu0o!Ut zb2jBU#YDDk7LLnIwpUaIK_1{5@LuO)HKow(r{Up@{{X;1{#7?iLa%L(Pgn50gn07f z*iZLKuF5pyJE?3$q~o(W$MC!-f9^XE*1Db^FKd~qtraBj#L4#^Tm9jR!Qs0zPi@ho zl)bnX5}Rp&-aR^2%Pj#74D$2DO>@FGkCQD`ir+!j(aCyt+apTDoG2vzmBTtSr1@r= zYojlnJy4Tc&u)Kv6Q(;dkyz|IqLkCBE_M@-LrkQ(wlkYjjZZ4$^{o_c4lMxG;D5#o z6+YscgC}CuwZ*LY-zbmJkVrq3DJHfHrdcsU$K;+S{7C+F3jI(O8I=!Ee;z8lfNtU2 z6k6MWg@Nl%!Wr_fO#XDmwt={IBAtiiFC(QZbQSC_{B;#d=mp69C=G{yp0yyxwtxL} zwhtk^cjB1#005){^V_vh5s~UBLw_5y`-F-%+!tb0x}Fo%oK(1`7if{L)KizNft^K2pl3z0?1@>7cZ)``*Jj6Yi1_q|o>U#NT$!bv> zE&Nvzm|Z-q?GFmG28c-xnFMNR*p6`jYRb7TeFTgk7GK98TlKj1Gw*+$5pDiom)x# zj60$>Fcs)6u5g~Q@ZMlFtbY~*6UZ_6C2t8Rs~qxIXKi(Et7jlwoVVp%Q23RN-o_#! z09UATdJ^rRW42QRHsL;DSk%!K6TQ-6;Xak%Jspn4vC)XCb{@w$ttZT)y-YIP!e%Fx zUY(3~9pu!l#CVU1Ms*1frYrOeBvf#!U2NHlcXm5Zg(%-`cOQ1YKYzu`nYQ=2*&fHc z>dPCjR#k30fNQ{N%+}|ec$336_p$kqqN6Ty6k{XT9<`fYjp06B4;<8VLulVNFnSu4 z+R*M^@yg!W>^Q}BLPm0c-74K~CtFwAzG1?%bOiJS`Wn^hv^iXPPSWGRH_&9N1|RIT zXU*Ko=)<`1)$Ct-Ie!-(*`Z6g%#X0loMqIHQBLcqt=La4anXVHs!k)bMY{+kxR+#@ z+k#C*tYLu_3JcAWwh~PV5d)BF@V<__a z6RfhYTo5X(WpYonFzPB?M|L%?U3m&fKJ^w`8l>3Kd6CE<{(p21%xBv$e(gIEw&R7@ z`zQ0K$`>a~oc1)WV7NZ){FukDaZ3FdY&biwPH7KeeBAKLXj*C)8e>z)%9>4wpe4ky z90w;Jzu`{HrhuJ`A8AMb09uN3*NRtbW;-Xk8yedO426@Pf}3(`%$``SQLGm{f*ns# zf30I?yp67!7JuOuWJF}z5ccPfY9l8d39$~Q%C8iV{K7GU4+Q=lt7yvFl$S;&t;A0+ zm>8pHlx{0#@2I(2)XcnzP4Y<0S1drsL(i>6^k|u@H2jNq%?u>lNHXlDm6xaEL?q>^ z(RMLuYI*84ZBgB*w@}dUe5-o0!EF*&PW|*=dl}7~OvDo_5%R{o1-RyZTp%GEAjsT?- zt(?5cu;g)$N46`eGZv3n@PCcW`*i(5u;T(L4;!)kE$`@i(rc;1DBEMu?x)!kH=>{A zNh`BGjvq#w&9ZyBRbARf10Zw+)>SliMzGZ6e1AuDx1cS&D+bQ2qXm!nQihLHqmi8U zkY!mJ*pi`f_?psoYQ;u2XKL~j7$=|~(z3C-Nu2ELjCdU8nvI8Jtni=1-9yH*OuA~J z`zotBb_xk%cBm(eoF8s0rV-Nn95toOWoG>j%=`rL7Bl3)Pp6!K{{TAbNo?7{%-2S9 z`hSnXUlZAa;?HCGbeIswYe$_2xn)x%&BaAB;*kfS99)xxMYlceC%=KZa z(21?1Z)%-UrHb!nyp9j03D}1lnR4387g5r>E{;nTL%8TOMu>JSqq#hcROlS7YFge$ zTAKg~0`$gd*#ajMRJCG|;UMcsG#c%@fq(vg8ZBTe?Qcr8WKD}vvnNCKqUq=fSeY*# zG1sR`$-zBMFKvm|>N~OogKH1s98_|&G}9{GS{8lLeEz<^5=jl+)E@ARSCHcvtlzQ?lsDZP&0Nq>>yO}yl(#u#+Ik*<{{S_Ulhm=NP1;D_S|b@EuU%|%+QgzdTL@j0#Ah^ry;1Hf zj<%6Bg4FcAE*xXn3h-Myb~i*-I|0e+$(gb3UhWlppEHuC_A{0m?lag|j|xwqG%Xk( zGV2F*{N#Up*VxvVCJis{qd4m=4}YM39Yy8Xsr9eUs=Zm5=KDy;Gg4AI6qO|npS!oQjLub88+yVpYOXL%zv8YsQu<^ z4GNOkM=BKq2C`47*BKnhxBDPuZa!+e-&AerI!lL*HjkY;eJapfv65Tn&tcNGT9WiW z!Tp@<_Gwp_XROyD0rrkD{an`Z(H>=2d3q!0nxg}r@n)_x9U|{gJz#;^f8QerKkuR{ zqq_3f?h9W|`X8HxiFRfTWYt08|N{= zRF`4F;BW`0HO)6|QIwvRM?vE+1nF8Hn)lW>l1jmqRwrO{lk^9HPMqZ3q>g(&r;I{* z71qt;p|=DEc37huoyb)k$vgr0n#t%r?sS(P5!LJ?KWfu%3l5B{xqos000GT7&JU@? z+ea+%Ndscy288-LvY*seiqB>ju^5&y&N2AW$Ub7bYEhvoK|YwJ$j8o+EEh3cHpMKa zhZcsUjd7;PrAF-U86S-&5a#Sy{>GYTF~B#l1&HZ@I+`q&zhKJ0{ zR`#Odf<{Y7+$yLfpMPKndYg3)Yb{MVbPYn&=4fYA?-P&dQ?PTVvndmGAIl;a1G6E| z^37_c-$3*eavZMKfVW&{AFU>nw6|+wQ)@%0@arXwvqulkrbcZ0m0bS-Ds4Be#!^b> z(K@BFTiOtV12r`MB#kAp%%Y0+R)-lT(fLpz_!JD!3Ox1y0DpK_6@P@*8=j%2DE%wv z2KP)U!hK$5~)hD!9P zp2qauo`;m`aDOV3io!Y_=;fwBGAp42(90yFWljk6tC-Obsf)5q=@pmP^heT1FEcY>^`=|`~{{X&}et%T>@f2D44qG1er7fE?XAv03BDzXPSK;O< zdjpQEBCz^{kyuY-Pb2Fq9~bHe3ha(Q+CYE8xNXqI#Tq)+pKY({(o1<1Wx^a4P%+1B z=B^FJ=znI?N5j`~EOSX3{nd5@=nZ=jdK}Eco8)o_YNR6Gn16l^0zC`;RI%;;?K@~v zI=>FUrg>kSh|lX>)6u2oXpbk<;8eJfjPT9;>w6+^sr2W-9}d{cpW2efB)Q27&&W_e zx-rMstzg!tElE4r`j1dW@`);^9-tZwPZrlib~^X5$dSjEAP`Uy`BPzYqrK6rE-j4G nTR>bUf7P#CeJVPXn@1m}=r&0Y$r_+$EJA<=Pqr&yZJ+{ZvU}GsEIx<}t>#Y= z0iSVwz<^ZlJoF=j$ml>chP78la5N0}2>vKbXK8C~Hkd>)LmH%;f2Bu|!s{Zk$U!X@ zAtK*#?QFvcdf>-ijxQW9@9Kaday0kgk z5XMf`EE@~gCWl%Qmps$iFD(jGryqr{J85%GrSP@8!5y>P#La0c&$$_+e=-*G)yWJ5 z>n_$TilIOvu1=D3e~fIdwEYQQ)$e;J`5E^91ko>TqI+xe=B2rs>6iDB#v=%1&Qug; z+*UBeZe^_fjW({OsAAx9H!Wf%Vd4WZ3y-wrkH0UGgyZxyPEe?-ws_jdf>Cg7)X<0KEm zCa{$WMK`9KoiVQo=$U~BiuJo=_QjfJ20Ro)myEDCk0g8OAGmTMwlVW%hAU{Rf9TzY^g2tQhj;#4&jirRWIWRp z%;i==5df7KBPVwR9Ap}NomGgs+o?|J_3aN(T|QY9+&GNJ%u{5D22hC)M8Uzy2R&<^ zbfA~Kv|8!rLZ=xkBy;+^YPYSMxaBJrRAEaZla?eAk@F67oDqXXH3)nyYpE?h3SV3x*n+Z_7V zoXs?v)46=jG@AL7N#Wa!s@s*gW<_=gN6Hvg9E3ZF<;BqTT4PZA{5@ zfBUEj53;GLw5k3s6~79RmQ}kBX$-QhQc}>gjZji8$Bxwu(4%yJdH4$IIS5w(^U{zVhL*ay5m1fB)<{=%qB5 zPh9uwQc|_F*v%)5P*L;&_@SkxowE6N7Z-N+4{Tk+B8OtQTmV4ZxBY62;{(>c4{Zgm z??$xiZExy%u8iAHM7D1IFQvUa%pdJ94PDq-){S zj{%g?^>&rim7n#~&`P>`$~v#>e@m5bei!(QL{^p;jnN}6%?!nG21!g3GS~!x(AHkc zan>(I^4O(Xob>%JaWU%}#l^IWlHAQ|S8Tc5@ub{pQ18+yOX0Z z^v!ckrv24qbVW%kN!|DTe-5613TTL-?XDJca|H4#d4eUtLeV^FoUR;f5x)=ARyWwI zzqrSnz_CcE*0VHnve@AqZszDPk;^Ih0yxGx41jqetvl#DoVC^K=-@|Tdn@@e%O8?e zlVXFncn2x_!PP+E(3`!rw@3c~0IMq}*Q)GAu0wlu7uxP;j`llse~vbI-*=WJ8C7Ay z>++M?xT;ceS9jA*f31Stx_tCBtv(=L!Ds!SA|$W@7#&rBi*C>ud#K%>qa&fNc~Oj? zHQImXY^pS^VjJ%jTHe|l6KoL!Jc#5g$Ru`VAh#Jn&GPzUh|+PFKQ~KTrI+d_G~>%{ zx|3PYpHd8Iay?`@bdL|}H!@n; z%+QbBtTM?a7jq-Cmkrfbl~m)Van`4vq+`t`e(5cKLCXm{CvP&u-wj`p1>{awXzakT zCvuIaKPVfs?@+N_;LzP3(pns}eht(vmF2YwG*RFe+!K;ne|k4RDPNn@BDy`iBGQ(P z^xVl(lfN#h9NgA75ahg4Z3KPxoNybEaPnP#@&8p8(0D{w?Ew-K=rKsl8&)& z({xILPU*i+gCV%nr7Uh^loxW_l#HsM;lSgMT5U~yEoio7H6`%1qS(!trt%^LAUINb zk=UPe+*XSA*K<|2qd}xl@j%fs)Qp?~^ryQ`gY_3w%Z zjDbebbN3V|B;aI_Ilu!w02G+gjq=pNT ziKA2U$T5$YcjJoA?P!f{-0J*2Ns;Ag8QIu28Z#MK@sS&0kIthfxHZ!X zu9`_Lj%t*>qrL2DH^d8D*NN}#T2CqGVw;uFe~F_A6+@00a0rl=ImyLatfg*sdlT$h z_+7UA3s-vAhZ$ZAVdM#H%udS=Rpf1qp!1#a5Z}B3OBUc_s#B)Eg*Yp@_+mi>9o_SqhX}pW z{{V&>oR*22(0JQXf<=AG!B`etU`Q8s6~H*a-ge*&93G;f(1TX~m!WE;k$pUJf0+_V zWo~6mVemSrU=B9%jQqGGo?CIO{f9+4Td`i%e=4}keP>0#l$}x%h*1yjPy^=eAHsE=deBSV=KROYN>4{(mB)hOe~mooZ|&|Q%774$Fcv#T;hms{;DAm+$f{M_(ZWft z`+S7xrK*}~_TT1b&EUOF3wcN;5r7?m2o>-NLBDS7ZU7a?W01MUXsg3^?R~oG-$Ff% z*4mkKcz08Qwmq!io|rrhc;7xbuZ#iIOc_*Q0! z%enji0D!LcdFY4?)Qs-*KM`11X~xF(87|45IgD8g81l|Q+;hS1xaYqWSLjPl_eN)n zbt_G0Qj+?`S~#W%O0ue9f5L#+Q~^N9NZSO;bH?7%8 zZBx;X>~MQ}_RSp0e_K_qh%auW7$9!J+tWBW&!&23+ciTOiUudO0u9)p25!gUObgIz z_g0ZTyizj9DMn%b)MqHldZ|)Q2*-MR=qp%Dt!Co#*=;5vl_hz%k(nAt0a&~BZWIBY zlzDayjDo-ncm9+NX6#TQy}c=jk2o}l7{?VuA_vl+poBl<3jPz|62 z&fc7TC=H8Cs9d7#637=I?cUhP z?c~*@llchVe<0GQQqx$IC;%gG7+exSzym5Xj2z^0a%lEd7sEX|>A3x+H}OL6p!81- zO|+M|jey$9M$pZim)-MV0hJ4mPAY$XuB{i_{EA-1^^*R#8!v~n)&=b~1eYMP$FmRY zhb2ZwL;2HHX0)6d^S*=jRQHWU{H#F!5W8LOjT1#1e{J2rsV53B0m&nijt5N9?V{|R z@8~aKEm~^J%+H@dzqDQQ!s?xv;|ISS`f`0L)ksT3)yQNAS zy6DjsYjnvFW3eAlMM(B0UOH5b7F1NS%W>2ei;;@Smb5P*s4T|1{{UI|3iMg#q7hP2 z=sq9*f5~k-ZlWN0#mr_j$Vpi@4>1|D!m{V)Y$(TE)e!G}3@;N~TUu%kmMs%NLbCZh zqU2=V&G-#e?`#}ln*X0+GvF)zLye|U#Tk&Gb7EuR~rmkgVT2*nA?d7*(( z)Pv1)%7a?y*XC%eLGP!?=I?ZUXTwS^Zey0wE*k;zFzk$52OYyHVV#XLY~~VURnpTj@BW){?xyb ze=lw$mQCs|6Xj-4EnEFyUP8u5!RQ;DR*DJ>mMY4{q@uY|dj9~%GvC2AxJ8XF7Bym| zlk&FWNh3I8!me~O{$LR zCG&lLNFb)2rtZIA_yvWq@cTg#YljyP9wf#>q@Ug(jzHvX9e6c7)s&s0xo@YM73Q1M zPKIuyrrC?=EiC08Op1!~f+WM1Ah#T67&}MZ&JAe^OO?t?ReLRpP4c%TuVU=Je-05Y z=DLrSn5w8Q#KJNG*^!nVarbIfYw61Lx8g^%?H9UVdCghrGG9VwMgaM%3ML6JBLZ=e z!VCk;U=zn$-cwL^eXieRja-s;^0?vQ%|ML#SQ{P2Sw>bo7W{!6bv>x|k?;L5=Z@Di zCa}4IJjr2^5CBUukf1kAo`XHAf7FxFHE>c-MA2GEo-hk50NBAG;OC|dJE4)w8^y$d zlLsF#Bazf|+jrnCY)(WvcAfqzlrWlXYIH+p-jW)J4 zaO}10Y^q6hdUrZB@wNDhIGJH{7DnbkO9PAoIt&4fj@8TccqZDqzn;fZ#LmfDF5TAV zZT_()q|3bmBI7Zs!jcI&2N_-tJNnkJf`;1pvl-NL@?DYFokPOc@MddEn@gb>P|&zB z?^VD!T$rVC0mo@O&i9KH^C&yzu_CaKnMujk%e%2ch5{3 zpKS--e2VrnTWj+x{f=mJy%=NLkHgpSs^(8-XUNv*=Pv&M)^X@7f7NG_h(V-Q$A96! z2}9xwCY7D7<`c&n$jA3gj_R$!P&X(!07zJ$;m0)6xeit_d{3c|58nNjHfM;U$s0Js zm2T{~1x|m2fIy_xor+HA=g0XKB_5w=r}&3ehQb?r!!&nM$>c^PkO-oIw>gz|;|RcG z8_75WitI|GwWYfLf3Nuq*hhOUe_zP2rud)4v)>CFJD0ef8btxNlpzLP+{mNlK)DSk z+yG-0pR}F%Z{_zGx-eQ=*6dK%Z2Uo~BzL-uQ%M}C1Z)7>$gEXgVxEPVg>s{I;etV; zN~K57B;Ef2%S}B69!h@fUA=$I$=19>sA`t*>G$lrEJ2PnfAZBGFg6up03@z4^JfHl z)(-nVhU>aJ>ko+*mSh&TYlWKH+9~4Quq>9UV^EAUx(OHNWcf&J<24fZx_`rhRufk7 z?whH>b8Qux+9k|Tg$Wc#5=3%TwgC#u!pOfe_1aBCPx32Z(Y4NS0^uW&O>o>GHA|B~YxPanrvC z?;H%1e^98wNmN(5^C44;YD;uW7mMagLt!K_$s0%Is}MJ!#xf2LPr2tf!5F0JCnY4> zY2V0Bn!hq`_qieQ4TOxw;t3>Ic5tl9;Y&uT#z6V9xzB9ptxKmpIb@ZRUAo+kR+35V zaSVAl;AG%>4Dd7TIIgo{t&CFvndAKNOa>F_e^iNMO)(6nA-SMKYJg180#E{GfD(d* z6acxTHP}%>M4c)GN|hy|P$?9P3sO-!RFsQJQdxEeXpZD152~CW(z9y%GSjxj_^u^F z3cD^n7>s_klS`^bs!erf%o?@KdwzY}2_qmLzlC8cae7$URFdnl$z9|>;adfCOsAUbi=2qK`sp(0pXf$Gel_eg9X)lP?Y+{BWHbpPkzF3u-IZ=d|cl;P>c3u6?)JnKRHV z{w7^%);5}bt%+|UF%nHEc_fuYo4}7Cf}{cRu6Cc8V*S0A$8-+{*Hw(omy(6Kkg z3k%jF`%MHBxT=*UTooY@GUP_Zb0VCvVoeULTIF%-pH7BqjH0Zi`J>OgQQ{bNfBC~( zTf=D#Tt=~?qwPIJg>WASp*)J`sU}%*+u90nTc@(PA$2@lXE#?Mq zGFYWok-Wi!7-a=O>(3_@o{RjAUfyLZ_tIza0=2Tk{g))@#REwkLLzd(iOZo;oxym> zz~Yp*(0vY~9}no)62%lk8-qRcf6@Ntb|q~#u~}pdfV&9FV~wNd&S@)O%km*N{dYKh zA4-DsU%brIErqm_#1xRy6>y6E{zV6S4mkFvmCJ718-5b-Py8hI6W&KV#VxearqI79 zmQ=BmaU*k#ZAjM*xQ@oRg+6tA>;6VFsmScglK2}_yHRm(nW13jHk)*Ef0aN<4I2Vh zObqMNE3f&e++<7ji{c7)3!P<9)1hDJ@Jq1s*k{`8? zS7Sc+!CK~=yXUi+a57X4%mLlhE`Pd7!8jN_==O3-_8O@c?3tHyp*J=B>)r*P%%Ko%^{&h1riE@ zB2?m}v`n=nB6SrbEGJ4uqQY@dS#bqRDHh|b*+uBZL7|Cx_xSX$e^H)VD=4Ta>h!^>j+q|FwllAo6QlN`i_>F% zciX4wV%C%K0@A@Ce~Mcbo9v4!BRN(ovXDRuKvp1(7Jrz6Mr%b{D#^!hycE*X!|i-~ zZ(;UkSfpmQit#qMLWhjk z$&HcRILJRXKrFk_3Ccu-o@6hvoS}i;6#w{`AOHJE+%Yqz?5)1sCvJr+HZs!=TNhNzn zW2!f|y}yy@f7(aGi%G0)wJGmp3wqMVhTc350on60RsupW6@c7+QB$DWSeMws*-l)N$p#uHL7Pj_HRar z;_+{cnTuk1OGL`SqW=Jvag4DT#tMeXBc7S3%~9XaeFNFk(%m-H$g%NWp=ltNI|OM= za3~@ve*q~27D5IH$t05Bh@_`2t+obXA>9M(?ly+7a@q@t3(!#q8&oeoB~zey#w3gE%=hK=7DkwcG_$QwyL0m$aL zr%#(zq`RBKT)XPK8|$n1Rmf>9q>QTqa5&?je;_f+uSXqaCp=>ni;YyQq?vbzV=qX# z@b$pCi&Tw+Pdl}|sknJD^+h3bfX9P?N(`S$QdL(kvui}IyRcl2{M}xjNP21B8J0qk z+)e^{drYjVlH`KxlY)Uq89tfsPnxP%abGTiv^q8yUJtT+8@)!#@J;q4F3~Eh0L9ML ze+&+G1i>$i`%+b=r5H*UyWjfiCk1BW?_ygY0$bnxge}9b+v9|`6@ z0#$Y@=iHt+uS41NPh){sR!yd^X1BxLe_LX-Vi_7tY($kwWhi70yx^%-IL9RLDpVUU z+e3ERUTCX7fILBM7@k`hk`gz0m<2-dmSQ?61QJg{pGs~Lin~t8BU+rAjApL-7;mCp zB(YoUQ!T+|jRUD-%hWK>$a{d;+&LADW~cD<^6%TZ)Z*j0ltEL2!3P9-5y2mYe_0}C zfC>gJA&WrJ@G3?~Dn^M`kw}?%sUF13#YttD=@g49Dhe(l)H2a>Ay85;#wrU(KY7Fc z73#eYEftp{q-SBE_@ZwQ+cHA}$g)U`@;?2f#>(M%AwkNHbDSD?w!qcOz9#V#_?GNm zNfN+THH&B@@VyIX9Q^oaS2*&OI04uIn z_knQRxdlPvl53?+S}Rp!p-q2YmLt-&e+tHy@!wmtj|iAM2=K04QUE<)_H!f0OK3_<0_e zE#=VH1OWxCrCxGz6umbjV~JlUg~;_<(w(*D{=1meZ6#~}09zZA=pG%vm698qduSq! z8VM3s^JZK(m~Iw8LdqBosJP(%HNPYz?R1s2v)si_qP5f4qgxRF0KyxgpE4Nk+2t`? zNfUXn;y*Eh&*rZH?9T0qf5n1x){~_jlhnUyE~wUn;Xa=-G~e2hfQus-*hU-#LPq9U z7y?KKM!?d@}?+{zUpiHUS#g}lJLrqyA}kgOEv ztscv5bS+lC%T#jK-Uzp}W9*w(UptyQ zi8iIs<{3Y-S^SN*FIiY!Ynp6!cJkZE zu*o$3Q7p4Sq+!{c1Q_H$byst4>?;{mPb{yu7<&Yp(cEp%io8SiqhUNq_W(1rD;^tb!}Bl5 zM%593#35crPEB98c2c@YY1_!3VwQ^cHsJW7;teL*e9K6@i6a|XqjE6gYPma(G6%@4 z0ORExnz+~Ktl#+=IvU>X7#fenVXGr0)v89#1eWEXVH*=5e^I@%q>?s+w>Zu)1}dFS zZl8CU)hla$yE7leJ}9x)ZH!Rb`ByC>Ih~nZ%BaBwf`&O5Tobea4l|QeDJGIjRd2wk zLB;QzwL0IocvAK>dxe%M zcBplYcB-~Me{NL#z_v@V1ce|V7{zg@){WF!eXsp?Hs+@HOv=4a51Xqftr?A}cl%qu z;M++%LmUhNz#B92^*OC0?QJJJUrt`cOOorCZnq|fM$o5O7-}zXkO_zkjBg`hB#rn{ zxOM6eJk+_>UtvExg`xb`9y~o@3ky5;Rr2B{V(6d}f9@P?4js0IQWuOC&T&VynzL}# zH=^HdH3ta0r7b@J8^JSKYIeFzmt-cT6HDeq8)nrER2;BZ-HuqCCV8q@o5EETU%KsU z>i+<*#Fs|WQEh9pG_8CmsI`>0k?JoJ+Lc)qiv?YfysNeMg8h1-FEJM7oM4uS0Ohbi=CYiXH_I!g z{Juv-Em3pRX|DG$<+PRvopnG_5+Vt^1xM{++C{xrl) zm$O7cNgYV!ZFU&?bHx{HW-B7V)~}Rpe_M%w!CoY9y5D(zhrK>$-G?gdiYs+2O3|aT zqy6O!LbvLLZ11sV4c6CQQIYOisb%5>w^qLCy#~a0smZl6_xa#D3BC zB_9xEGB=%TZ!Auwe4?rbOO|818To+<-oPHUE`qX3OFjp1ai>*S9+mTLBTUD(HhPYTH?GbE}L%O$r+7U7wXnmn*`5~w3-e+K{$T3+fC z_K9h4@-!^;Zw1}HXVfLN3JyR8vfKFb%LDT4!1=k)HFksQ(Grzd{4u$gtZ2R;(@RZZ zaQdCRYa5pZH~azh*&q$CLCVhkgkf9_GvM{cyzOShhzzU8*>{b*vni}@9GPZ3}1Ym50!!){hC{JAI!pe@`ee`d$lvwrls^1)}&~e2WmqssKrT0u$3jE(i~DKy%j?(8Zioinh`E4N=)PLPtHHxuT`E|Od6XE z^uGzOhF-!%)*lydeZgt(}6VPK7O4iqMUGJvGUyajAiuDGIv&!;E zo8_Fx=4A4mwlbJ30~|I-T9<3-u~EIXINb5{sVMaLd@rKhY1Xe4=1oH8DV?JdC;`$p zWKs{^%Y^_F^LFcAbE{QOOP0`0E8C^@e{s#vB-*x#uAK_ne|LZu`a68xEK<#bBAu9C z2IWtiEYTB*K?D7q)k_fLdqK3e-(UECfaq{Xe8XYL(Ttb|Ztpm$wS99FYZR7JbZ0sNBUoyphW*3^C|EXm#SZ zPe*M&`-inlqu#}f--nm_d`$C833LI~QHkE0OE?69hfp{NhV`uDiiDk#cJt}mO0MNu9C;~Eg zqhJ`#KnH)N05rGdK!%3&pajln0V$9fssRo^8US6*ji8(poMhu8xg9g;de9;)Py$c^ ziUuGQe*ghM1}Fi*QWy$DABsb;^%RCmqLD=CDnPQlQYjOqB9?`;6(u7=F;L4z_^KI2 z_{~VpHv8|7rFzdp%tZ~@qz8YYcv9a|(e8CQXT;F$@~z`!E>t?Jv!f8iuy5Te^28jT z)LTo5yEKfS7HEm#-9_x7^9({bq(+ngDK%{dj%*xKuz2hsz|@MnvX%Dix;y!Y z_MIMXRd*Jyq_=Ha>fTB2{zZTILv_eYE(~D-8S{t?Htt~<9JirW9eBrj&ETr5^F?Xt zucvcJW;j}nDs$#4 z261XG3vQbv{{XE_A&tY-k340ix~+D-t@?Qx(&^gO_!e?Em}k2&7`G|R=(~%tOpU5L z=jbaq;aandRqo=xTl|gwu}U|V$w5l?=-sTm%uAgH@(s98GkB4Qmy`0u+g+O=ZBTk= z2iv7NQIu`g_j+rwtZTwoSF=`4e?2vlx?gczXxFb9m_aX=yE5B&#D@rej7Bm)8lPo7 z`C8lYE89~~mziH(FWY~(f_*OT2WVa?3nLUeRhVy4lA)9kNF6}wNz;^Di%#oJt~k|% zl9H0MS669i=*oUmYA>_4^5K8SG&=);SBM(@-8K|f;1^`kSx0-Qz-lUq&X4#bK1J7 zLZwF42Wc&I(Z55B6IzW3#o}$rDJb2m#W#CjveD{hPo!(WMQ)Ql!^qNs5=)()SzYYJ zkOoN}`NnImba4^1e_Wex`X}4D#SBIlS-8d#N?zyZrK@dd-qySFTX_<@c!F@(O&qv_ z1X9e3rC|;>V?C9}QONI2`+tq5td~uEgq|5%oLqh8-IH$Zt#9gvORnp(x>!#nf>+oh zM*&}!4!cA_tqf2OVH{${g<2uW6(<#KUp->Ozt z{{XjJ`3ZUAO;YYXmoV;yVvTl~nN%t6=IOL?<0tnS8^n@Jjtwm-7`Y z8l?28DOskuwYQVE;4&{3xp1j&?1hYs0nChik0j->_eKl*bnR8`@3eI5=Vf46H5Gn; ze|ak=`YwKbzYjtyKNMNo<>RwfU}7MhrD9YYSSZKw`nPky4Lb=MIP zZcY`P6s3I=ZEb!1K36Ww;*BDHC)0oke*lF>&@cy9>A2_9BOF$;uS!iD=Go<9(=-EED)~>K;RSGid^`1o8+@y0#vc8 zQBkV7dcNJSf6(T&88rLY-b+OLBSaNqj45w8u{+vF=$i&M4y~Mat~!n~f4h$=f4Aa# zRAW+_{q*_UckN}_ex||IG$x4??Cux@GK^!)ard^k^H^ zGBT8%ShV@MKf0dRU0-%dCEtdnP=*=Ms(=}C3Bf0x$2r=^uR=Oi^I;y6jM7U>Z}a_0 z=KeSQml zl4`7H?%fVwby}j6Pnq{#Yw-g58Uo0Ly6i?STRvF;xjbM#8w2`K-W_WcfBcibZoe>5 z#k(mqyR~b4SF*QWT{RS1_Z&e7~G?en3CV0=|?6RtGbOnG)n8wP*pLB*;0#I z>nCRWB$1lBZJZZIDefb9e;P9J$c@u1LWwc=WC#nC?sks#%LvnRYEt)gv)cOU_-c1f zRa7G=N8i(#Z*4V8=cW2BO(CP`tadH?4ta8`v8RR5M0xwt$T8- z-S)Hm%GX*Yt-Qt*zJ-8^{+asr3e@Z^56#oE?PTsow(0y`N(v41T z*3;z1Cx+W_Lvaaa{^`oEPrTW{A4-p^YNPETciHH@S+Ca8T;9%h^ws(yWzbE#Dm;qJ z%PA#3Wc|?GHn)6^523CawA~rHZKl<=i@Mj$?WI*!f~b>8fAo^G`J-HTLgg)Dyb{1; zonvJiz--7sAdK;|Ad+}IfnImEi<6C=)%tcfENXrcyU}BkN!~XRbC}NMW%)p0z~EPgz>Z8-QlPn`()TQU5s2=C9O9-wpC z#YoQV_`+LTD=Sz((e5lFk|mvfV)0DIMn*%xA&=e%I2FArlA!tNyGy?3HF^~BQTA2h zr42NGTN(0rzVbnanRB_Eu!Tbwato4s?kY3%u7`@Mf7P2`am=t(BV?lNl1W|JD5jU) zc1`~P3BI7i4LZ0#cr*%k^~V1I?*+-*=~VHRp6x%83opa1R9d#)^V8F{`u83@cd7iL zt`+>f+jqsDSYVUL4fJe}YCgGH=-PJEVq=$Ksq;E;<>s~Q`*!W}v6*G!DYWoJ4GQH| zNig%3e`3o20QJ#J95L<2D+pJWKZe~pbz47Es-_m5T_?=eziXpOHR$cJa_`2Mx409@ z6R3~M+F~Ja8C)>{kDqdbo}F?zttE-6FN)7^!>N>TbgBF*NvC_?Rijq)v$0CuV>Q3mDm0^L**opjO`L_R#VK^{(Ivl6g%L^P2bI=Gh5`_umvaEXg$IAj^RU_qx#SFtQu@nnNya*KwvX4j zx789(F`Scj*Lz#HW#nEz5TtbqZEXP@D`01iK;;h~*P7N?$1nMJ1*NoIj!0#&f2Q2M zrAKzXC%hBitfMe32A^0G2?zU53%}s{+gi-p(*O*Bx5E)uz%` z*)5Mog$0MdD{q?DzWQJO7@I}$KlW9avoOaY4Cl@dwoR@W7{S_bxorC8oNIDJ+1WjJ z>u%nLbuhltr?yj)(Jo)Jb#Hsue@hl4@oZ79!)pftRFx_+sg0oggc7*OCybI<8r@=& zi;uI8y?mGX9MizcRTWQdG?m(qMBet-uTs9Dui0Nh@U4_E88((^oCA=+vjSJ;+@o#= z26?QfS`&(jrlZ}h*}W`1N>X!mr9b6TS|#`EuD9Qzat{^TMu@Fwk~}e@e?;!+b`SHV<rcxy7`&W!quZSIaT(Sy_A#E>egOebuOofbnHjx*d*p9 z3JWp}fI1zx;C9YQ?rTV5DJyf*=C_@UCxfppZ)J#d?(d?#zWeX^bSdfjwwq}bkj-i5 ztH{o~*)p4f0Rb30SE}>W4l$aDR;2{vDtyVd)$ONcenR(l4O$>p~N1Jh^^$GE2&*kv0^i*oOKeitfuY;2^RJVJz0 z_-%XlySDv`R}*P>f3cX7BW18Ns~`@};Rr+|zsjuG+;M<1eUB|#l;o6Y!M17QFIrZ@6^e@;ef{jM8#N#EE036i6X zT6=ZNZrb0y?WdPvBAY~*7rKCrpsK82Az_v|BP4FYPzi3wJ*uNTGfmWky4fv1u7h;( zk@sm$YpZhB&dFP&w(X>hX+N`bDUKJy#Q&8sH zuP<-7^x�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 Ab^rhX From f60e6fd0ce5ddb1da1a81ec2115b8c83dda46164 Mon Sep 17 00:00:00 2001 From: Ben Whitmore <44303264+byteben@users.noreply.github.com> Date: Thu, 23 Jul 2020 20:22:04 +0100 Subject: [PATCH 31/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 86cd8bf..aaee786 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ The "Toast Notify" solution will pop a notification toast from the system tray i Toast_Notify.ps1 is a script designed to be deployed as a package from MEMCM. The "Set and forget" mentality of packages works really well because we don't need to specify a detection method once the script has run. -Toast_Notify.ps1 will read an XML file on a file share or from the same directory. If the XML is stored on a fileservr, theo Toast Notifications can be changed "on the fly" without having to repackage the script. +Toast_Notify.ps1 will read an XML file on a file share or from the same directory. If the XML is stored on a fileserver, the Toast Notifications can be changed "on the fly" without having to repackage the script. To create a custom XML, copy CustomMessage.xml and edit the text you want to display in the toast notification. Place the modified XML in the script directory or on a fileserver. Call your custom file using one of the script parameters below. **Points to Consider**