From 42d906b804aa03ef591eadd767c4ee6483893d3b Mon Sep 17 00:00:00 2001 From: Peter Barancek Date: Wed, 20 Sep 2023 15:24:44 +0200 Subject: [PATCH] +TcQlSeries supply components + examples in sandbox --- TcOpen.sln | 878 +----------- .../assets/collapsedQl.png | Bin 0 -> 6846 bytes .../expandedQl with commands descriptions.png | Bin 0 -> 82115 bytes .../assets/expandedQl.png | Bin 0 -> 61508 bytes .../Properties/strings.Designer.cs | 278 +--- .../Properties/strings.resx | 94 +- .../Properties/strings.sk-Sk.resx | 94 +- .../Ql series/Converters.cs | 156 +++ .../TcoQl355P_v_1_x_xServiceView.xaml | 118 ++ .../TcoQl355P_v_1_x_xServiceView.xaml.cs | 24 + .../Ql series/TcoQl355P_v_1_x_xViewModel.cs | 31 + .../Properties/Localizations.Designer.cs | 1242 +---------------- .../Properties/Localizations.resx | 427 +----- .../TcoAimTtiPowerSupplyConnector.csproj | 1 - .../pex/QlSeriesCommand.cs | 98 ++ .../pex/TcoQl355P_v_1_x_x.cs | 161 +++ .../pex/eQlCommandType.cs | 8 + .../DUTs/TcoAbbRobotics_Control_v_1_x_x.TcDUT | 121 -- .../DUTs/TcoAbbRobotics_State_v_1_x_x.TcDUT | 183 --- ...=> TcoQlSeriesSupply_Config_v_1_x_x.TcDUT} | 6 +- ...TcoQlSeriesSupply_GetControl_v_1_x_x.TcDUT | 23 + ...TcoQlSeriesSupply_SetControl_v_1_x_x.TcDUT | 27 + .../TcoQlSeriesSupply_State_v_1_x_x.TcDUT | 25 + ...=> TcoQlSeriesSupply_Status_v_1_x_x.TcDUT} | 6 +- .../Command/TcoQlGetCommandTask.TcPOU | 41 + .../TcoQlSeriesSupplyTask.TcPOU} | 24 +- .../Command/TcoQlSetCommandTask.TcPOU | 41 + .../IRC5/IO/TcoIrc5_IO_v_1_x_x.TcDUT | 17 - .../IRC5/IO/TcoIrc5_Inputs_v_1_x_x.TcDUT | 11 - .../IRC5/IO/TcoIrc5_Outputs_v_1_x_x.TcDUT | 11 - .../Prototypes/IRC5/TcoIrc5_v_1_x_x.TcPOU | 748 ---------- .../QLSeries/TcoQl355P_v_1_x_x.TcPOU | 325 +++++ .../Starts/StartAtMainTask.TcPOU | 139 -- .../Starts/StartMotorsAndProgramTask.TcPOU | 173 --- .../StartMotorsProgramAndMovementsTask.TcPOU | 206 --- .../Starts/StartMotorsTask.TcPOU | 165 --- .../Starts/StartMovementsTask.TcPOU | 207 --- .../Starts/StartProgramTask.TcPOU | 152 -- .../RoboticsTasks/Stops/StopMotorsTask.TcPOU | 136 -- .../Stops/StopMovementsAndProgramTask.TcPOU | 175 --- .../Stops/StopMovementsTask.TcPOU | 157 --- .../RoboticsTasks/Stops/StopProgramTask.TcPOU | 150 -- ...coQWlSeriesSupplyGetCommands_v_1_x_x.TcDUT | 50 + ...coQWlSeriesSupplySetCommands_v_1_x_x.TcDUT | 53 + .../TcoAimTtiPowerSupply.plcproj | 59 +- .../TcoAimTtiPowerSupplyTests.plcproj | 1 - .../Tests/TcoContext/WpfContext.TcPOU | 388 +++-- .../XaeTcoAimTtiPowerSupply.tsproj | 8 +- .../App.xaml.cs | 5 +- .../MainWindow.xaml | 30 +- .../Properties/Localizations.resx | 4 +- 51 files changed, 1596 insertions(+), 5881 deletions(-) create mode 100644 src/TcoAimTtiPowerSupply/assets/collapsedQl.png create mode 100644 src/TcoAimTtiPowerSupply/assets/expandedQl with commands descriptions.png create mode 100644 src/TcoAimTtiPowerSupply/assets/expandedQl.png create mode 100644 src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/Converters.cs create mode 100644 src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/TcoQl355P_v_1_x_xServiceView.xaml create mode 100644 src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/TcoQl355P_v_1_x_xServiceView.xaml.cs create mode 100644 src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/TcoQl355P_v_1_x_xViewModel.cs create mode 100644 src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/pex/QlSeriesCommand.cs create mode 100644 src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/pex/TcoQl355P_v_1_x_x.cs create mode 100644 src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/pex/eQlCommandType.cs delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoAbbRobotics_Control_v_1_x_x.TcDUT delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoAbbRobotics_State_v_1_x_x.TcDUT rename src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/{TcoAbbRobotics_Config_v_1_x_x.TcDUT => TcoQlSeriesSupply_Config_v_1_x_x.TcDUT} (62%) create mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_GetControl_v_1_x_x.TcDUT create mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_SetControl_v_1_x_x.TcDUT create mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_State_v_1_x_x.TcDUT rename src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/{TcoAbbRobotics_Status_v_1_x_x.TcDUT => TcoQlSeriesSupply_Status_v_1_x_x.TcDUT} (51%) create mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Command/TcoQlGetCommandTask.TcPOU rename src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/{RoboticsTasks/TcoAbbRoboticsTask.TcPOU => Command/TcoQlSeriesSupplyTask.TcPOU} (71%) create mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Command/TcoQlSetCommandTask.TcPOU delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/IO/TcoIrc5_IO_v_1_x_x.TcDUT delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/IO/TcoIrc5_Inputs_v_1_x_x.TcDUT delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/IO/TcoIrc5_Outputs_v_1_x_x.TcDUT delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/TcoIrc5_v_1_x_x.TcPOU create mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/QLSeries/TcoQl355P_v_1_x_x.TcPOU delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartAtMainTask.TcPOU delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMotorsAndProgramTask.TcPOU delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMotorsProgramAndMovementsTask.TcPOU delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMotorsTask.TcPOU delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMovementsTask.TcPOU delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartProgramTask.TcPOU delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopMotorsTask.TcPOU delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopMovementsAndProgramTask.TcPOU delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopMovementsTask.TcPOU delete mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopProgramTask.TcPOU create mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Structs/eTcoQWlSeriesSupplyGetCommands_v_1_x_x.TcDUT create mode 100644 src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Structs/eTcoQWlSeriesSupplySetCommands_v_1_x_x.TcDUT diff --git a/TcOpen.sln b/TcOpen.sln index fd6545a40..bfb490be9 100644 --- a/TcOpen.sln +++ b/TcOpen.sln @@ -481,6 +481,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TcoAimTtiPowerSupplyUnitTes EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TcOpen.Inxton.TcoAimTtiPowerSupply.Wpf", "src\TcoAimTtiPowerSupply\src\TcoAimTtiPowerSupply.Wpf\TcOpen.Inxton.TcoAimTtiPowerSupply.Wpf.csproj", "{3B940703-C1AD-43F4-ADF3-AE7DC417A73C}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{AAD9C8C1-0BDE-4451-9EE3-E9F7EBC34624}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{1A9651B8-7EA8-46B9-90C7-3E3A7E0F37CB}" +EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution src\TcoData\tests\TcoData.Tests.Shared\TcoData.Tests.Shared.projitems*{3bf071a6-13a1-46a5-8fd5-87c8cee94896}*SharedItemsImports = 13 @@ -4811,874 +4815,6 @@ Global {3B940703-C1AD-43F4-ADF3-AE7DC417A73C}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|Any CPU {3B940703-C1AD-43F4-ADF3-AE7DC417A73C}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|Any CPU {3B940703-C1AD-43F4-ADF3-AE7DC417A73C}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|Any CPU - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {6D5BD0DF-0C04-46C3-A05C-0FC422597B46}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {2266F99A-9250-4E68-A8BB-FC036A975355}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {2266F99A-9250-4E68-A8BB-FC036A975355}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {2266F99A-9250-4E68-A8BB-FC036A975355}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {2266F99A-9250-4E68-A8BB-FC036A975355}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {2266F99A-9250-4E68-A8BB-FC036A975355}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {2266F99A-9250-4E68-A8BB-FC036A975355}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {2266F99A-9250-4E68-A8BB-FC036A975355}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {2266F99A-9250-4E68-A8BB-FC036A975355}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {2266F99A-9250-4E68-A8BB-FC036A975355}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {2266F99A-9250-4E68-A8BB-FC036A975355}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {2266F99A-9250-4E68-A8BB-FC036A975355}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {3F433F3D-9648-4FAC-AAFD-9FA134BFD44D}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {7DB1F25E-9FE8-42FD-A45E-F8FD0ACF6EA7}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {37585681-C225-40E0-832C-EB8E077A5CE7}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {37585681-C225-40E0-832C-EB8E077A5CE7}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {37585681-C225-40E0-832C-EB8E077A5CE7}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {37585681-C225-40E0-832C-EB8E077A5CE7}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {37585681-C225-40E0-832C-EB8E077A5CE7}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {37585681-C225-40E0-832C-EB8E077A5CE7}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {37585681-C225-40E0-832C-EB8E077A5CE7}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {37585681-C225-40E0-832C-EB8E077A5CE7}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {37585681-C225-40E0-832C-EB8E077A5CE7}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {37585681-C225-40E0-832C-EB8E077A5CE7}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {37585681-C225-40E0-832C-EB8E077A5CE7}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {69FD542B-8D82-415F-9189-1193D0B5F069}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {69FD542B-8D82-415F-9189-1193D0B5F069}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {69FD542B-8D82-415F-9189-1193D0B5F069}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {69FD542B-8D82-415F-9189-1193D0B5F069}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {69FD542B-8D82-415F-9189-1193D0B5F069}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {69FD542B-8D82-415F-9189-1193D0B5F069}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {69FD542B-8D82-415F-9189-1193D0B5F069}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {69FD542B-8D82-415F-9189-1193D0B5F069}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {69FD542B-8D82-415F-9189-1193D0B5F069}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {69FD542B-8D82-415F-9189-1193D0B5F069}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {69FD542B-8D82-415F-9189-1193D0B5F069}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {B8CE161A-872B-4092-B0F7-49898E4206A5}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {CFBC043B-C3FB-403E-B3EC-38B73B6C9F17}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {711D4247-A0B7-46C4-92AB-BEA8CAD07A56}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {84AF4B0E-F835-4083-910E-C0AA0BB9E50D}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {BF3E9621-3F23-47E0-B5CF-D3280EF53276}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {4F0E1158-49EA-45D6-89E6-C1A4D3AF626F}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {C03634C4-AC7A-4A21-803F-218553AAE7F4}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {6025FACE-83D2-4500-B4A4-6C4CD6227637}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {C292F353-C8D8-4BBB-BE1E-9772558B17F8}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {F2EE7FEF-C378-46BC-BB6A-865036F0C8ED}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {266FDC45-DB60-4534-88C6-BE73DD0A5D11}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {47AF85FD-FC42-4B01-92A9-AD6521E891DE}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {8C2F48E5-DE0C-4887-BF0E-4C2DEC178EB8}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {E1A3BB78-5E60-4D4D-945B-594757F57C84}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {E673B74A-2441-4259-BB0C-1ACE02A8C111}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {FDA3EF9A-4EFF-4450-8B41-A03BD3F0D043}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {ACC15569-A043-4BAB-BB81-6AF48B41871C}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {FC83BAF7-9480-4C64-8D5C-B812256F7D0A}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {B057D1C0-C1A0-4E87-8DE3-42F28C9DD315}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {1A3A997F-3A69-4755-9306-5A95A9AF73BF}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {7056F838-A3A0-4803-B4E4-B49F60A1106B}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {66B028FC-1645-4333-BD8B-FD99CB41F267}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {7F3BB913-B542-4FF5-83A6-0A5E9DB27A3F}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {974C1006-62D3-48EB-8124-17F82E1EB01C}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Release|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.ReleaseDevelop|Any CPU.ActiveCfg = Release|TwinCAT RT (x86) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.ReleaseDevelop|Any CPU.Build.0 = Release|TwinCAT RT (x86) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.ReleaseDevelop|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.ReleaseDevelop|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.ReleaseDevelop|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.ReleaseDevelop|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.ReleaseDevelop|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.ReleaseDevelop|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.ReleaseDevelop|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) - {3378ED7E-C651-454F-A6A3-91EFE59C7B89}.ReleaseDevelop|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) {C4D9013E-3EDC-4D77-BD13-1437E40A0F72}.Debug|Any CPU.ActiveCfg = Debug|TwinCAT RT (x86) {C4D9013E-3EDC-4D77-BD13-1437E40A0F72}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) {C4D9013E-3EDC-4D77-BD13-1437E40A0F72}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) @@ -5919,6 +5055,12 @@ Global {E4AABB0D-11C6-4F82-BBB8-7654DA93C9DC} = {8121FBD6-27D1-4CDC-A68B-E1D24C69920D} {1858A382-4751-453F-8105-17B94930B9F7} = {8121FBD6-27D1-4CDC-A68B-E1D24C69920D} {57EAEAB3-AE95-47C8-801E-DA536CBC631B} = {8121FBD6-27D1-4CDC-A68B-E1D24C69920D} + {E3F5A18B-1406-408B-8358-059FD3305AFA} = {AAD9C8C1-0BDE-4451-9EE3-E9F7EBC34624} + {7BF92B54-9870-426B-87AD-3F84C2DFD822} = {AAD9C8C1-0BDE-4451-9EE3-E9F7EBC34624} + {144514E0-0105-49E3-964C-3489783D6F00} = {1A9651B8-7EA8-46B9-90C7-3E3A7E0F37CB} + {41E64D03-E2F0-444B-959F-B8510470D257} = {1A9651B8-7EA8-46B9-90C7-3E3A7E0F37CB} + {4607A15C-D7D7-4CF2-9F88-CE0B4719537E} = {1A9651B8-7EA8-46B9-90C7-3E3A7E0F37CB} + {F52148D1-7BC7-4BC4-BE22-E16D505C4F12} = {AAD9C8C1-0BDE-4451-9EE3-E9F7EBC34624} {FA85C517-35E8-45CA-BE90-0637752A02F7} = {77023A9F-71C0-463E-86A0-22CC5342EB80} {39226AFB-DB84-41C2-AF53-F0C8D8A5026B} = {77023A9F-71C0-463E-86A0-22CC5342EB80} {5B5494B9-6F46-48C3-994F-4262AF575EBD} = {2C2A0E89-C1EC-467F-A6EC-65B63FB3F0E7} diff --git a/src/TcoAimTtiPowerSupply/assets/collapsedQl.png b/src/TcoAimTtiPowerSupply/assets/collapsedQl.png new file mode 100644 index 0000000000000000000000000000000000000000..f3e573238881fc977c9bb75fe4cce32e49abe025 GIT binary patch literal 6846 zcmb7pWmr^Q)HWfV0|-ONPyzxHD$-rj-7rXlbO{Us5<`cy0+P}>C?VY_AU%ZS(9M8! zzJt&6yx;fd`|<7TnmGIHwf0%}T6^tv?j5P2ra**GgO7%WMx^*kRtpX7K{M*V1THq} zd;8m{8R`e!LrXy#t#XKN3w80pR!UV04Gk7gaBYr-y2f*TW$1y1M)~;ugRZE>fg|((wWB%@Y{tSl{9x4|t!?wdAmC^aU#J`OW1C!^!8}97yz9gXfe<->EH+^2v#Ma2m z%C61#r-R#QW^Rv@1_$kiQx*ZN-hVvSc#`rZ@6Dn8GKyULg5pi@zl4dd*sxZ^IygZe6I`Ei8Cg!NBRK+vH<_)HRHdR^Kp@<+VlypLfHfQrhds*`w zZc+(Zr=B&*o9)s;_p&2E3N*u5}of_qpZ0ShmlZ<4rP>!syyGw z3*AMJFjEwsG5-$Y9l!_iqXB4zShvKD=N$gt`(Ky_Mr4SjRtp_j!Wpr^gpH_R_*V*( ze^qPhXV8&A0oHz>!B^?e63F2K;k@LLoI|4ft)+Rryra~@}!99-r#ecg@`WFBI0A7V?A4m>= zgckyMX+=n;&&K>5ge1Y2{xE_u&&|l@Bu3UpC_CIo$-HNS0pcui5etPyW_*BZhzbXY z_L9U)?nF7V@I-gDOGUn__=NUkXvMRzdgO{hL#UqS*CK(DuL1$l$zk27!upo&_bL!l zxzIJ>(5F0*i;!*ij!?x{l^*d|@VmDls zjJN^kSf73lklq;tcGIX$phua~(A zO51us2n*reN-_c75x)#$|CN&U36J}`X~!--!)4#g*s?vYqd;&&5g>nku=OE}FI zA&2%suCBunuFw1gUsEglvJOrW`J=azt>`>~KCfoR6RBDAt2bXhbV%_i8(r|j2s(r7Qv zBdB`$Yjg$b+O2-vT5;D}Pd$dUl6u^;qbLS-i>tX$&~#w2pfo&%#6kwXdEE2(-o`yn zz?1|KEWBnNNeu3|0o1#TOg;&kIJY-;1N)xX$f_8=&)pMCZle%3Bcu~SpAUt1e#@^7 z0VF9B8~v^gs`}PJEHGZgy??tYX8-v1vY6LoK)v(S)7sBJ?wY{iS?POok7_$lp7Y6b zlOCDV-pw^_Qnx-bdhheItWaHLdcfqL1gj~z9~(mUaI#k|iFIAA;3;2{3+7w(@}qu( zDD^RiKI=DL`c*SLHI1k=QCz~&8WSkqf>YHO@swz%&Q#8=pn6^|x-Q`}sV{9v@!N!o zQCJJ@oM{TtePW>4CT`}wCOF_0<1Y8?JpLjpd-)^7>5r7va?{6M5}^05K4IF9o~Pqm z46#rnNSE^O*N9z1t9*Pr1eS}ncE}g;VA?Hh9?)?FAyumUwd>evrY=9l`ap+ieoNpA zatna9#StKA-?ZFMnN1&&DAJLoTvb9~QAiw8R!9n}xXiOLDAn`6i0PdGNR{v3XLH<# z=f0-cTI%U*5@MpG-zDx+*qE5|dUb7=yv!H%c6p=J6IJ^@UX}O9JB~sbZQOax3rIo! zUin_)M4W?a;eu;=tNH#T@(afqQpjR;PvEBNZ~Hhw@)rB7 zzC%^Mw3p`FyRSnH{CBo)UbC~7Z-xtqYp&zWQb2`3P)k`JBHn5o@RcW;yw~`ES-Nj+ z_X_RmO`#f$4x?%L_8f=T(urc-aEPz287I%rC?)GjUvfMmF2c~C*ZAFmD#B+@bp}V+ z^RtC-GY+4(>4U=N<@oi%6VxN^e-y^xA&-04rflT5dgi}ZDT%+$|3Ip9>|<6e`B9;< zmGoiH%5)k-O9?|2wrG>C-3mv^J8BHTb;Q8|*e(E8e7zwpwZFG`#F(6__XN27!+dQTGtdF-( zT}iszHp5SyPNb`p%q7gtzG7dlS0W#_J>tio?f=D_o@}YF*U7%m{KE2kGakJ+;`^7@ z2TMW`3!9qEaYV6T|Xm9Mg?oww-Nz$547D!T7>$smz8VG5Kd9nVQ3 z`^Iy$-nAWZH25?!G1NQB2!kkarK7UQ>hqU6aJE>HB$th1zB zzaiFFffl4>bTLayL!0#Uv5FbL&a-u!5^CHZ?89^&ZC*-c28uJgeHc;LrHXL|gpi8N zzW4XSQnXo#Ju6X1IA7m%(b>D7nBVMO489|6IVa#sV7)dAX$TVIV-Vk3UuYVousFMf z{|KUI4nL_E+2opQp)V^?24OdG&xgI2P?66(f3=&MGR;934M&v|vc&yem@P%nTy-2b zpb<22*JDf@D>2BFk7bakQHgvA*xE%4EBPn@;aRxO(MbQJOf^CoFTs-<;=6p<=fCur zetGQiwbL9J1@ofq=}OlyH$tCp@wcl#$tR56ouD~6kjr;odidQmI&Z1_&K@(~Mn+D%DuyFxcwXnUpvUgh#~6GH zo>%0tlw|nObn_I^(z7)1J|=jUm&E9Ezw5=hI7?4_dv`2!Bz(A+;H`=5jCH}K^Rhg} zb{F3jG)O=K^og4gRwa+mN$qo$f1%_xB|G>o{jXzWX7fnJG%sCrHpl)SpB$0AL=S=m8kopm!7B z@W|a`Epq7uQc!-i{w)$1Z}`;)&j~%TZm**QbY?lfdMa24q06(~rx@z*KLAU)_d~cU z_LG9YfrwY4p`%Cz@w(>Z2%hplVXe(1Ewk*jjiqRhIvnLNn7iD^iN-KS$e{6bfP8!a zUbY2%(=Qb9JJwa-MjVjPR)iel8lzh2L=|{t_&XVCZO_$jsB%vZAc`Q)YGs%(~uk ztTDA0u^gxr#P4Q9K6JCg#+8+3{OB3Flbg4LuiZAy9J)u!#kbW-ka>SOrBMqpjfwo_ zmb(zU1Ds}MO8#|!b};F0qu)K^n)F%?tYKDEts+&S&QmE>O;OVJ`IO*C&2OMO`s!;; zi#18%JVv$2`o_mZUDq@li+GPxT(D}Loe7)obMbprE;jp?P*~S5m3r-!>|Y7)#d7n# z6SHgn1beW58Lfu7Tpno|ibjT-d1W)m5`yAC4b+?8p<^y@?^{Wj3ih%_=z=k_ zBO~hh&1mnD6YEJk948616!EL#>p`EGU&vAJf!arNFho-X?p3R$NA-13gr|X z+o>D5yi(1PH0?&kHv(U4qIgAAg}Rvv2l)8rD>od|2A^+dxU4C5?|n#ukqdQ>u{9H5 ztf|JbqqTri1F@coiRdp(Fg)tKB1xGXi@#AQ_o)vVQvkxh*v{-fch|(%(n_uicw(ap zjB>u+?=P!=wGj%u=HO{#6oj^G4FR82fYko! z%DG|m$R53C8h%b|58u|zXd?xqh-ovG6s}{}1S(b|0+cJw2WGL3R)QfU#~&x~ZpR{y zneeM3mD`zf`1dP3lHU{{ncngUM?lHr5DhO5pxEM4-ta82On!;bo-Cx~1)x=M|IIjC z&ScKClcUG^D_YftbnCvsN?$p4tpLAbxxQ04{GN(9Uer9(U|IsGKo-mlezsprRCFVZ z$ZZWdWVf5CU`!ySuP{1aET4z}(+#&J2O*6ezp7*74{zB!>z{~(7SNN-FB+m8U!a~c zQdHF9Ph+Ne_|Tr3V#yNFSliL!FM>BfR}OA#IyJGuACLTXzT{!vv%z=#U3~#XrN|y< zxNQTqp2cdxllPq^x?=!=zOV;PHA-trrIb(k+}&(L4X%9>y{lfw7*mJ!^_Y%QGLs+3 zeXKf8lqUI{X!j|$pXWKg${YLCBDVcK7tQ_@Z;bFe=BX&(P;ASi)k%1~G(^G&R4D7G zh;FFcVg0UUJS)B2S^2@Vty9*e2JJQa3-WGPl2sx^!*En8XG3t4|XG!QEFA{l-zN71|J^o<; zp|G78DMz<=$?CK}^y$3dKLEr~)8>Ei$oL8a6}B$nNHnohG2g!*wc#Z8MfXpN=qe@0;|1@YWf$X(l@6N4Z$Gs*LYHRZ%a#yS4+_ds`~YpI zVxs0R8Ejmch_~L6PK)4^csqqGXC72@J|%C%#bg=|z?-gaKK-(Nbm(PAJx!}g;w_g! zpm2DyfO+)&Lc#K9;~LQXgdn&ivIFQa(p3~E9%y<+oVBU*hg0x72`^;+$)NVSUYmW1 z2kFsn-v@F3=wXV2HYSB;1E0Lb3}e{(C)CDis0!VR28ckgR<|K;Oc!+@Ao^!;X3rY* zog(NIF-V&nz-8KPl$lBUSnq6>@u7!wR!^TU%)rl`J8yR5=X!60=JA)CE{muDc+^b6cegr_Wtwx*|lK^v*$QV*ZG| zJt6@Cfz1<0Lj&%V%?2bfS^t9|Y?&J+S3u#CUcdj`5t1CPUy7ieA zYnF*8hSxI1;$DD2e%{u)i`L+N#(-pxjzj*vR?wNOX0wBd?-61ttcx5*ghXS zg41X2ZbEoDD~ty%VZbz&FbML>E@ITi|DJpWcu7Wn$3r=q+seODqH#loQFR#u_9OGi ze=$`y{g=t(FTJx_lJlnjOBH_l9Hf8KAFvQpGW_ek&Vxddo<9d{jOI)8b(mDB<;>J* z3G@-7`pX8^K-Q5p*?t?qa+M2wg8UnFOUlU@+RzTX*^2eF`>}sp;|)zg=RM^Z5s+bk zSTiv|pvY(zhh+T!rL*%E@&8}!;{OL7DFld>&o574);g#CE^G(2>IH^>`ZdT9T0Gn==X8-cC^!kzcK{MD)-4Sd1@P@|EeVaPbJ-U zNp9MuLH>02h%#YYH>)!hXZwV|km&WEHYOL};MmTIR`nVJ!KmvMscJ%1zvbDueS-om z6YpP+z7WOHbMWxZk%63aLU>@?%7jhbtot&m;WSo}@mx`GlT=ky4};1((~5f^y0iW* zlOyOd1?RLgXq+RZ(rDgBN__;rjf|D)DwL`~YRRCq)i_#Mr>)JITA*_H{}BW*;aMD%x;6$uRlo_)|2!xzRLaE+F_r#1dDmdy3l jv?t#ZYNi_OYl(-$6K-c!txF6T|@|4s!MX*~o~_VO;%FV46;(0c#?)Ib@J?9bA# zFZe#O3;+N)giiiWJvF+y0RYenpFVnE5^TGQXAHYKpG%{y$Lg4vygK6}f8k~gf3DaK zoOU$)=0HRCm5QTYx2_*$k$Q$#mP&E&Q>?A45u8s9uc&ICU0q(zmB{VDx?k}W%54~r zg1bsQjk=96yK>b>$flMS;_RG=?-9Oz>2vp12t^(gv^zF7hOh4H2E*c{o?oVOc0vZ% zM^6K$Z)yw+M24xsQ1nhkC0=Ob2LMD~_ODD;7*jjmJkR0Wx1(3hU++;lQR@~Pa{>2H#fk@U?l3)=~a%fR}ea%BIlx2 z0f0Xyclu>%s=*sM$GB<(MC%bM$O~e3nqfcb&et>QnGC_n!b~IVA&X1# zxyA0&UtiWwo(2FEpI%x$1-SG^m&|X&!lzVl`W(v=v^B&SWZHA!OSsOba;e|m<0Vpv z#m{On3+7i=yVYl`y7*p^?_fBz-H~cc zP+W+>h4r3Dmi6Ry0B9W3_IV2Zi$2Rq)0t<^hw8KZM+MHm73f7@V@?|QORP8OTJe`u z-abE(4xKjs{T~%yFzvD|$NaQ{1N~9Lky{smN!gWwbz!USdg;5&aJbiC1kzDXo>3;r zJ{i_38k;u0t56z5Qjn9F3sDOqJK`}dR(e3S-}>;Z^ch~``uQS+*}Eq=2k-YrcN-_` zA1mKrK{`hy`Q!fZ60iq4+t-nE&qirQwpPeTNQ2{o%EnubebD8V-$;+&&FVxio@J&=F_d|4QD?D#*rA1`i!S|#;{MMuXYnPaPFUBekI_N{Uu64LA zzDiNmI_MC`ZL%-dSz_xO)OIP;{e-icE{35&$>K6c)0;v zS6n*%5LQox9Q2h@CgEA=V>{O6#dC#>>&LVtNUSM8puZ|B0;?GAfEOXdf6W)Okw0{( zRZgruX>h-KBA$-&!{_UUXqUX3*WO*aa@+gjwS=6T@)t`dv$4wl&c0Z1Ho;({bDK0hU0{m(R^52RYY| zTNn;mRu-Lz`SoS>bj|6&Ac5RFA$aQRIQ=2iDZmo*g$vreL1mAD3RZTOO4{Eidqlo{ zg%&LlT0w=F<2loV!4CWfx)ASYE(?z;7kEMOh5J(cNxfN>!vKEV#GM}ls5{3K32muH>M(Rh=2e>wWH zc7sCuv;{vl*|>Lj&r+OB?c1xMOiQa$^H6BziHO1uqhtIXGf)^Ws(Pc+^v1%k1c$DlR5Jr2$Cx~a}~Zd6K6!`(*$#**C=K1!#Y zpsJC5*MgQGja9wy(AeP!9AHA3uw|VSO-bcnyP-$zT$CH7G?*n*eS&ZCdcqYvn=vv@ zH#waF({86o_?>2)=TZN@y@Y*EFGl7!hQ4qDzSb}nfYV1Ezk(feABFU-3T=R-XIdcv9*K5ynkDc)fN_;ydhsfO#Q?;QtM zzD3q@g@wd=Llkuwk0-bi*E48Ya7g5x$FP<=VM7zI7}fHmA}DO>lthoo&BMxpJb9R5 zTf8h>TS)J-0O2USN>GpJG9>Gzje6D0((4p=dmW#$z#AkqXW=lWOs1H z#l4zR+jPjZHajV0Qv}JD>C1v!(iT!`b`^G-2kZ~6kL)a)A-}aiH6V)n?nYAyjE~#fBE+U*T@=<(27g0Smj8!pu5%+ zZ)mMuI|3BjoM($nLs4Jt`9>oxyfCMf1m!K82-nJq_%{FW#ScS#Ix_OYs?Umny_Kb8q0xt28E*KlG`iv$u=PEPC1WC}>H98+P-fXv9pREC`m~YtjAFQH;lyHD zNRkE^V3(v4OgBe*Sy(AHnCrjOgJvzc(_L*}^{KSW+~@4!ueyhXR#S>KdIQcfunbuW zs2bP>FF7<1>2uN7^r-A%&1$4IiWE^MNS5N{)if@Z?en+7q6bS9NX#A1i{qu8PYldM z541qPlSe#o&EF3qomvNeCL1Sl!8fO8G-S4)d#0)X4vi17X{N8dH}wvGS`7!Wf8kRL z-hnRnPP7g{BkQr*b29;!H7zdR1F4i_bMw`l-aP*E9;su^yu=*n%>$=0wiJt_} zWEJ4^q9N5CgW;a?;fLjuf869lmvUR(773>ZG5CW4KKX;TKElYUy7lkpc1GrVk5g3o z9lbW(+Pk5mhxw=Bi8)bfqZsRQ?{Hg2%tp&XpO;~{PKN2t2QI)*l{8ML!4IcgU}f0j zV^(TkmVD^*6=BsQHn-`~xSc9C1MKuydn$EVDg02US33MKS2gtTBl%0gOebplHu%IF zy5F}P8m~HWCu_j%KFYhGVCe>!9L)54FWwtXx{D8*;7r=Cxyn4g??Ihz=v!gbiO6r& zRQ!kshcwQfvR6H2^s;g(&^sF_+GeIrw#y-r}T@`s@59h8EP|q2fw>qLc z;X$?-xXOMs=fzBaMl60tb2YNVOV4tH4XwJQ9iG2o+@WSW{namhS6~d+$wBoUR>0#z z&mJ6by28%^ve^fjcdga4a=y8JmkWG;A0Fvr_Cs}ICmmnVTfAMAmA|c@I6gH|yqIzX z+&$t>`APsUM?q#Q+;Bt%O{LA zT;JfK^+N?B`z~CSICpGV1=lOeG;ndwEYBti(gy>em~d$o4X3F2nmf!;l-Z1!xE*QS zkrj_^!ZX%dX%QZlc^!9;%p$`==u2Z-*~sy>8IVR6BbM9<3#%+sP%CsILB~o6Uevl{ z3TlLCgD!<}_KnaU>koUVIy-=&X?6E$hq21%4PPN-vp6DlWkNG6VKpWO3e1DA4v)2* zu(Ism-@dx8|IEFYSJf6+T-I@{4wUXb6SfV)7Go-CW$G_yrp7apKV1&v%a>m};IcZX zw~G;;ECxAY^O5mGR`|?M1IOc9P?W7~ikbv1=R&g&Fs(={(y+TX!>HgNBDod4>xV+v z?uN^P<~K=K0R6Bt<2zFg!pWRo##uZ?Y0o_a%iQ8zvXU~Tb&Yk;k78`{zd@D5Ey80M zEaVp+pd0p2hr5<7zARpT|E4yOG8mUkt#QqAM){h3j-68hdbL)~)KuIhi-HF*p!1E%@jSd+)Wk>%$w8|SEf zKUsGSi1oAa(xuH*VwQqznREPmfX|V8ERS!HJqN#-4M9;hGise?RZ?x z^F!$5?$*yYp?#t!@Wjp+$!IhdG?2WT2|obMGxj<%NRKuZYAeHOEU2v;O%67coNc*d zB^Ml?(~hE?k>HwB+1=b`3)w^f7drN@H9|Knq5C>J9bw10AI2L8fZ0|>hwF_G1e7UP zDO0m@cPvx;LbYk2Vvy+Of|Ud$)aBQ8raK?5OS}oZ_48*KC$L|${a}B+tXXMKNw@2V za^UxlUQK!$n|NLq8dcmHm*ZQY>?cs?9`oVS1bvDgn1{~5r2 zf>OnZHusQgI!cJCzp05+l)_s_&EdAnd@j{i2G)Ysm_t|l)ya$Uk!H($Qp;nlO61+I z0dH0=LL`#5?XpW)ePCEKlUXo^p!Agsf{*o3LMla;MCC{)~mr>A8(^u3?9=zdXoK zY$X=DWKD0daZUuR|C|m-S8s9=TVn!Aqfn)cgkRyhUqic{YSfAr(X=+T!&bq*x=P7$ zDW%6te++C~so>({?NUM@zehi)BqEEST8NNYt!oy;G2WyD2K2CSr;e`Skqi}Oq-p|Hak0yCG)S@cz?Zuq!(3I%5$iMG<(;0!4&o(SE^yl9 zWVA*!#AXz$?-@|%J9>Kg@Z(kK5{D!}KX{z0dEqb@7#*%8FRO`70hUTVO0(yr3rx`# zzw_W8(42s@imT!+h>=n&C^ddxzgwsp zgW2-&jc*ako;eq@yD zhnLf%1ei_!k1m;{G)L8e8I6O9stSkqesfSTY`iF))O&oTPY<^k8Tf%C-Jvcaaw=xI zd9USEhkWTZy72qi?Y{o0)I!p#tSHG+M326f<;lB=l9{CVE8)Qe!d&EG4!Ux?c=;Wf zFeLxGx5to<4+UW0TJ)%U)Jj$zC_BP3 zSS`uFO%>4zoPC`e4vvO?Dys4xdI3&&<6u^IpG%?Y6LsxPOYy;?^|+gDg+BI`Pu0k* zUAM{JvnM{Sd#ZXF$8V2cw33}4#??8gH&bh3cBH_S!^U8{v3rj2w5q^EO_kDEO}6P>&%h(VUK*qIng4?;lduMjZc#BD^AX3xkqzu@0gW! zNx=Fjw0V`8P^gH`UVUz@0kwWDehBaUsKj99{At;mNG*w0CF?JoMk zJAEVIl?hh4dtebJ+z+HpMV~V)R~8?R;8Ut#JwC2HK1ys|qD2S{UI1I9UrhZlbXKE4 zLpi;EBb#rH@A^0eTojxA={e1xTQSVy+?1E8F^PrR$JQewzw=J!=pWcmpn?gfZHgya zp;%m6`dJJEv(dwc(WWD?#y)PkE`<|+wPlk&rqj0KBW!maRN0wYZwps9E!oAE?t>#g zzoY7-0u%TT`%r-(|3_~Z7$89PfqAQzO_%hD2X)6=-NpwI`+cUAX1iT1lmA1E8?=rPZ9=XyxQ7k4t{-BXX-e=%IOJHEd?pVKS)IR$#B>u4FB1TDXgr-xQ zmryx!uFV!)q&}9T$p&YXq}-*0^E>evrrrL-zX+?ozBB^_KS3J-9dxF)3ZtG8av}#L z=Ap|NgYcW7)o18NS1}r$$asS3fBjvWA-($o+^JRUKL68>h#G;3^Bu+Uw}L+VuR)Yv z94XMnbwa9zT2^!bJnHy02SkMP#o>r>| z(Bnlqt14lq;!rH~9Ka*`Y|v$o+?akqBDC7Ax6&{{Ee+<@<&@GfLeUwvRiXMZX0#&v z2ERy4z(W=6MOo74w&t)wUm=*RiAF5bvllP&7?`d-5AW3_(Y2VS*jKOQ{s?(JQekimoQ*X?rYp?O2`E@X5QOEg*TV-&9f`(p)A||3FHavVs?$nY)%NcDtcRON5;k9^ zgOO$A@85T+r?%C58C1T{1*+LaGq7;yTz6sV56Rab9usw0>Xz+u^?|!Yqn~@Ip2#a| z?_`ut*oEAgWDM$%kGnw8{pG?@hp%5^Oqoy0p)oRmgzI_aTtD(nXN9hm28pZIeF4>Z z(X$|=dAisywf;>4Xtb@Uj=J}~3NF&|zB4Tg-_tE|;V@>Hy3DkyYi^BIk_wd0&AxEd zO>N^iQGmC0fAbBZ#y`%bK7Z@-5BhnD%RlODD`~H>r+m&gj55YTgxeW`x;p6o8ge&X z2mTwMnHSAA7h2m=Ah|ksh8R;`D!gKV(65}Ob8V}W`E&oO?@N0AAWD&gdo4}q+CrMp z&ebUFsrB;=L2Vn7*EY`joI6>!+tvRni;ZIxXA9rHU9i@jMn^$@4`5pRQeYL+?jCMul4asN~`i+y^&tKwCnm#^hl1@=?{>R<_NvBVW|4YjMU#a*} z>bc(tBx%fRsnVby3jl|6Ap`S_yMbM#LE)|ab5^i1StK}QUF`p3x3_cu+KP6MFl z(bE@gql9kW9M!S2jek}Qh@$L_D4hjF1rO!7WseP4th!8E)32VH9lC+x6vJY`{jim| zzZHfZ99Gj9t2N%RG$BtKhQoV+M7|+W`rwD6=x_WtoBX8OMe?hzLMc57)@V(y({A%B zZT(>Ce%3#LO}GM)j@kbKLeD~qoX&FE11`Z>_*F*B+xY2xwpY;;h;)Sjckr#IX^$PP zIE%S9>z%qECPUan4}6QJGw{dGXIPXzW0~m2CA;*CUe`q|{lQC-(VX_^mnY@cJ~(=L zJBr_}#)Si08-0-*@F#IUfi;2vdvd}hEwr4@<+Nk}-+tVY{08_}Ee#id2Az8RpZH^d znDo<`>!v__!aIyl1VHThD}WKf|I>i|zqe}tm4Us~X8Y@kDOiNju2!L#o?;3LU|zEZQ9n{?Y9 zl^Wk7qOq*Ox&SDK7!R;TZs5r4>b- zsu>Xc{njY_-8XZn3bJQVq<4U; z>ZmlpLj$m(*!Q7kF`|kHjU2=WOc@rZOO8`8EGy*cYvs?@XkW)usZ_Plc#g^^15NMN z`0gT)Lk|8q#Pot*$_9BJVEQ+yx?uZq+ly(%zg4t`X3s_`e!E6Do;#TlMv2X{6C^^_ z!8KIN`0R}yb)EGp8t`!RDQhL6szB77cqp`pDztg0A-7o*S9k>+FC=SA5Ph0{JS)xZ zwidad87@x*kJl5c*_P5|gm>aX?VTjsD{<|0Q+}Oehjo(QDwRb3++YRtyHu=`VaJ;} zu{M6CW@cJk=lYJPXb65}XMN%`BP(>pHxYel&kXDLb~Pdql=zc+~z? z2ITlqF^%IFy1Jpt&Q;tu@i$=@t=`>({dsb4&?;!h6|)a72dU<7Rkb@1=zRba5j6G9QL*NHZx zo)hyf1{CxjbzK-=e|smggtChw(p{h#x(XsExYtgj$UzAhe>8;f>5C+iM;%^kRi_Aa zJ}1H&U==D*Wlq3hsHX$hk~V7u{wBE}Es3;EsSPV2pB884bzieG9*xOE5z!uRd(}Lm zSTNhU$1~oi0Krjs@~%N>IN@KQ+@dyc-aDZ;{td+~Sv3f=Q$Fp>x=^!*SN+3G-KcXu z|Mm<}j&OlhnOX4f`lQwGW3`Gv)*pI4(LqU$!by`L0N}-TY{cf|IVHs%UA?8Enhe7_jeY_87%kK}n?M#t6N)*}D zApSX(Z@ucIk(a;L8Y;`Z6^%9W0?{NcAJ>5Jotk}J%JiJ^BoAFa<>aWTEfle)`B<=d z`d6zmf;i+f5_+T+U017hnO88V-?Dg_7tC`qg?XQQ=~MHN zwipDfby4=jHW{m}bsH{mhx9$tYrXNn=Xk{+RP5&%2#QiueE+~7LUmNdC_XJlAwA8|(mu(`vM5rR-Y?#Ex{;$(g0^~w$}C;< z3|OJ%s6o8+oAK2Br$$u5xJ#aV9iLibMC<1w8@%lT(U_s!Z&NxjONqP68~bf60v)3L z+4}=0x$aiiO`p?nS{BCLIU97Z4$tD>(G(D2Qfu9Z zc8pNDh?C;f>B^6

*3JoQfy?LrCg!RLq``mkd3zDquIbzZs)dv_x!kC`X$tukZbb zC3pUDveoF4;7Qahkl4_07tzq*zCMNCJwUcr_n;SV%F>NdQnnPKist(wMia1fny|Ml z#H|+Ac!iBE`J?Zj2(~=^Q&D>()+hdj$Z7XM{y*_GBSqnnH%|7D(CO1+E5{eR{@{qIF1|M6-})DNJ#u$PyYyO-DS6dFPzCna5_ z@B{9vY#dUxpFHWO@8C)P^2N0ZcI(9BAcWTa^*HY9o$Lvt)Bk1&bn?jmul@ZmglYc| zJVwn9<<#DW4K8?^#G!;R^5tc>Ofeq(rVd~6^mw!X+#m5#kK5)AeIhV~W2!`|cw+)SeJL%R)w|=` zNqROvXLrkmcZT2hPkl*f?-Syoir$Z5)g#uPGL40JUBxzaVapD?OkAmVZEF1sQ$FLu zkQ+@M89?vhRn;Fg6DJ|Sk4D-_}b_F zmK39K(Bs;l`n~4bJ;tP5;8t=7w}4gqXBGE&qk5gHHP?6iW%53zny(Fv>2(>wi5>c8 z5!xScW=g+pJv;g<;Oy*MdcVzsYic_C3S~FoVINu?r`zyd;(qTyh%2~a^=mJzNIDB#IUqV%>7_h$g(y9G zJ=f07;jv~tKo3_Uz1v%#|Jspt$?}60vf6~R``7SZ&3T`T`p= z`S36}Ba7nn$hI^+DESunQ8WlfR%3uoqSbf&KF#9C@x?uRZ%FGM^36oaVjXhDc+_2X z$6IZltUQ9!Tj+OQ@l%N|pD)o(0fD^!yb7(X-@fxUJEduboJg(yU`j!v(i+T z6>^YXR}Em&!fa9zo*n#Zol>>$Wn&v?-VrEB-2sYNK6<_xNe#Xo=P+I%=|`S z$kCEBbN3>h>G`FX`dOD~Q5x9REV%-3;YIGQ``3M04*1>OLcSpaN4qGSDbst1 zBVU8etY;xC`qi11Ah_@k76eAfdbH%KY51 zk%G5h=WtbKPP*lY`?ulQ`aOrfCTP`2Cu4=bLQr;2e$l@g$OAK?Z-!}aJel*>fCMcR zVI+bs^0BHK3t1Z*x7-j_zT^?<#Z0W1nYjS=99hfGe|(l}mfXdI3^eY&a9zqK^tBk_ zB8#U5lof1-ziu69wU*#BQ0-lKC3`6t z+B0jUy}h&l%WpeKwNeV7k%I_oS|o3LN8lpiBcJB6?OP0pG*aI=lu^bkS8hwHfMGt0 z;5s{--WU96sw*^SAbjmBKedG99d7@cAVGI_`@t&xFZwbkp~jjKSr8egtXG9eVhRM+ zCNSzjnq5M&l_RYCT#%(m?t)4`##P(Q8{hKL?_EX5;hM=~=vh}iv7RpDA9JaJqpO4? zZBO7H5JDd2Mm~?v4uBzZZ)+Ad?ay%PF8uRd=@UG|1!yrkUy(R}ba6gGaFTdWZ`_Dh ziQ@0&()i8CDb;ics210=USSVk&uvzVy`yJ+RYw|7Q`cdabw{IVd4Ul8`RBr-I3h^z z5y1J2p{QjDQG{rzZ0Jjj>#9HvGMYFK>%ENfwT)tV z$xzcbbHW})W+*2;*IH|^etLjO;)|PO@EGbihi9(mNFc{p?9HJD2JE zBOLyktIbymcvc=4WDK>UF{-)f*+1q~Z&7^k{O4yseZ0WrViI$+cYC}3DJNsM%Fm=? zaA*2c?jXXwrvcqWa2GFPdarC4L^_r9DbqUd1Jtq9`S;daoOh|cLyfa8uwYCy0)1yG zLe&pao#+=^BzZA`w&Hy;-J(cj?Fo2_mFVNS)^fo;bcPv!?JkCB)05F(KxUUJM_&$p zoEy=gqS#PAqxJ@GG>M-}x7fA$TmW#XC}?=X%udcV{*u86Cy zmJX?4d_ztaGb-h%Q2xg9BFSn;u&3{7kbXV3*!|hFGEkoC{cSU_icd3W%QnfXTpss8 zc@c&?i`^}Wm5cVFOSYrMtL_n|{R7rCr)N|^oaEP*~7z0;VA z^~nL#J&wF(W?)mHeHazaG~@0xaW*}cO=H$O^x)}io~V9ybrn#vME9=UVD_)GM~Rg> z3k<)EYne4AI;!a9$GGh6ew|25N1!Z*d-^)$ChQ$`UI+Ck@05`#^SZAt&q_DKxiT*( zJZ$3B-u>~*FZLq9Mt=i)wPd(LSN445hB7WN*Wq#u2gs){bRTbj`?U~E%Dn`7W%RvGTVClPrxZ?!B)5^_N>HYanMWtT_scvHUR2TR3 zU&Xg@rT1SQ7_4N>z9uky5YI_)wklDGjh6sdOdhO#nP}qaZEbtr*jV>3^)1^oIdh3Y zxYl-zjcz6fxb(;MS?X&^RLTVK1J`MKo`Eg~p4BD^!hr-z^Ksexhd=LL1O_Ds2Erav z^6Xy8Pr&t##;{3?L7eUu$ot}9Kguetr_?wGE<4S+J@&1*0Zz0B_iTa#E#H%_$s{Q_ zM5p7-Z?$}pwO(s~D`^Hu(1_ay4;NezC*n6JA95(q`P8lvR*q0>Z3o}no=r_;;y~#t zV{V@oFxj_dr60|CDCjIH20y(gHs;ij!SO7D-T912sJ~Sm8E0tm0kxg=-?q=GT8j*OE7J6O+)oCn!q_2`jtyj z#n3;F1H3xvP5s!g^)A6IQkpMDwBc9U4_`lD8t%tVo;BiyV^em0(BsN;JMkQ{yOzc& zMT@TkzcXuh4orsR0_8PU;v5Vv@a{tIW_4`HT6MGjqsK<)M3w);ym69w=u3>6$X<-0 z0@*J0bCU5^W@l~sq~zD9yNV8a>^v2erC`EU^F(smqXeEMTt`s3I@s7V(_ZQZYCb)Jz--ww^Lxx+@!S3SjU)F=FLG57zW+QM z2vh$fA;;FVANK6nnI6^X=P0u5R>WPEz5IIlMG~J0Oz1Q$o`W_ zdihax>7kVgI#{~y4?larWwYYW->ucCo-dLvf?Kw@mIK1L!``cL$MA(2Aa-(|o9I&z zM?8(q%c=CQjj$JfBJHF#=SFM^rQTg#7y0S%q}S99SSU=pp;**+eja@k#SKM4u12x+ zp5f55lx^k}kW}@FtsRdkN;tR?ke5cri8_pMfjHC$m0#G5MEDH&h6@I*IbW;b;84>7O=FFzB=2tnhR!mVASp-H zX>&cgm_)g9x1iDX>sozGarVvcZHs&?BQ@;FnhUp???_a{2r+uV{jY;wA>w~cxQEl$ zhx|RP33awz2QKmumzRV1S=66Yg|dS$KSyONsKcHkf;b3F;l^kWl|!fk4s}ZzRfWDz za7(2F5#^?wN)A=36YzVg-1d0b!kHqj*JZvak`fg4u(hSes;@TzVOnac)z@Ue=I$&i z*cKXg=ZieZKM^$fMtO>-F5V(6p$N#MaswH`%EftS?Amy0B&(~{ zcQt)?J#5{5rTYd-zmzwX-TLURy4ZOzovnOk-9tTlq3k~0RpL#Cj6=WEk)f5a+d-CR zYb(yZA&o^y%yhVP0`5oJVT!#drMSivjU`BRB}IB&!+JyU zo0^nhC&Ymy+j0@y8ORI%SZ82YyamuN_?zNXf z6>!PmD58~qMp7*r5=5y9;&^nsZ?6JAnc1|FvZ!y5< zRCwHTR*{(CO5=VoW;<)W(c}EdwuT&+69$`4b|Nf^o*<7qx83PyXiw;W%hkQG@jX2jz;JEl*L@v|>7IqbYABM@m|xTO380ojNau=#FQ)%WH-F z`UGuztC&!KZ+!I6)LFoi@*0>b4_)(B2*lZ#R+wy4`AKo8CT&e~Yr^t?*jqtqs2*bF z6&?K?>07JqBdH+5{ zOvEF6iani2$RfjH$~AS_BHR2yb01paVnA+clgVrkMt5H|x$`ez8A}8H3}O-<>KYo{ z6uu@mzgyzJC6y$b;7doDfWx9=wU~bn^mP#Lu{WTg>*`h|_ZFh~c-fUi7y z#+!2=9uJ9jw%-1YUvRAyGg^780uR=B7SVsNHWtK)__jW^lyHGeN5`xehfyF4v>Cso zVd$eqmxRUl#0GcU@C@V1h(Z?50(5DbVJ;mtqpd|cmQKuk6LbVhp((@gyht{=>9%#P^$%#@$W02X z&^_?W2svvp;EpUwF-5#02&dUsD>M!~YFq%X+H7ZK5nb9CVb`F!P3~zatCG0cZIPx( z?C(xswRYWUAuCtXY9kB#eUVQfZH+XOF9Q_yZ?A?0PZ1%)t>4OY4ip1l32B7r*A{oW zwwZ0yLCy_vkTzyKKoyxxc-zAMUMMxLvrHpJ3cotFl+6byN?v}aJcyUz60<=YvE2=~ z?i!E0?%v;gRy@gU_to0@W8dUwCBxz(u2^I$=;-56wLYU+yvcqdxFmlx(dwRkA_nd0 zAV4jlrxc>{ADB;Of40rh^Fodjx`M6D45olJ$Q4%*CRCV-1Io8<=Uh+|DC%XR$fBDhT)#BIZ zfAjl3Eaa>(vouR2uZMc5UzDIr{CVV0Zf>v3$S{J4r=^VZ`r1)zT8SUu*UxAe)ha5w|mP!zen zUHoC7q`$hGj_lThULxqwuHvpZn{xGbv77EI)C=}@iluyycf{6)qK zdH_ZDc(g3Zb>=g_Voj`AfK3@{3VQRy=Y8(`>K~;|0VEJ zB}}oE^CUO|YNe6pjgft@ymgTyx>#0?q|6sz zq;aPX7D$kTL`^HlDu%jbhnq$f3+22%0Z(>~Q`0-5Rb9FZR<|C@r?@E3UU5n-y*?fP z+U4h;30q)Az5Xn_C55y2H58Eq^d?D|>|xltpJR71coeh%dkyj|VOX^?L3&?_0dsd= zscu(V`ubesa?xYB z16L}rlZD$~>OPSlxrPruV+Bnan6^hS6<0E))THW@bBuqgu^b|Tl6vmq@7Iz6J=YjJ@ci<5b~#CU($hZaF@ScaDG_oVY(zWm{;1i`TI7GLaOcLa(AUgxSE-6db8US zahI1v(g#WpE7>lUl|JNY2=er*u*n~<;Ob-?qkfVvQ&BfB6y25^DQk=#)_2%{B(#Wg zvyFk+nDKqK`&8~nnn}IT`;GW6%Ji9yGd;gGlgCE*i(YXZ0)iyc3D667}FS08-x+YReW z;I`~mIRimmkEUI_4P{pUDY@yc1MdfmQr!2}sZi&XUn* z-v{xjADyuz^av3zR-|9Q_4HoAnz5O2)(RzUV!1QpQ(@8jiwKwC56Mux%DR%(iiZ}}Lm=@PNCT(Y?OO7~QGwtJ+F4kASgv1{63MH~hM+~Z5V623V&&Zjogb+d4~d-#TGpWX18w$wv%oU(WUGR*_X)Lh zRs!u(?C9ZMXm?l|15|>bbhr4)UQJV#&o@DXAnL(^(b8z~ZtQb~Nw-c$p2@Y*Gy!sD zmi&EjSR*?8&-+;przdY+^ALl?+nsk#{J$me0kC=`#B8#c&8Q%u%Ou!E$Xt8wf|mlP z<Ve1?Z6ANTjF``) z?=Ly;mo*{bHd3yf88_gX*H9n}2Yp*qk0)KrLrzVY+ksc>ME_Yb(#jfqZjk;gl$fUv z?~B$24}WUA)L*}WI5uUlzFoN3bN<4CZYA>Z@$c6M{=j;gI)@==TroQP+8s&Hv_lO5Moc*X12-fsKyBM7RQ%TRjkJ5$_$MT837S|dSl2&VYtV<baoVRwlUKhe+2KSiR!qg9z)F|IwMK1T4@Xz77j4I#9TmYui~R1SfZCnf$(lA zdMKWo&X^@;kuwULL5k6s;p=$MYWc@8eoAFb355M@Og;Z`S@CQ#T+HW3r0P+$QZ*B> z=y&i{ZhCX?Z$1ygIHge1+ii1DNhg$-s{btKEMet?X?ONzC2n%Nr&t$`Cl3@Q^PE&h zmD*LQIn4Yr}<)M>Xb99GBzvWAzrpisI=v6 z^yXCIUQ+NL6{yHlJB&V8X07^7m0l@7c%JssM~NZj3B)Ts-(nk4OFy$cRWVV-taoP= zK-0h0V43@-^~k4TjY=NK)u(P!ItoWmR-VsWAt}sLMg5Js)D)$@{&KAmGjhvwvt@4F zGI8&U*%qo@Km$+vW|5J?TEeMscC#o3d@j$xkj|t9e|_ZCK9PSGUQ7Hh&T41Lg7gMr2Vt3q-;FoD{w>UlwfP8hd6` zz%-L;rJQdwTo3-%m}d|{q>*e)LtJzmOy_}YF1{OQWN?3ov~W40b9&uyKmY*!?AS-E z_rgS{yE&~(!6gnii67(>&(>5`d;Ype=6yD06>Q`YvH#3&Q1L@My=nP z)eHF&zjr%b9~}qxFQk{u3Ljg&8hGw|GO|!$7M~=n&=|ppJeS8nAkL+$gDF6<5`xHS zBM%GV8Az?c1@hW*74T$1quAT_e$^K~Iayog1Jed2-D@f$A+2V(sIXRu>}WQE**}Y? zvTuSLU(NC6k1t^yrxfV=wZW=JbERYx^ZTxXdNh4lW35?bMXD7Mkn&})I7`;XC?6Bn zY@qlGcKb&c=X6fDbBt(%Pvp;lDqU+0F?akup+7Gr?I^BN!2k>*AmYth0<3lQmGNq2zMcTMjOr zNv+ruAyK$DGEkT26~!_Db?S1eArovW-Fj*@5wEeQ>DBgF4x-JlF*%F0h$fqyK%)s$ z6C4n4H}5O8lr&a2d8^50S=UNt*XkzO`zHKBgX+Y@KJmh?*GZ1%>)H$2K~~ix%Sy-g z-a#$;RE_NZq-gn~EvBoZ?3xC3P2%UciF}2?1~v~?{Q@gY26w6PEKzM+t0vucGdlC* ztv1zye7;M2D14MG2yi?*rrHN0mM*}nQ&a&jbZLJ&u$3^gJt)Y@1lF$le24Dmr>~-^h@*+Z`ZX$Rvz@~@ITP>p2V5TK{dG;{*e2Zb?V~E=$H#6Dw zOHO|+2Rk;g{D#Ui6Bk2>Z&KL|61f&Qk8DhkQ#7YYGtlnPspYLBB`PLY+@Z`%f3aw& zCnvc2Q-mEyTCm$DkJ%2tbr_hsX32QkF5>qJm&0OrbXlDqZMQ`krnnhTO;1Ccy^n$V z|1(3naZ*6W);eGI@gqJ7qlA7~SlH2N*sHYBSQ=1zS{6Sq%@1iYymjej-2yy3N1jX; z9D@&d{nx<8Cxs2RLZTNfIEL-r?*9Vn`12kA#$O31hVfIJo}M26m(e}Lh<^_Q>FREj zc4jm+iFuH$d;7IQh=_>(K?&SGBo7uL@MTU%$EC~C2QQ7J{LKplxGjk0<2f|&F+xTk zRRB_HCOF^-6i>bL3$DCjHLfPa@HfZC{46*i2nr4k)>ZPb2b9k)#+ zvQ$~I-G2TiT382t^x%%Dem{T><(n1m(|!2P$&nHFBtx%5Ld%BnMlZ?)rBT$^5^qmv zRdFdVs0~Q@ILVl3SZ_5sYQYXuG5M-T+#D0{U7XMiW6O}`^>FwihyDP1NMB@*lsxU& zq0;XwZ>ftT(Lp#%{9Ntt!XI|e6xh)-sjV(mI#=fV?9TD22Borfub-0N%x7MM9*}t4 z5aXIYp2RWo5*=~$+Y7~W0&fmIklNR5&%Al{7BCy zC_ao3m4(m5#5cZ+H^-jWCOB->>(GjvtU>i8 zE~!FmUqb2~<%p=@gg^(#`wmTabYfj<-c8sNyrtZ<;9iL!0oT0?KF7c?1bR=+d+EFm zA`lB_$Mvf!&e7B2Eb*L`Q9ZtzF7XK*Q?Os%YsER=Jg=^^>Hg*=h`83wypk{K7W>w1 z=GT&CTUwmS1x)X%#Rgf(!#8E~9NF;^AMMceS_#9_@qx3Y+t1V=wJVNu-n(SR1U7fM z5o;#%NP8}Ivq{eLP0zgbn2r4o)QL}66N zESl9!QUMNTJPtmu7ZOU;Ow@A?W~y^iB=a9L1Ob=^e+uj7CEOs`t4m@6c@ppCnLp@S z_n;@I>!(Qgw@KLH%{cT_Y1HG-`#$8`h!2P0q!kUhv6qP#mnVG8SC!>U$_y!G0H`Dm zg13|6r_^Z`{t%QoNeqr3)j>0w;24C<;SZX(&uQJTP0vrXpN}_K4s098-Cvo9^hIf} zsHDMq#qE^KvG$>LZYSabQ>P5Yp5fR(xDWe<=wwy5WUrQ|Ndz=v>_=Av5j}a4bPgMG zoXtiyeKg)Ql!(n>c%@U{#MAw!gl{jWgCjO<`SZlM8bTyrSq8>KPF~{6=e{LaJ(ED~ z|BSr_u(U3NXgK`#L6rZ4J|@KjKkhbYv;?O0r(;llfm`v4b??Nr8^e^Jb~ho0^hwSKCg zW(8yzyrTkI)=G8>=F7rPvN2XlID(0hZ^0ebr~NuSgQUpR3jxcnWVEIZnv$sU2K){O zwFS$eW1m3(a5DNfh3@!{B)1Y|%(_5d=>vJmw*VetZMS`z*)?me34rT^2^ZeJ0Rw2S zd+&QWi3L)5vW(0-xZ`>nXe-__Fc*xVqCQckD%;dx_zRr}%=46cv~_MoXnJ# zYG@wm%m0)~c3adoV&QjmXrMuIXj;8ZN@wrcSP%SWm>JI5V8BoEyRt>^?zA#gW}+`a zryG<%u{{$T$9pBmwg(%&-Y9GoLH>Jr&Bk_pS4=doNF z1qAL%+?&p>CT~6=RFC+@rxHe$*m-y_XKQeLh3Fw{>6z{G)VmcuA|bPoxk3*6H?$(c za%WBe7F7!%<$5#QJ40y)IgMIwvMv)$sD{NZ1|dWaxn4v!i(QfAocq`B+?6f7+KFaG zwT}5wsoN9QTIR33cQ7f>V6~Sp#7-JnP=AbK(Iz5xzHO{2{w;F@%h|DBGQvjwNhSOt&R z2F~5<)#FxQY1Q@nnBXk;h+pi9ZAR+SOkefLb~;Kmfnz=wc`$H9nd;4VHIxy@1rWX6 zCx}b36i+;9T}^%lV4In((Fw}xZYTH7?%iNjJ{^}qv~GYoblr2q_(aS*Yq|$T5ea^u zqK-5+pyGB zBS`aRvf|T3I(K~uNXTs)k?F8Js_{vxFP96up;1E?V65GA4wR`Cpk{XSw#-#jTrtch zIGcN3M)A&KDySFRG^LX&WtXiw-|$j*?TfsUhUbjJ70N{6ug55-NM4q#wVWvXPk#RF zeyq&4GOWz@Q@ zwx2&McsiTM$C*KWZAA|Q5l()v?Ss-R5KOpP>&WM?|4m}Gh`gS zwpQxVhnbtn4G)J^K<=`v6fVPg(BIJG z>!-FptYJl5Tsduq$6*ZM^zt_lrv;B7CH9Ti?hbtXf-o~PEml=9Rp?kyZ*>k-M9xFS z?WSvHKl)*AL}|&Un=4w5o`xs3Uq+=(Ial#>IK*9C;wmT~^ADl#g-hc0Pq(H5!VZU# zB_c*`Y!pSBb(G>+-)LeOq!lFJYbVZ|(3W5;wygf1%aGmI5zRZCs^+pYHXxmpJWm(E zJ}Z48+v-(Z#czE8aQ-@x8&0BUMzhVl(m&Ev0;Vw3o0VXP5fS%U$PT*N7~l=UhtlPD zr-uU6d=*JhK+<>domzw|>9Aoa|UbVV5vh88Ww8O8Jg`+_0ewE7dK$=8a> z#gyojM>ock5P!x0C{ld@ zWP?;O;AShvEF2cuCJtUg|r;$iSB0SgFZc~qhazg9uie`QXt`sm`EjGOQJhikBRuGz z#wH#WHNEV%=dGq3Lf+u+lBNO4+rpF?JPDsQKn7vW1D3k+RHL0d(h6OmB2L$Q!;W{+ z41F69(2gB;L|)mRi3uvJNCoY8$fu4J&h zBTibZ*uyz7e;ngHeZ?aC6uUy`<IIojT!0sPuE)crDss3M^{QhUz z>QAcjdUQ7+IsaFbiI`t=H&S)tYZCh3%bX1-erw9xlRW?T9!()S|3lg_XLPAy8}K7nSiymH?fe& z|7TLuN6LIS%@mH2P^#u>^1ZoC+6DAgeWp*Rk3ZTv)Eg4|)Az)6ASX>B*s4^0WWuGo zqO+Lr2TkuA5m~W^`wc6}am#bcgA;+Es`yGP7@LQy zekDoTxyuAcMsAcbakaI3IKYX!k{hx?`VIFuAn)zpAB zrhdgH-pmJOfUZkP#yXFsHOS{R*f~{GdT{^E zS$hjJ$Qgz{_4RAEzRj~tJjba6t1MvwY1)b(t-WeBzH;Qt)E_EM9ljLC363u0uNY0Z ztV;IwHCEjL<@6B%ji}z)jRv$Zv!Vv> z)Vy;e?jWjyDYMc1xx6C8(w0#EURPw7BsYcsHXaz)3Z_!MxIqqYP;Y^fSvU^acG{n42ANa}Y-Zh}PamfB)nV zH-HPBE3zYSEi^k@{+WsF6zZ`aG$KABwYb5Pgno&UKd#4PEm)0E(0}(s67*+TRo^!F zxE!&4yATf5DJqhIR0ZjeEM*^@Z9V)*9xm&4?gC-6=L>X|8ui z*i%SKKw@JW!w>sSX^_?kjIp>xtI4c5o?%RBAgeZ8ajhzEwApt=m-EV60-M>KzMGyw z{UK0Y6a&Ba)c-qPmu)%5O&#pv{<|`@l@mCd(zCJ6>n=&-g>J+p5yh1^CnoC*HV6Rc z<|px-pVqA>as^Az6DaS_cGj5!WXQp^MS;oi{RDhpkHdkthtJ+Bh>;`mreh61Kfj7h zP}$6`F?0cF8gfq^I^V=!g>cpd6zCpyY*s#>pd9>c#FGym=vB0IxQELJNb!H5)0COe z?C-UtllJxn)@Ao|$mY+0+qu356c^XH2F5<&9~<{3W-%{8$MrQ9s{JfW#*?R?53KW* zex(j~sNBm@th{Ht5h`TyqnV|SpgSNWoRKE6P^UYeTw|;e2oj3D z6%~Y;yuG(rBY|N)3Rc?yN0$$_d>P`Sa-XpFyCnU(an0#R8cHj#&RXrWNioYx+&bJI zdTCXyRapIHUILQ+p0+(ih{Z#!!yJWKg(=Z`mi3+6H19m`rVH5UiyDZNv zKBU?@e1#r2&_-t#C-_CKkn=N@y`~aVXFPg*zlmMAPE)BZVg8WT0p*or*LsKj&Kyy&N<2O%R_9Ha|iLsh`(5KRfBvW(Qt15LLL$2Ay{0ntGgz zS(wj+9S?2$_2-7Xg-wa69S<>&-}t2w<4jqi{`IY!%?No#&Gl%+XjvY(FA-t=Z2(18DeAZ3pv#wT8X49;QALQFL9x{1^ z%9owZ|HztL;{u;rrF68byp#$wDE^UP)34)Y{|NXqDm$(s!G-~qWzRBAut3n3i3z3} zU$z&C$xVePCjw+y0<@`hMgmNWK6?r*G;ylz6b_65PpWKRtK5QniGJJqY3yxYk?V<{ znH$ch>Y`ql7<~fDC8jixWfr|?6%D7)CLCEA;i*E8%h`Js>u?YZ2YH2;WZwH?6s=J$mk;HYEyduQ>jqGB~t<^JYJOCD4Vi^+}!$OJXS3;v%JQT$31<0F35nK|0)=g zOAGvuApPPS2A`dmCq5F#l#W0{2cXEH97gYUJBkozc_R++HSvZ4>>iNg{V@7nS%v>lVF!qrx#M4)kzx()&8(VL(D1S8zTZB`r`Ftf;)QA} zQxeR-M>X{)N(v!_?f|l_5*&ze)dQ+7KyXqFbjR2rfD+-~cT5bav^`Oe(43g9faO0# zanP}Xq5KxhZ#bWN>qzS+`1}pB58}cGkrwd4(fkAhuGZ+>HK0~=Sce$Y?=a(>_`PYq zhILTE(bnabn0_>`LX9K)ymiTRw7uQor|}}T7il4(03WjP71A!v!r;Eh%BD7h)=QB^ zhGEfUO|O|>JN`>jpBu^m-z2<%mNj^3{RRR5?JYJn<(S56<@kDoW`mojd&U34Y3w=K zm;WbGc6P?Lquv2uvGvqn+nj#-IKrc84;)->U3;CG*o?x3-xBqMf=2f;7Xt{ddvPiQ z^6HJ5J`wOWfs(Nw6jp5BzewHg>%rp51%Q8N*ImaSc2T!)&=3TYR*urud0Jyi1%Rgv zY>b4TD?;nb%UYB#!&cmj>rdm!XJJ{%H9%pa<=IKYbH4k^f7pf-VxS^=mMNP#=-=$b z)e!%vWkA@hGL>5sZ;v;LX*n&7%k-ruly(_Z=@+J$^&;=wK-jf zUG!5IeO%U$-cChkt=Umtun%H=27uC^2t2?(tcjlSx|_%wf@`K+VNH!l%?v*^uSxVm~>i1 zq{dqSF6zWfRs9!m_?IZ{`j2}!J1xA-j8CzY-UtG{)qzoKi#xny!LoUEn~*Z)v6>l5 z_)<|)#h^QSP~K&$;tZ%70nt#!>!tpMO?UXs_##y*<>%;I$6N0>b>VLNC3b@@_fd^tB8`9QZ*u#(8zN;JJUWfUTVarofH(ZC*AAJS<_E;dZUQK~Xm)(Hfp4);2x* zM_<`HuB!14MQa*gTnL!H^xU=SHq+{5Iy6&L9A~qKrQ4&m^wnedUNT-E zwEl)dfBx<96Cp% }FHxLyL!cLPD={>qa972?!$1EWpwd$1Knk6z8z&CO$7K^hP| zUrU#F@6{`D?HK9|4p0hG3;NY`XePTBAYmQu^(&*Sb2esI1e2c{_+3kVv7td#^t1*L zIdUK1GMa$jj_NAuBb6p8=TMN5?9X~n^NQ|Pm)M2``sq~Cc@yVPUsDYhb(lD zKGF=1?7p}?Tv_u5CZ_-vm`U)WZ(lTp2_uMjFDHyl3TOln7DE>PeP`fnCkFfhE zBM0d0y=l|3m+>|NICk}xF`kziE_|u%mTRtACjt-RCfH7OEC7Gv)L7;(4sAem2##X4 zm8w3J)BbFP6pj}Hvpc#70kKFT(>0fR0`G`!5kJRfZdmK8;kiQkUt} z>hjuTrq-aca?gBS_k3=>Weq4Hx)uXbE0WwJS2QDwhtF*UsQ=lI{EEb|j_I5EhOqNh zp39@Sd#7@j^#|Y%fdUk>C2~PihSEvqgVVUWpG^$yB=g$fh%dP{AG$9Znlq{R4+cxP z5uF5{IOinuaWIvLzu=#+D>QYsEuFbJQ+5D!0{y8(N^OA!+od?ijs^CWb6!_)=Py(Y z?zQBK{YO;(&d#MT>2CS5Fi>IsJR?~8>I4L0+Z>k>G|-?*zI+GRwf5#w@P0cZN=z*t zZFsA6DHC;(e&+Ky?s)Hpwa;bL7s|wZoxeFQ!kGDvPh!pIQaR}kDu;B`!TeB&rw#!k zXxlkSfxo3exi6?FokKd9f9CMb%yYDGD)8^_;s$$9@85)($HG+wjeks{zUTN{7*j0}};0wnYjz&00Y z(Ee5I_d?L#i4TTjVg2sbqN!BcU!t4$>Hf69@}dMHs7yToPYOtXg)`Y4%Kq=^8^B!t z-w6o+o32^^5;@}D*a4S~S5XAKB8efDeK2q3n;cM167aQH zZvkAmfxtoz81yGSAUOe$wJiRzTK2oQT%Qks*hG*V%W60(gaW%3$YtxA{`Tk!6qE0x zaLB_^=|?Y zjX#j)@cf?-Dfc06g9_ge7v!_A>HyIqIr*#ZUkVydZV}!Ek0&o`8ak=#xE}Ss_jRX+ z)b@&!EUbyK!0N%<-gY=cpq-Nv=1Lowo8r__OQ6a8NnG>qduQA|@H}h4jAZVXOFyDQ zi@%XP%2*eWU|AdeS(z^AgaTK>y|=V_a@bK_CSRPk1WocU zcPKy9M29?y`lS~0Jl#tP@c!m8(nFp0yVVO+u{=B zwwOR>Nag+b)zxCLCotX&4QKnbRo$6X=K*k@_W?Ff$v*7iz7GJ=rxe`u@E=?g2Bb*9 z&2hpJgdCl1iV&5|eiWbyD^Gi8Z{pV6)W5{F6Y{2+`|hU`Q&cC9Y5q2cKJo#;rok1B z4Qi-FIX99U%HOn55Sxk1G~&1xP{2#6=5hBezw<@=-P4Tyvp`1{>X#tFiU?mttmHV>-lD8-%Tcpywk%?(z*%5 zvo+J^<85s4VS2n6E867tn0m9mf_0TU}6`a-gyE~@j9b2i*thY zy=BdwM2@cC@44C}tpPd@6wxFKj~ht($(yjUOS-wdiFk#cL;z$8z#-rr%)lfMF>Y=( zH=7!zI`|;D$f-yPS_N^9k<}%ft7cNs=oM{1)>auJzs0c>5EyzCfh|4efsj~$;MifV zk_2k`cI2DdS3+TcDDkS`%yI-la+FeBwCGSO8_Df}5!lWg!LieR;RE~Q!@-X?g|ZC5 zIRM4H;Ad27H;1?iZ)LKkTEzrr&l>!N1D2M#0kaT2v;Z49`x4GGq=>JR3{7&lf@>#b&03* zYC^=Q>7WyEo71lwxKU&9^``A6r#<(A-?-ZV3hlLApng>DUCO(fVa_!^?pl|Yftnt0 z-5`n5rE1w?IDUk+tfo` zu2U3qD}Xxy-VP6L7de;DfXc{>hR;wIi`X)S55~wws)f&>1S(BUR%j*~3>=~p#AQ=U zF0{0Zjf40+_jGE=B-h-PNNU&7ZkRKTU8%3)lm-R%wOLztd3sGBqU3wkdR)wUt+DBJ zgZKfo+U9)_Wad+V(at%V#c_S6{pTl-ehh+cdUbT0l8$a4Fm=NF1W2_28|Gz2XgQBt za49YKh`k+U*XI?=Ew*IC%!#8rB};tW)tObq-{!J98)}EkvO&aAu;4`Tun^5t>{aO~ zaZ9PNFg>}8jtaDhMVEa5JU@+?eLK9wLS9 zMc8wYV41cKi75%S(6WA)$$FAP~<6pBpJ#e>VWVr%!_pAf2yvhFlwtb84 z7;G(k9c*KcLQSZ$P?&$D)2pOR6<3Ni_UwIE+#%-DZ^c$>?T-EQRh;yl^%{{__N^94 z3L}&2hQ)RnWS+KtY%9!!*!^cFJwl)fH&<`FOSScH9@Jpxld99DJ$g9P)|8Q{yuo|nc_Ba{pgY4PqLD%w)JUV5|H`advfwa@Q%G)XBa|38=!Jd}f4gS! z@9-_=&SpZqyJY`KxE2K*coE$jTCh>Z#I@An3ZiRtt^YcH!#a0QDp2!6P3}kocWvRx zOJLu^6U$Uv(U7*7;xDl~fggQtD3&%~!`)P6N?g6|`;8E`eZWg8V!H63 z6%N_h*-`v-@`i@#jW_9<|8a3RZ*M@O92(p9hur$_a5Et0(Z$Vpdt4aeb^CAd?0=xt z#*P19v3WBYNRImP8@q*jIPvfV05lPJts4T)*%BElK($r`XjR)tfVbebDtZApPGVql z(g4=7TTq63=P%u8eDBrk&w=nYl$3t-^5P5y1N5^tc6K#fKl*Vxc`OOeoHFASu<^uu zI7jbMPSu3R8)0RzdwGVPp)$e4bKsp{SrtX;eomX40bAT_wqPcJo&~B+*pm_V|L?eKBN@bj%)U2x*>-|_LN|sEV0xvU^pfzV8 z_?yuWUYBd;31cdf1^^qodAb2-LEco{inAc^sA3>K>bLI?{$^#iJLG?;~FY8bp-9zbFYAVGB?in#}8c> zc&Z^&@h4`S@43yvdfz(x1I=m)Gs20v@zxmwskByG^AA5#56|kmCUv^T@=!s1C!l}E zk|&A8jinfvDuIDiCRqxOfCaMuZNpClR4$_R2h6}+*h#+x1K8zV2jw^ARQG53sUSeN zsf)uOI6wEM&=&yNnj8&S=i_D<@KV0B`VAL?0}6Uwc`L-#v+aj0l=!p`>yA;pUd|i1NfsZxaEJPS~Q&B zsCYNz^X1PLSgbgV(1Wc9t|De?m*uO#>@#lBS{x^It7k^ronR^`EsNO z&R}0RkhLB61LJxIPSQibEx~Il1*DiSEyM-70B!(oDg1y_50$k(? z@}7xc?;qEq7dTs6uJY`rH|9b*@x9sAUAx%*N3|p79R;uBEpW_3AC&P9iD>{mWnuuA zi@KwxVV44j%d?EUB@uFk5p92QS*j2-nb5YxuQk^M0g1o5 z5u!{wVcu$t(`r3W8WmFkn6XO^YHUPzTbe4att+2Yb`K_Ek*&m%A)Opv^Blkg8!k{R z)Do3lYpG@4@>wZ@5u&ckJ(hu7OcWdrlMSiaCgp3iY}pjptTlacVYWG$8)MwmiNZY% zxiScW_hW2Q;l@%PlIlw2ZC{zM*QUY*`1i2H@llu)sOPCt%%m9wkSMD-_bLSHo2bwAePk~h{^hg=`sp>D+g*3A9E&C0Qq+^3@b`7$P32bvN zta~C7*C499c>Z&R1sLsn$U90blM=0peO z8dO70Ao(c!9-q34-HP>dy0q?Vw)0r$jrkH2dSeIie{=?*$u2ve&ue%(*)FvF+wKVP zPu1J8nf5#BO#UYDeF~FsCO5fHcuYM#x^upBLAzQZs57+ax3`VGz%>(SwvXyGZ(#Fp zS`zAaxkNPN{_YU|TtSGp!&e6M6WCp(Q=+9EF5VZZOOA*W#?lPH7psr<<8O$%Z#0fU z#_VlSQ!0~FF$eBdy_bi~c5V*tFJOnI0Bmn+m`mD zTq-hiJu?6d!NF6B0|PdvfzRXTJ6q+v_R zk1xhKE$GLTH)e-EBLRlj$ne_iQY+AjLPdVmm6sv&>_sPknFSxXho5$0ZmFZ(8`g!)!@1z+p@)#QJ2&acXaCzbMiABP_qFO9lf3o76 zywabh2qR0|XWs3khl5J45y0+eSg}#sYJKJ%#P8Kp0IEDPHdwHaHhopo=>T)(qQLjBIbQ?0f7(k7S1J`LqRksP} zY8=Wq^tPLGNiOwujtQ6CpmZT&h|lNxJePz0X7Zxj)NuZs&e#9s7C)CO;}xn|#56u- zKj`N!-hj7L7AdD&Z&JmjPY&m>wx3(t<-D%Ly55llY|Wm=a+_E0Dt!aE(u#-jp#tL~ zXC4_#nP+rHA)K(PH1^{;3*GBEH-Fj<`nfpnZkqKtv%U><+?f`jBy=zPeT!w(kcyj}hJp z(<3r@^SX|F!9xa@`IjyJUpVU@{bmqeT=mTYj=v!%gw<_H5I^j~aPvKfS`;w!4P5U6 zkI?F0RlOYNQHSY`g4gh*9Cp!X8SX57FFs7(KzOPb1Yk!M;zYf^%$>E@Mp0V(pH^vU zCl8~=d?lE4&{j#uk)uD`fCck|=Hl4hBWDh=$<<^Y>Yh|5M~A&U1~opNJRK+tUy~ef z)3{k=XY+Gc+ZL(ipE6kgLM9QO68H*YaS=m5eKLnfLVa%Z6S(!4J));OaT;zTYa;o7 zVfZ++4(YfAYo0lE?0ouu5MXFPH#$1ZLFM(FoOlp1#mHw9Kf^StwM!`eBbNy{{_)q> z+R~F=lnF$lEMx0}+1PE?wCyn*{d9qePlWa}KQjYWEk z*ETq`@5Cqz%Oqtj8lnB{{6!8(5-$I_)dieiQ`bc0>)dSd^iQq$BX10#pARrxsjep` z`hDrq)YWioHuplY{RS4D7utUIc-*0C5X2{C5sAK4=Qa02ss7+T!R1``^bu#>OTUY( zHj%mgm^g}2XN=Tq-8CUHbaOr#iUTG5@al9JdD3#!WRk{p;nHe|JvblvhN)^}j4d1e zIF3&uVe=^lDsG{DdJ) zWt~KP-JQ_$Ji2?&d-radua=`ekYNtbPhOk%INoeG>PbG5F0fhmWTei0S&&+4lkr&y zayrfJPJA&Y>Qx7FSE!8!RD`RFJ0n*~yBDQZbBWv{$NY8dl_)c$h@dz)F+DHqjtWq) z@=|LRo;kf3!)^w3Xt*v~n4n)Z?yIb7tMIA?i@M8qI3L6cxsHr-vI&0L!Uk5ImtLiX zw^Vb4Bz!eIv3d&c_e@;xjg$6r zn=5l0(!R`EO4h=tU@aM&fn!mMYg1A(XL_kCiHMnVqM931iMM@RD0-%v{XT#wJCDOuRZO_^1855K9N=sDl3S^ z&?7{7O9~KqEtrl+pUQpPJ*eF{^d}wZkaPKA?p_ngke^jhj}8%qw|`;pvTQ?T!Onqx zN0)s`6vz>`hZ9q@r;DgT+wwY1m96_Pl6Bv=Vh8_f+|QES2sR*Uu=M*~VF=51%@ms;4w5@a=qA`uHiVO_{H+cw#ft9TS*;1%CP=j zY{v+zhNG}|NyU7N2hD7KL`ep5N5DV&#L z=B%k%sTlB?x4#D*%;~@WLyhn1h^iKT48(%(yX)Ax&_MgU@ywS&%jhB}iR@eA9;d6V zSGpplyukbmXgU1u56RBW#ZkF5U%isFk#zrSf&TxJymO zC%qg0|MNz}rs5_AiTMdH(?;(z(-GDDt&jKy8gqpKjnC9^JbYiP{<5fNhcy|{w{Xkzb+mI6Zr?ID^dmI;=QTs5LH;~DgMrcp7q~<}T z1f-PVxKZYAtes@NA`xR+L9(yr@Z52Di+>LZ_{`&&1us=pdQjfa_1jwjt$&z5K(uk_W+4Ye*M zki=KLZJZYAy~;DquvZ!w7FQ!ahRpam7F}SMa`vqcOB*?61uhmU@zIyboS1HTY&;hI z*F1B>83oWbF7+LNma(}d3g2s1_7XUF-44Dy-I=hb{{B-nJ$9>z2V9A40#Q)-0Wwjf znLI{-?8J9u!0R{H6JDX)hwSn3?|l7NVe3ryZ{Ce2y@W~;5e2!8Z43pc2@;StL(R17 zg99?_{PILgIS?}*S6U9*sOn_#x{qU0F=q$pNoF%&uqfWow6#=S?Mip@6$iMXJ@ z`^X|}$+%}upoX{lM|t!4WmasvjPR7NheGs9w`dX8_HHQ>=WPYEu+nQ(HiP+$PmS4? zoy)F{1rH{RJkYymWh1(nT1Tp)^`gHF)Gj#U=_;7#WEwE5?Bn%$FR^gFD4C2@8-w36 zsFSj@>VpJAncC2A{8u3V*?nr*rC!Q)|I2iVRr{L(umwRrAtWvpD+sL>|<%~?<6y|JD7Cbgq zXlfBg(iCwGG-@Z>LZA-XO^fz7q83ab6B*O#h|l{cg9O8kVt;MfX|E(x9fXChxmy<@ z(|Q|Ub$#XTn;=7%89n=CMX)|L5p9b+k}D;B=ADR|Ku#9|CKTH6RysA zeu7mmc!USLfS~+Zt6odUt!&{l&mNXszh@>&9|2RZl8$=3>5{G)!|(3gq7GOwVOZL? zLqwgt(q-W(QQcpag}jemkHu?bLnuhpPb|#QN$m!5-iKyWGz%$t5DzwTK-uNexa80c z2D%>3aHbew8XI(id@_c^Kj{i6o_xq>FKqPhx`rP>zP1C&n24_PQSZZ^#~r4fT~&E7 z?x@}Or~RJc`tZKA8va+jEV&K(TI>I5=U%&r}Q!A$rRw6||{XkQ~fVV9AKBfYNv z(=m@%m&HnY(}m<45EdGc|i z8o3I=ZJRjhYy7M^m^X&Sn@@fA7o~MB52}7o%h+PKhAtd4R0vu7bk2T_b^o~QFKMe} zGd;d&Q-7N_AC76(P#vhdZaDAS$-k}ex`Q{sX4VJ5iXH|CUgB)?7ZLAz6N!C<=v;lRw=FH!T_ zVC)!+&x*A$$E_(!e?`dv%|2(T6an6e>mCK!6QWrzMM~c+K5cCbIHqK(pi6F{H%5CM z%@t%dtc2Z!LkN7rkEFHpsRM{@CJ0GBKH~%9$O$yMRI;LKMSmZGTm+IihnAOxQ8J8s(;fbmlM} zgoF4^iE}1ISZk!c?>JqsmShnZ>)B~>1w+s&pA^amn>G0ILN~4nYx42`;p{Ji;(VgM zVK527-3c}U5}e>}!5u3E2IAxZNYVDgz3z(hamKEo;cLiZG4NO7u$$m2EKO(y{y7RVc z*);U7#@{=+6E(YeAi+zR!+>>w;Ul;}RU3CIIrDr3pp>JP65!$?iSgk0YO;6UMR)W- zGHM^r=a2*!CN3VQvoma;fH6uMlzd~czU~lUgbtrDu+GH5I&VSHzclBD3kGt|x0>37 zrzr!3s&tf{cW5k6a)7(`f;h%p=3m@O;kf53b)j9jtVB9}pnliTvkV@h`3FvQlJ@2s z8XZF|@$YLFdlZk09syNOVMYdNw&264Aj6|9{CPG_%xO#QFq4mjt*Q8Bk&5YZMq2{T z&brR*%R+naVe@ugLWNfcVW8)ik=Us75`lNAX5;n`@7pBPe+#FKKA}MZ z59APPJ>LT6Wcp|IBC19v6Aj)hww|*d_JTq)XM1k7V(;LOoPhDH9^KB;tIcFxH9`Y0 zis={*VBKgkwGGum1ZyDHN?kWw7)7Xso)JN@4?mrCVlRdM-egcWS*h9mJmb`FC!_s4 zO7gS|wPdcVI!UwqxzzW*usmumJOM<*JKd|Z1ju9JygCyLqEf!!8+`Qm#E|VZd;+mi z>nn5+>Jx@FMN>ys$CG!lY4v}|ynmRc@RkL|e;#E9`HCsi&Yoi92HWcM9p z`}jBWCNMX~$8s9W&CTW)GB3JXS|(mfAVyG>suy>2;ee7qYyD9L?CGggl-Z<=gb25) zH7f<$B>rCJWfPt(So{uk3ZuM_X5hpMx)%e0n&^gPzdZ|I1J@VA&|p42s2NQGTq4sJ3SwV_Q}bfp(|%7c=VeCw zK%29w0rDxfWT)7Q8a=R4((EAS#Fj;O`A!K=;2^Tt`s+bz610KWzn(yNOjgoV+@^)3 z(@32Awgwh<&&h;5Pcf-UedQlCH`3$anr~uCVvxH1fqF8Z*=_xsdB@M-U^WSd`X!{c z)OhE?yZ5zTq>#@Jq9c4_+am^yOUsp|21N9#gf&NMRb&#J=$=&k3uucQB-;3{SU-u4 zPSuz>xH4}l*l?C&jjJH$!LzNw$EN&@!3LV}s!}*^q_cNaR->5rj1HfU32KhPdIzi3 z9)<6J*sfK%JdB0)YzRYmxEAbq5oxyHDC`nj**vtwlMA>m!7j4O>|KH^hwUh58rDn| zJM>Ll3dg2LHh1XUQGIY#GxC!cX*SFNw+&8WHCR~%eY}&^tFGiUpmsY#GJ-TbE z?{l_JEMW2Ag(i9;-Gw}@yuE-QvBSpR(T53s1_N?0QgAzUD*Hf{dx=+a4q5j|U^O6_ ztCQZDTAFJ?&B0rgG*Ng)&MB9BV5N|AU^LRa@z#|3s@{}?(Yv5vZ>df_B|TUxxfUjL=Ks5DB+(`UjN5UUpG6OojNuXr3LVO?sA;DBLR zQZ(c8sl+Ten3e%bAum}F>-M#;N>^5}ov}z;V5%{8 zC69suST5546HnZC`LyYi!*nD~Ee>bV%q^wOSt>-*RQ{mioY7}FCG~S;T(FTE%$@ewjh3L>F zN^)vuN!`f_OjX#I`G+S<>zK`X%IfEE(h;C0IwRJk@`B-8Z3jGtPxxzWc75MwNRxttt0VQN?Ac!$PNkdQ^0)P; z@t5J9e&ii?Sc{pz>gG$bSF9?!*yF{&|AdI|ExysD1ISv_>Bv{MIdhOd6C`zHj_BEP z|5EP$sFhN8JJ6C^QJ5^LHgTIA^uu!E`*FJ$!BU4#plC&#-`MVCKnK>+-8GhJDSj1knu)p& zN1Eq&$_G8c_wLZFMgoZvcS#E<_%Z-{U$-n+h+P9&Y@3jMeE+U&{?L{sv{HS4#gIR+ zfh2qsqJua(9#`(~)n1j*1dYbHXQW~nQJ}}@ahu|0WOzg%=ioYOb)ZFgIm3~+c`%b(^W-&fbn$s~7I5Yy z(1Da_NiKdQ);J%-^*xs;t0Gz~%({`9ro{htq;I35XLS~*AFX%Xl$&zjKIOnxx^kz` z^@sV{EEP2Q@D^`vrIDtcD{|fO)*?K;^~2a95e~NU>4u=6V9^a)86PxUcxnC?K#|YI zjzG~pnOnzcKDfj39-k4c+8IsE5M3=XrV_RyQzqQCmdVjM!nJ$iO?*!u;Cn2yIiFij z>OXIU&lCW-XN>%5HDg%UsaI~vApbh>ek!EMGKOT!>$~PBYP1Ut&^)SG$tt?|;?J$D z51Y=Z>gYXy9(t|GvFzK1N-s?>-{ZR8+UJ^ak4GfcTNNw&i5zK7cC>mO?7%?t@cwxT5`8C`xdRs(=?c;?;s%arP;6K}-SloIa>Pn6@Io`E8a z?-oI!xov>;-AK9KQg_73!) zp__rq4oDQ$d^V*_5Tem9$vf4*3*B;F98XhGlsX4aVcoRHXuBy03nVRJ>Rv>8T*L=W zN(1_oA44!UE#I7Y*Zmr0A=q?w20^hrSFOTD>7UzmZGV&a9>XjaHDRmgN392lcN0;< z^9==g{X+2OKF?j6=30kGbFQ|c;vGaBT0oo~tsQEgb52;bREy_(ssX~qHlqSuWQ|Qj zVvCB3q@|@hcfg5tb9u5W=^Y!`*w``d&0aV3o12?hq@>~g@Tim@zhcnF`C_B&rU%1x zPXmwVL+RdO3tk58dY&|t!^xWEf0qNzl3SLB{?Ke39ffuOMx~;q zmG)L>(1^r1{=lu!UjLdpNb&*TvpaYDii16I(gS+~GwuW%+6F_dz+=`*_r0C@&J53* z?GC55OM@*_VANo8oy}aa2Cp1AfvFBLV@X}!DiCNjaOutRLE&ICGeg*c`f(;vG z(_V56?%7^{H7c01NluZ;*_6f^+NbHpir_Tq1!Sv;_x`Vk!OjdQ1r3eeb3^Qp+g{fv z=Y9HeJw;Jt(Q573!KRy|xe{1+HRhwWAUL>ZEFYyeDD{d~9mST+8r?rFJJW1ZZdW(>Q1DOjd-%1V2JIy0 zH{4nosaAr*$#cVPMDs0IPP&GW`*S%N8Ih+^ank!Oocc0>Fw}z0n6&87?OfG5ju`jL zt2;kX7ISFAU|0%M*k9|mY@{#Ih(I7Pp;O*I_Q&`0A@4o?_5n!%z5YSq%wlpxxH;_*QS&39L6L!wgrn3F18nSq67fr z`0pRydiwif$3ZY}`0&JPXvnASe_i@n0*NmDq{ZW&iRP)YOZ%PBcib4k(I4Qv-Sr~{ zHg^#Xjg2W^TCk#W@A2;MFE*r_SP6KW*=kK9)yU{y~3Rr%m# zYN)h|Hqv1~lo|jH6p33(nyQ!I+Z_^!vdVxl$)NX8D=C;WE;V_I9n2=~t{#bUoXiY_ zRzN9eX|k6U^F7V~V<#uX1e<;P?rOA&^mrRd&%_Sogp@IZhr^5%al|EU_KECh9pK5xnGtzT+JoMWg zkmhrbGef=F+XH__3c+){l1fdpHUIM#VYau|gLw@SS|iX7;U!4B_N1<{zx=st3p#>m zh{(mL2h;8uYX$C~!h}mqbjlfNtlU$+;CmHO3~NjYl}>cuVcei;QK^{gP6WFTO^pBM zOS=D|3({5NA+O(Bsff96sd6dg^J9zm*AB_=8*AjSR%XL=PhQT?W!?lk(@WdGzu%hd z-ZM}5%ZqEk(pC_PU8eX+YNjzVmA5!AB8)~p!RFPyF3vmhW8S<03%ss|^CV4Td}d7MXV`>J zJe8Pi|JsXg1@f5ls5Urf{@Y(^z%Evn>*|VUohSbWXVl-Av96(*@Av7L$47OPBAY+L z>;q*i(Y!NtBguJG0`7cf| z&Qw0_>dX+?KbQ1ymRA0?jg8qcji)QT3x zfGET4V0bDIBbypeinYm(Wn*^;9Q^#m46YxAK5<}V$cs8vw+l2S5PQs&0cj_5Zd9;+ zB%fi5Hckw_b|BmgvN0<~77esLBM`E-CpxGfw-&I%@r_Ay$Zg9L&tBhp5$U9H)r0N5<7&>+DJ+82f%uo zE;#%5)B2u>Oto}ov&T-~<2S|%T5!^LN3l3F;A4kgLiGq?4P3iRaVD^QIBof)jPL8{-**|b zw>|)Xr1vyHZ4kbOSzhT8_YX^`h|lFVwYWn9>N2&2=tPAE63UQz{ZI&xz$14!fmt$h zhkywk*fzZe^~~KMYG|tBAd?~yrZgz205Qnm>2>q}+f*}q(hz_`QB!a3j;1y` z?V!v8ol!szZFy~kAkN3l=rUou-!$DjR4g9`gz+)sD+Ed(2y{sy@)hAh;P;dUS)~_= zp*o2bChpgOq#6Mcom>d_$@smGkqupgUA+_#{8G}B+TcYhx zyXXm^e|*rGmK-Nb!<}#`-s3ZQ5NI{vHLN|{!%8A&)Ya%do^f zpmqS@`6x#NY>0<7An^rcKC0i!eZaWM5M*@UI9Yi9_05y7#Ky)j(=n8uU}EiXK#uU& zLxrkXswDikkxI=%X##)J=pi(Bs`%1w=YPNtEI}sYA)jrF@2e(fQ4dMBjtwM74$t9=$3O^m0ec z(D38a(^KsoOn!UowRzz?Iyxd@U`TfP!((G%Wz7hIzi1`9%j)1HV4{ic1!NkpF+(Wi zPZWn=ieR}DKEDUKy*YXy@4fO%{~_J_va{f%z2=MekTukNbYEGN zB4gF;ypw`;oo;}LPL6fd;fW7^bm)pYRXuKgeS7WAARlMuA1$@L;M>c!DgeUg-+TJ~ z%G5?DD;;>V7}gTJKTvOCL7X>yUYH+j8$M3WZ0c6XY6}=E)haQ-p%eCy759; zd{8dnmOb)g`*G#IgZH&d+nV-wqPnVt=G%`O^T0M>#mqdK0B5`d7amwOa)Ca@p$IxS?krxqi=FcE(7h)A`R{%!8 zApDbfG9pWei{taOSt(fq90NvPF+BQ!1}Ov*m?<^N-E;oU^5eU@>JcW=v<5i#j`sYr zrLyXg;{~K!8GN(ky=l@t&4j-re4dxNZsn+iU&6DpK4#qU|CG|bdPDB@?NJZ4@d=RN zNjzPmi|pW|fquh)K#|#aLA{KFd4UJmX41xTl?ZfKCG=ehxuDx@Q@xO$%A+3c==-!= z@Eq}Csm2-w%#O7;958hc@OrW2tAk(tpzs2!qv_H^Z>fWdKf7S!??MmV3yw$UQm*HbLyK*sSi{Mydd2v znjt!dV$7nbw|^Ig;vXDo+E1 zWDf5`PGSb?UwS1y%B!`<2Dvd8fn<@*W)fYDYGwQ&ebs#(TruLKu+B9i0hce*Oy zXaDI4+8yT(6Hc!|Cs2fJ+yF0L zUD6kxq^v}yOMLN?BG+-&Wmm+nFhjujc)7TcW|-9T>3dA!FdH;< z`Dk+#Q%+=7rgG02;=6yh`JBzT1y_a=Rsld!rwtKODfzo*Q8!TzQ?0>l(dx2DDB>ac z@hsPQ-nEcLhVf&gYg^?vU58i?@8SQd2K@;4xiSjR_)dT?7t9t)@9-XPIEuK(=C6jD zuNIxHxLU3KcPt6ihwe{c;O2c71QVW|F>q{ixt6h*fCFVPNO6iGCxI4xZ_WP^%$EIh zYs-XYSr~d|A1AzgS{4n{Y83;W8F-}rSU0MTo|ghIlLpOn!VlrTSa~S-9}hBBk|u%p zlC|0q8>98cQ^ItcNQl{@9fuy8j7?c<))%W*X&RV4s0=%6#$HdDwo?|o%J2G6OZJzV z814@OU)TgaGs*)7Y!I#Mp6tnlLO!Ic8(Y@I2Ormx@Iwa27<|5Exp|^_sT!d9sW2AmMBb`2%HmD~co<}{&H zL4^u9Q@!ICbhG^ybKUP(iRMGva(P`+^)bSA!)11NH05P{Y$(Zq;udPtGtNOlE(QFu5EjnH52PbRwGC4SsP#09K#c1{Px6j4BinOsH-2Xd zzuEHQUCStJn+LK=mbZ$%Dj0;K1F_JbAzD#`S&&rDMp{xx#-hi1v;{FO9iBw~gX%idA?+wuah0Jo=- zHhGO03!5yxh_CmLNk5*?{v<6}aRvtaJf9cbZZIn+utM)Ca}|j)4)%FM?G2@|V%<*% z8WT!ba-T75h07An{D+sLy#5yPTtdy2)pbIYE7H5*+oFFOyMjBb+J6F2e&ueC*BUT^ z4dkcy5-s)K-O)S+WoBqa{8gBv^qNulG;D&EgsGOn5oZ?r$MN8<$D?9K7VVE&a)J#O zzB7I`*ez2Oexfky&s%A6t=)_giwiZSrqdaZv&SRp=%ZUmz@<{cv^HK-0K9K@3u1+P zk*EH)3bTSXK4-v$0%K1lNdfXMwjGH^w;1Mdj|VEKt(^ps$*+MSso|X7emL(Jq!WL#Lhc}6e6wPNcX_Mr#Z)wRkOnuf; zH7cDdt+lSXJx;9gK4HIqQ z$dJz_&*vXBGn@2vX$P*vc4Bm@&f07|>eGa1LqYM}7VEwx>%r0&g)NS~@qo9t?7>N{L-A8I1wB95|CVx-mTSS1Qelt z-hW1_mrKZJaMa{G{iXkR{ehQJ({1H@LWr;zjsfs5w?*5{(OX-=zjJ_Vrf5vHw5J!4 z@12oP`!@$|hQ!yCq^5QwHpSOk5;;upiERIvlHyjl`uUYeJ7VZ25c-|x>6DwinC5&(ezjrXf3U#~TC<}h!!`sQAD(Yuqnv2iP$fC8^&pNd=| zvYeE^T>qea@Nh3hhlg*}V;Zs*Yi)LHGDj_}RP^0r^Q75>Y8Sh;rJ6Ip+$Q8fk^WFi zx8wISmw`93#>m?_e@|tVr!8Cq?N@%(`(6?om`@vf$Hyy6@p&WRO|7R0KzeI}aPDYy ziIxy{vUY9eC#_SnA7(1FQ|RR@ujVG`-f_??{IG?DV%!a%u!gSixS=eSTQiqoq<39} zJ;(-x;yJ)hesHUahSjRI)p;XQN%Kgv;qeoSu1JmIwEc8JrXKlH#9!OrVl$NLVbUV zKhbCnr{4VHP5h8dfBe>*WB-8*oCU-h)vQx(nMIgA6#uLD&19WFZI(5Zclv8>A~Tla z;c?T+F}hObv{h524!xu$-h;JC>s?2&yq91-Bcq`z*y1&02Hn1C4Rr zO3dp&>^L9k|C%e#d2t#`$FT6Nh@YhX=i19oleOvQdwTyeGmO;USaA4EOQ){~WtOO@ zO2CWiSang4j8S1EIF3g(>xDml)re0-*_H~hKj5Z_C-DT6j$U24E}Xe;#-}!x>hE#D zq}fEVcGmn0UfK&(sddsAKd?bNOv9VJ?}G_$A=-Hp^)MT!9!#k%({fcaipBA>R2Ine zXYXj-Q0KRMDqr<9TORsEYam)+el9key;|>jIeouU>hrv!1H5VF3AQL-4?@ha{I!=- zaMyIzc%DgaKcbP(Lu_4v=Fjjq{P2FG|2I!+ejTsul|OARC$4n=fti$};!&8W*PA;& zK;y7)(VTLXy2>&v6Owgc4&mg13514D*yojjVRmQU3T9ON6ZNr4hvVTdjWCXkAGq8W zS;)74zk&vP2dlL7pPXy2K_%6UTev?Fy=O&VXAiCq+zwE_=+7KYz$em$G~d=e4X;Iw zXM3@7y)2s*k_S4aP0n0WMlFy0(&4E*7bs7$IZ$gEm^?EKBvbmD#~0Q31uU@F93=>I zS~+1N+{WEk00%JnVSeU6J}CH-5J2iiyoPL!Y+LrjG&R~YrT@k`(ZeB{qRol3uQFve zYv3IRBQ|L`^%jZArc}QWRxg~|%pFFN?%UtjiRE^Szjs=$?f#JIPN&S1o{g6INi7xH z;i`mDaIzdOB@jKv>hALy&+5$qCgH`#Pr$_F|ol<)p)YQK{Bx4BQDOC#r(qn z2@(QHa;7t^U+V1ijT#Yad2&1(xPkc!>_YXaK3ET{9B9`f|D4+{QopkxX;SBl+p?C6 zSsziXSxG>64w?jT1@ZlG+Q(zRQeXAEc`ptRW1V?Qo;^;Z5WQx*)(5V%YzB8a5X;uA z!!OQ={H2D9oCJisFz*Chgk_tsvt+elAq~fh(G^=;8 zLJ^o^ZNnmmA{L^dc_~Yd@-QEV&83)#=QlG=m~(cHSY@uZpN1hN%RTi8sUC{G4S4ca z1U=jb2?e`@>;jY$W?W0vEW~V=Do5|XaOq>t!Zd^7@5l3bk2*W!!^tLTutJ{FhjWL3i~XyGzc&)Om4Unc!`*@q1#4g2$-9z?F#=~r@Uge)25>d?dD=!C5STBLc=jj zj+X7a*njV=m5{`q2wm+-03TNnt0ETp|eJe4@}byVP@(Ujbmr{{as&dOHd_)nNX zg}DO9@Six&30rS39gq1Fex_a&c`@ueEwQ-WD<417 zV9RX&-Dk*<7V-2ol9lfDta|Fc=+}0fWA$FfCKX68g~!^U$?)G4E9d(?^Vx8;@P=s1 zcImrHOkurUQyxh5L*WxXz}FXhZ>#q~#djUB4)^E2+=hnPWNWEob9Bg>Xp!`YC%^3y zGg2>ZK-LySZjh_r6j-L*vGGm47SMiynJ-X>_?w}=GunviTS4Rzkp9yG;_ugvsLnG{ z&Xd3Y!A5b;%e`Z3n?D|ODL2t~;8kQ%Hn;3I2PapO#(nv@h!J`kIhYByB*}W#3Sy&a z!E7Sgj8vB^`8pvycLT^HnNA{1bb6hHTTvV1P`t9;j3`?0;H5;fS#s}@=1q465x;hv zStLIlST}5-$nMp6f%59x?}kdJ!HT5Y4shcS31;wpNHtn)tm8?h+`U;hfqcegCW%=g zzvYp^{dNs1kGtA&NfhS0cM>6|)9_E%o5)Xz_$0tx+I)Uly{6+}b=GHKMjBfk6NO9% zRq9s#Chz&BYr7&lh|cdk1k*3`SohZ2>Hv9Ji z)Y#l7uyI)nQ-jg2u>g;Gan%Y2m|FneHt}$$W5D@(znoTQL$tdPBXKWbt z-%r@bAZiuemkF}o!y|EVckJ^hP*l`6NCTc08{&5 z%4}xi~fHjqIHM;(TN|Xq)uB&3Fp~Yk+zRo;h%cpuvqefQ-3pO`p1O@=Vqkj zzLF$Kf&PP6VP2sB&{|@ctoNr1I8)HH2ww+Z=a=H33ntnEAUzf4MZB@btkqq>Y<1F~4{4 z(cBLDcEKLJ@;pH(Fq|LA*75&{0MMo#8g9kK-jV-b7l40R#dq z>(FBk&!FIOqv1ZmDV%dM_JsW5R*aQj1NwCee*Rfq_wEO%srCHoYHByt;n%Ji%nA)2 zY)QIuyfjF#;n~TTfx(Nk7DLLMx7+!HuAgXVY>rz0QM6u5pd8^#&yd*Mk5dnU&5DAL zyq_g>5<2W-8d!y~b^@4bE0|AxSukbQ7=Ieyt>ip+f3^u5G~hMeRT9F3e*FX+SZS4% zxYj@1I08m87Mdn!V_-)=LEgMz#I&ZxW*;Q|4j>t~{qndz4K=kjrZiMh5q34yt*Su6jyWjmOEvzFywphIJ4#-}+d zfYYTBAplSzh_v&mLrRD!0`n`S10}%zQj!MXR=sWs{5U-H^pWGGyAMW>%C{yk%CCl{ zTaP2DViX(uubo0zJKR!=yFpn#>q9r-puZOz1Bf3zsjlD@h0u1yl!UN$;Jztd)};*? zGzJITGylHgP63hn4|Er67EYly9rCZ<_dli0$>q!EQW>?w`%J$rZvF!f;ye}*q z1BSVSS)E`j_X*(^M%y3e|AeQ0HXxz75}$OES;SZch&Iid!NA`1l~wh^o zaSP6S>|8{8H4;+@W_ky}VkDYXG|MUe;p_j!NO(#ZDn$~*e5m54)Bz4!pSclklidF) zY>R3(%+LR#C@z9=|JkYk%Ku;SH2;^3`nUZ5Teg40;vxR^^soGXgzXHn(-@DpiNdQU zRceh6rj6p#XB+=M4d%7~?(Ec9Bga~6F7d0ugHWfu$a7(nF#)5<4`qYt{M2D?M&Ms_ zU+8!)%`{YD_d2eIsMWAhdBXLF`e?=%5NrZC87$=biay5_>Tgigre5+_vrGN)vPPyX z(dZOA$v4!g-<^OlniD|<`f=ZD4Ls|aWVT$`15%O8utjp?V}AwsVFb)|0S`aZf?U-D(_j+BhGex4M}P_#o7#z+lS_lPtwNy zcw-~v4ex7l_A_xhou*T2D-lt>LRd2Av#qbL6W4tv5F<(T2?L&EW|{dB}C z?>^e;QGWqqY-Po60lcP7J-@bXs^Ehq1PJ5>6<#~4pOC@baBtS2(t3v8_rZ+8%^r%Z zf*2>3^?;iO1v(aRPE+hu7RlhowX?cLGX~@O>?U3$pKJ#P zp4a*TGI`?;r~s6kD7qjTMNf9AGnT&+E5%ucOZ8jP}H@>9a+@bZEw-%5yg-B zEj}Rsd8(E(jEX2l=03v#_<%lLUx?({6wX=)06KwCaw?msm!&|1On99J0 zW$s5fGco&$3yVxT8 zfvDHdKTyX?Bue+>GX4;STT(DZQStl z=AvF*meCwfzeFAsFqimNXjeJ%ADi(Arfyex%|)A=5$gtlG|i%et3!MPr^7!?9Vhrx zt+j_O>^*&RSl;u<>k_nXZ;AZ@e1#cRDoAw zdP0=hd+nXe;mg)vs&17TCG0YQX#_$49W9mt^?K%Pw63O)$Xp7?z@HzHAa?2*)*ihU= zHE}?8>5TTN@vd0All_wD3+ZEAo^bDZVET=(bG&Qpk_`_zem6<>RdllEYlX=P*VO2i zCcEoL$`NqriEr-Fw~-|?;nv^C+)B3HbAfg-o{YSZbpO znr0v8%iHV}NC@bp&ds=ExIOR5Y&nyEc+QE2pX5ZQYl3>l+zz^1eRgg=Y!U})`XGHO zi`9XC;^9jhUxSERm z#K=a$iT$Nx*6<|qu&W*IEYRzVv2_?5_iHD2g{xFeJ1fs7M-E=lsDrymM@2=Bwm9G# zR7&9g@`zrOc^2Xh;*S``<;wx*YHr)Dij|(R3WVp}n>}3ZLr)zPrJh5Vt_hm2ABpEm zB(kD3+ttTG_jdK|PY0v8<4xdCy}NdiAWkxyW|wk#yVsmTFMf*-O7~ zL@(En?}0L^AIK+QuK8N>di7IXTG>`uhQyIj%|+(zis1OB-+NL`wzq;ANs+=Qw}SRp zI{V{BAM;{zDH5yH#k*JK7=m7M-BXG7nMuw5l}s6bH^?EOQRNo-OlZ;RRqq! z-a3>^>^y$ZlXtt#w3DNmImH!(zV@t#!ZfmX^h7NWn12grj6qT_l9q#PH*US|(z}W# zC1t1O`6Y5AaR>3oQ03(|l^jd10)qhi2FVk?CRvmX_*N=YGVjOb*`G$M4vN>Yf$<-pC z$c7PG?9t*cu6@vT){cH+(rq;i@5LLamnE5U)t|f5`Z!!{1K=)ldb!6N7 zn3*~?_jusa6Vw&=ij3yLhf0?7TK3p#0HTv-GW|_G3aQ6P%>7Zpak;z~R<})w-Mfr~T>K~8DT#}b7PWk|3 zSq!}b)ENRUXMA*Z>OrqG${qJIq&%J~Ocn|LxNB&VnKBH2&C+9I$=;bqe#dSwBIUbD z3KvG@kWy-5ic-f9GRO^kYj<(nz4gH7b4gXIC+w&TkYa)!wHrv(&eltuT3BuW0q1^Z zKY(7Ew?11+g|9ja^I2P|D+Od?_@FT}nT>@6S7Tm%+s0O*&dbeBvR`erdbnEyDZD;i zMWv+H;owH4w4V}Kqo9*nYkTo3Kb>^B*vDJBC|oR{tjJHj@Yp=Aj!xyPIZP8Cp>xiF z+)EDfciLR@xrgH>b~W~2BM$Brjx5H?yn9p)Mlj0^)>J!0K~oI_4%(|VJ{p$7Q`suB zkWz24u|G?O9j*5n50`>fQ9h{3dLtXMA~l;tnHi*TwS{?z_}ow~9i$x$(TjvMUG^ zCwke(hPu>)t2T|Yt3H>j`|neO2oH|Pz9#9T-eU!+`RP;IR^U01N&G?W2G8*Gqq8=* zibPZSIMUQ|0CK|JmoO7u6`=X{_f!*y74xbm3Qh+IqY6Wn?eD*G3VS19t0}dq4Lg2? zf)UW#vbC26*-?yK#K3~%Bt%0>B~$1|VI}|BoX^U+RBbUh$%fC8cPu1d%$ch8x%AuL z;-aNJZv_n|aM)1w3T*fU&#+uR)K`0}niiV+3J-2Xw`z*XG7xTy9ttXG% zFM3AAdP)K+!$QU>mo1zIj?OohCs15s?HN4iig3QpF62`hYZ0%FN)I z{OdAX1>`{wAK?pEIu~en*Lun_9@AM<-$zN0wWD+}Xr_$V>f!X4D+$h6DN95#MP>|~ zLYPvj@E^i|G)Howt}6Lo&53 zM|)zw%Zbud9Dy;kT0tInHlvqmnECXm4rn~d;mgj8w*Nn}mWCrILQ z{=h?$7pKo8hs}{ps!3Tv1dB>kQqL@8dC}pav_@cnGV0-n!xW*Lry{tjoN{bO=Ew)U zN3XzQ$H7>kuzP~_=rtI-%bu9Qpz1L{{Rs9Ae4dyx6m)C{*F|uhRE_NQhTs;Irnb^y zejaKKADJ3F`Qu62{M?$`zpB=&hxPiNKm>>xG{txS?41PqU@5R6hUOz(L1wmLfH%6D z6teNRb75g^QzHlv)^pyCs`st?n;1*3GPeL-!oWfeQtCN%^L*<9TGUOVwltp4~DBkq0zWN|%CW>Q}6(e;6-V-1906>nkNTJmb9LlwB;A z*v%N&OGox~EA`eB0x?upEfKcnz|W|lTTV1a69fK}_rNsb0I(k!>uudE*MR=gZj4e+ zFhudGQRZ3Scf(*%OfOqhre$}*^W5-;o;Lr5?{SMJnyINrQex|5wtp)vL2&*T_B~5A z!D$WuZ26~IvH;A?FU;*LUv1sbFjvJ*J{hk}+C|Io=CH+Q-~xI(=e)aiYePBiM>-ET z`y6eTpDTo-f@%MlUSTbC)g;q?%&}i-KEJ!0qlRjav71S5$eg2I1nxx^?u%2Kat?K=@=nh{a-pdY*$G>#4Z?=SCEM!z|V{oqxZe z*SbiiYFZm!WQc=6;N~p1a;}wz00sGah|X;&O$=E_v4>IP%4LLi)?UEZ!v#5{%yT}z zRR`bfM?9<0@`vHdxk|Q<2c@k(bIgy@&t<5hH(sNC9SxOdxqs4B)^mu+7KkL6)|kxW z&-_H95JPV&`fuT^&4-m4(`()#zc69lC^G+A@R9i_Tjz_Oqf;!rg4N+FlpXbub)SWK z?(`>{i<8M0MPs0*LI|4`>R13vFN7(oL=h_HHF3> zhlM<}pOyb^3v$8b-*0sll{iESM4>Ha`2c@udCvP>Un+O*(TUAC;$4A<&mETVrXHE13`#cFU)&fu`wX z!UngEkDNv$XR$`*t17%|G0iKCQV;v;cqJuH;}@7LM!8UPTq95p>(tT>bf|6Db8GpHjq> zwF2`+WUoSO?V$Vhhw3$>NQVQT9}eI{Bo$CH^tYM_(?!N>Pt-a^kZa(2`}a)%%_x`e zsa?onB!gJ|;-0)z$&v$y<+)rLp&O%`ela{8bmsj;-1Pfe3fJo@|f5vSgowW&j5=T^aLg z(${p6r=vDJqZRLeYe>P}XeZKFD}v7x>5!s?Z;?p3v}~QLVmFgMo%y$?wijv^z`s*@ z>7RDrU57Z2d56jgcHlEKgqDhx?44^$a62pdMTMNW3DA6jpB6jP9uwLM+vH67TRo`a zFz+fpdZoKNS<|S&=|hAcF`+h8!67QacFy{lqR(oMMqKF&YihMb3L){_{z~<9){P?PKP&d z4R6_9zvb8|3A`Q-Xtr8&m&ca{MLtvNzF($a_d}ePOZ>8a&3d7<9zbheewctf$NY@C zpd#0Vb9czT?D)b_d%X0tr!3(bYRg`i@so_r-t*kR@^71Ql<{PNuLKH|OvQ^+#+5@ATZ+}Ho5ErMeH|43Poa4X6oiny5h;L)Nv*ntPB$+d3B6gp% zd>5ZRp!|LeI&<#2KEpo7hJ;f7zu0@rsJ4Q4U${6$i@O&}ixmm(+7>VF6pFh`aCb^+ zp+IqW4erI=JwR~}8YBd6dj99EcinGy-SvLF`(t+Y-ZQi28TrXG_{35xiRld?E&<-> z;%`FT?_dm)u*Hr1xZ;h_+a4E(EuXS#oF~W1v9M7QiT+s++gzi`U~h+&MBRD_>BxK_ z4qUj9#`%iPgphg7`)fL9*7QR=HlfczUYdVjdev5Mmy6lrNN!k}V5+ztit5utW>7Uu zOG+-XUBjXwP;ue$Lr<+&AG0G_&bg{=%o z0-5nx4AWE3=iaFuu`P`owI2Ua{F!TXL%>2yF08pj zm}tu>ns-kF6TtX;CzV~pgbzrs_8g^3z(>=BWsovCphzQ=ROd!JAOb@n}U(WJZCiVMC=a#AD^pndU~%xDs3{sOeo{0zlxxZ3b|ygu-W=QZtLos8Gg2 z#-z5DcfTQ!#%OT7{HRbbTCLLO9E3pUX3DF#<{OHhaM|JeAD?_xex*o$%05}3T)lbNI$#_0#Hv>HGAsL%x6#oc9KY>{WG|h@`AH;I z!_}EvAnUud*}nccNw)4r#=KC^^3FvzON#q}FfMp2=Q{Kep}&s@=Whb7{i^5;Pu7)x`@<8v>e|rar-`FLDRu9eu2EkhSWar2DNr$vcn=7<}uSoQY^J>6z-u4^p zJPc_&Iy}Tbk^R4&|G~0%CC&M?lz1aym#^L2qwqDe5Ady>2s=RRWJk!Ux3F>)A#hXN ze{<>RL9mq^HNW~?XZPudHrp@P`()hf{41uj|1y7NwouoUzBQCyQ+UY!X(qf+OZRrr z;|=WH#ANm8w*w8FO4}bASE8wH|GJnb0-~1pQ8vYY(mFr6z9=E`CM`EPiphdh{i&r& zNXou*1J*u*eeR6lMt`S2@Zl@Duo-nZIV^?TsC zq;Tb6ee_WRc90^gaP*hF$s(RCCTjjdch3#(T?R{RcQ`%GJwwaG2D2POx--}iyMv9* z8t@X<$9)0wk~w={7= z6^xyIj7@Me%wotxYcgwb^5{pHmsr*{yBo<<>6`n}6bl+~N7^a$Rphnq*6>g7{YnzX zRLjxo0V49(BW_k!9dWk;#tqnKY0g)7luA#&Z4V-7gI{T^FLcM7t4dh_G8!DC)Co$Hj2d_H^qV z?jrz5zp_x0@W8Q>qf7+=R0T&O_NWB)iMqUE{UTrLC=I`S9*nSFyOmSQ64j$pZq(Vf z^nR!hJeS;1z4(|obA%$K`-Fb5(9~Sf7?pbp{43W&XU;TTB}c|yvO?uBZ8Dhdk_|-;u0)eig^QJeXL<~hiHZdORkPEp@u{Wu zfZFl+46(#ty!TV@k7$?T=VXx%NXf2oMYk>kH(z zy1@e=gaqxX^dk~tC|3gwvbA<1=Z9C7>iPO84e$3eRvP5DDd*3Ji1Obiu94?T`aqoI_CQ)JQirpmv8wtu(jE)3OTRrS9*Ml3V;M^pT&<%r6 zCV3)MGvL^veJWr4sF5NrJY@r4S+I8VC107jSatG70FoG;KLy)&#lNLJl?;)aGqXKF zec=ya9txv$K3OLRANU>Mgb&Z)v`u3;s(bKUbGDFtsv=syYi)19nm~w-42xeuQ&Hs)QlYC)UucSgfMD8TM=MzD z?dx^{%ZimKx*|N8*mGd;)u78`^KX@HTT_Y#a()sCd+K<3Tc3|qhF|6v$v2L_pgwgF zy6uhi{PxLksoEkUf9~gD2j;7@JczYrUgq~4KrZIlI2xoF0|;T&4zOqrcB?L$&fg8N+UvF`VT`8uGt5YF+|k{AG^(<_3ly?sTyOC9*KYKkoTdE>?0NFZ%j4E%S~ zJ$lIO;U+U|)=g;6{`N%(GM(h}0$>h7U|)U`4_7}uOw)xQd;Q`m5Go^8B++~G(@WT& zM(Rr?x7mYP1%=kegXjXfj&3xGNrK#MS?3aB8peBeI=0X}6(=y^FbPSe@>Q4^-p?BF zK810;FY{sj>T|8#OawfHX#s(aRv6q#RIW{)OKACL?_yu#canAQ8{(~ z)1RS{hy+OPRQJD7Z-iw&YiK0>f7+n$+x=FR1qH8fVpy$&31(>!45lok1%rE?Tnmvr z$DZKTCVP7lw@$UOoS`9gNNA{fjj5CaSX}SYJk4!PWZH;p7qjzZ8OaF_$LU{uBQkJD=k${@br{^<$&W5WVIL3y#-x0CN23``!P9{z5?{hMd z^8l!7G*DSi0;$(&O_D&p`q1?t$E(Ec?s9%$)aHtL?Ug1@I>%9XO0ri;i_J^24k_^wWV|gbj?^* zaZpvwfxx!JmU$&@bP~FZ6ZUV+m+tuk^o))S#xPqeN~4OU@5e{13qS8$LnhLi=3U^8 ztLa~Qa!WMTJD@{y>?a!{`xuh{yfowx+!GtnO4Z-uX_GCl?Dr{=INE>C_ z*aM_@m0Ut_(0Ws5%SNJ_tOIYUQsNO?m97{2tL3&5`3Ig9mO@t=kUi|4H=w%H_{N{q zEK@alGVBPn8wWr77{1aG7X7!FdsV!yIQ?%5xsWheKl(!CO@7f*iWyiZU!P(hd%sj1 z*^MP-;JXx8^Sp_PnzbJFsm6q*0ocRh;+4CJ8ZwiD*QBAc%s(-i?(`nm5W|6!Q#LVY z>i`aa3;6TNZp$~D);%dW_o&}u!VV?Ejq34yCyy%G=Y8SOkSBF#gZjx@`6 zes0}ZxmrD9v6%$DSJIRLAt59&rD>j6UVp}ZVN%m95+#GJSE#70&{D<&_p#YW~0UJkx@+SWa=t4%H@T=BpkOj~AiNZ&phcUCl&6e-T0DGlbrTJWc{ z*dG=@OOSCWBl1!6-=S7w??4STb|ypxB^N)G-)Wp|hoi;cyeP&}YAwQts#m~RTuuxf zuo0EC$jIBvQ8pUPNz-f)YL)N%a_Uvv2%2-WAFTKos}2oM{ZfiU*7Qnjl&|Nn&h|~a z>KbVrE@fonUJqHH7ssnB)j?6b>^dTX4En1N7&%SfI-)Fi@i)h}-)$6dED~b_8`OfU z^A7l}cn3%Y&>6VQ{%)=>O*x1M)Y@6HfdvCz1TvxG|8yZ)Ai7ME^4=AEytwrNFyRV7 z&F{TnE|W4AGnm9ja1!*CgLoq+M-rcIx2VIz__^KNV4V3M_nmi0A<4_m-yl$MrK3*`L&urV!;qQm215Y?>{fh~% z&IRW{s4j>=8zQNu6-5bWJoo7JVLx!8kq{$6hv~cMS2oQko{x}4OeI%bG&N!z}jye%NAWcP*~( z5uN9Dosj)u%!A3*tl^+K)pUzY%9kL`lyu<=pqGD~NSqE_vp~N=j811Yd0Z2- zp#C^(#tRd5cW)n@7%pF$flvMdP_Dr|xW$E%h`A&OD!9`qR>!VnP1V@}hmt6`84&v| zz(SCsIkp!4Wq2NqanI6-%aWVY{0h-A6#&Q{qB+i88Q6^reg%KpemBLkz%7CF62myu zho~+=NbrWGlfp=5ynaUE8%OYZpz<6#gV4D?u7Gbi!K#P`^{u&6-r^38<9zSz1Deu% ze0c_pr*pq+!$=1YLSm1C#+w7dYhnzE4u^TCA;3aN$He5QdR)1ku}b!Dd`rg8 zK&iYG6}p85hswi`h{-mgU8JV?ZCF&b+<*#tTI(?Y!Y;+4b*xMmCjG{)okR43d>uHz zQn4@iN=}WnEW+duG}LN7?z*H1q%U7cf0VEqYPb3vu{-zBBl zvb@krWs6Uh!;=!eeAdA=tv#L)BBsC;W%9oO-8#cOAvVqkJz3r*w_j~9^~aWA_$b+5 z`zEjR24%x)lB^P)UY4AnO=B`8)VCNjLR-6oyIh&!ZW3*IZi32!; zHAva?q7VKVrlteoIVna8p)S}!`nh(FVCMI8&s5Z4C$isld|Xe8bl{sHF#YSpw<}0o ziKTJobbYgNH->}pSCrPoMtz)Vf*PIbSl*q0V`2DAsJ6W3L}3^?+)M)WhZ62ADQ zg9vF9`o+j*nNOt**g@iS3n(FbmWzmH|H?#$3LU$qN32c2F2ZFQN6*Uhz9M2&Yz;xl zI6NGE(U#!Ny=EduHP8-n?3b_M@$d2(GcF^_Z!33LYu${+BUQV&V$(EQw|lMw)_(>M zJ1*=sSEc_QVX4b7f3uZ)taz@eOOXicnoY>IU-8qg);i#=1#rmHEN2H9M{sH){kv3}LnvJP}V(nL1wJK3NV-lt~7EbG&jfM9Y}L5gguT4$ajc z=M_M)=bwwJz2)l7(Ft(=tigd>N7vOG{|Y353f_ZA#)(Xivo9|!>$_PuH36FW2ddH{ z2gOQ$9<1QnCzeGJc94x8Fqoa9R3b`TFf11=mT58dl46+XI^FsRVo*nM_LA?|Qb&Y~ z=qv9m(l*zZu_9DzDg&Ky4;8!b2m#blig8F!KB?q!=Oi=5ualzm?V?2-9sDzR5`Acf z^4tqLT0CcUR%Bj#iR~;v}Yi?q;tHMzi zxe~fA**DEa&vt4v?mXEjz38h)vd|WMs)0`bPKqBFaNCkf>c6atwIFj5p5(o(a% z<{lgMCtc1Hj_|YG>VwW-86%c!n>73cfnH;h_;BE3G=Ec$lb{QQk>U2TN&Hsl zouxpr5G}1cus0BUd0x6VmEz!G^@dlIZ90o~3L6JU>W^wKw+Xc0dsFMb z2CtcK$H>4|HtH0HdZC zGy#+$>ewe3kIr9h5?~!erp41Zi^jQ8)gY4$4irP;!=r_$rq8)i6uMJzzC6Z=FQw^L zGF0kIpRq_0I{xU?&J>TdJCnNssHWgNioqRAq3r{YgF-qXKB z;!@g(0=YWJ52eyzJl0I1{NO|hA|o^Vkd1rr0M*C>D0)ak1Dh1l#v710kt@g3W|=a` z1I70O*eUtQXP>lrBX2+1sGW!LMK*r@O%6kj*F+eA!%;@ET_?TzBv?5QtES?Ai>S`iCVqT-W3aQJFo0+kW92nlhF zvy6k}Th+8rCCD-o-gP!-gK+K%ma5`CBih(-^Zq8XnC>@MtJ}p4`RqtdY_YJYxVU6W z&%M274SCbGXcbR?6vSe{*@a{k5uRv{ILLV#%C6P@j0>FnZ;kYBY53#8C+d=1;#2ip41RWd8vuYX;HB;N4n(blAK~TMoG~x*8c4EQ>vOhFaeFi6=zgv0biVCLgc(j#+i<*BPwV zG&G~7^ zIrJ^K%-p3X$TD=mI{eOv5;lc!BWrM#^r>-Q*o;K3YI2D?db!%TOFuuE^|}~}Kgvi^ z4V75ARHNVgsAU}?F5#uHaTO6CDQ#8WFe|P1}i{_3B{SpoK_X67OnJs@PlLdYPrtp z(RL4%`1G7-KvO)zMeNP7KcH1EAtJ;0${x{Jb^GRobH_Lzm6heBrI9&JIx9LjwcZ_P zSg9tP0qem}=ELkfZtXsMuH;XXp1=r0gY?tAoj` z5s~eTkk_GhxODx&0$}QjV8s91rM35R3lNsR-o-_-aBMPpHMMWhbjRwp?I;tyVElnn zDPHoqf0h^5!>zj8S3e6wE&t`VRQGJgMh0Fi3E44{{va>KP48*`myR|GTcFW=p`f1? zNQFL5k9aC?Y`8yIZ27T~1sMf9&+&SD$*Zmp5ko{Kz_%iZvkW7 zje?SGvyzk|gXLPyg6jp)IPMHtuvT}FGzWPrcXz$!32(1NT-)7{+;Su;-I!Clx5R^4 zS3JZWk0CTFGj;8I-U*P3SnRgd-$X*-MHtXq&A5QwjR3oC)NPYd(%FT<7nNkvCpg}H zI7k+Ns-2FL_y?1xM8}L3d5@0l{3PC0m#FyHHh({HU27ML|y?D>1^Fc$Ub3NH$%9ER>VEgLRS%C3>FXy{ZYz z*-zP++r=fesh1{nDLuINL1h1duZHCQvN-570Qj(k*w|UI%vI5H<5*983#m2g)zDpS zEm@6rM0IK$r;&-R7jSVufuAB_r)?_Nn+Bd3j4BEqqqzVR?3~$lrUhUIKX`)PQ53I2 zH;CxwDEGP*?T(|KOeO2cTdSfN24eQ!#co5P?INPXCr{i?^p7_goC}|HP+HJGpOJIs zVOvHOt{(<5ho1MIE>Q>|CN}JMj*Ufs%U4E&$ogzf`6M-)kL-8Mad6MPA+3L z6~DjI^WRQ|X7&RE6ITO#Y!{~je)tq|lmXR66Qdlv))tAI)KD$i4-)M3)L${@tyRjt zW^Bur*KGPtIyH&3g>Tv)GD?0Ab$93Lz{Bpt1?T_dDe_l zd$g7>sVEEOh-VHpZsrL72UFAegsaC&n%zsblqY0IK(^p_!c} z09NLZQ)n$PmUS!GUds5vk!Xg6&_9Mtc4t&#?P*hrzoj-%h%^&~KQVnu62hP4ujcoc zzWwq~Db9vRs9j?3N$pRU>sXQsb=foQs`y$FBInI{N?UXxvbYsy|b=U(^VCHxL;btR*)r}FZ7u>vR!^8_oJgF`l) zd1hUHiI#}F;;}?z4-7)eR_b*~%|G0tH3yC%$CYm913-E1QRdL!vnzu=){nh{`yj?y zdOP;Uu1YQKs~n}mcbn0jypA-h@o)x^+J!M7)R9;3YM)za{cy)pzeGqrK3a0Eck%qE zK@w3*Rf68qprLkKlm$dpx)+;k+hyRUF5CWcY1-#>S$f>K`&ZO+&B0CeCi`K_8}i(r z@5&alTAFLR7UEJRc3%-#WE)Z}DGGLC0I@V>(mvZpyoPy|k$gRU?peD2bc3X+M9k?T zj1}Ktaot&=v;vf)#=cB>Y8vxLI~+&1(3t#FX7cXJOE;Y}9ro+HF?>IoXI5oUI@VyzEGj#! z(3qLXPu`1qxGmj2J`$d;s?J;S%`AM$1{Z!wI5^fRl;=Wq?Z!B{>^K@AyxMvFYf`WF ztXzG3FT%8Nk>0f{MMKS62mvyxY=AbGY|-=1|hnSMYaeJlxsFzY{I@zkyE=ki`t$kR)UXT%!^>c`$Bg zku0!k8QKWPKlDdUk%Z7G2?|$b1xS=!C(zDKJ&+_HYh~B^E&3n8J8B2MueU?RYw;Ta zJJ*(8b5f;aLn5+?Wy8&Ei!yt`mW(W0tOGahR&buF z@A%tCF{c+bGX4h8!Qtg6y$msvCZWix2Qh-qcV<#+b-=MIK@G>a2 zVTDPPoe2s#&hEcOKiq%3?9IZQ7vC@N%(rlUvC6XYaM7gbv{DB>l%DW3r<(_uF5|<@ zEma~#IHTb6*?I$(6;Qb0$Ssd2`i&bA`OK?q;xf#AZdmVuup2F7LPxYQ#o6%*dIH@Y z6$5DIA)#THLqpzffa-O^pvYz32Pgk0OB!MGt;@s3|!sCAk?uABMT0%&88_gT|F~fcQX=(~oi87>X zafC^TH(&_&0uL@f6LwsH6oXk+!H%9%>cC5pkTaSf z0~4Ch8@Ykn=t*Ne-2NtgKBON(rp47Rx&`}+vA&x}-3!nT~GT!a@Qay#H`} z|HLOF-$4DWfYh}~3BnyA;80yQ|DuL3yHv)ly7qCgihXf?L9se$=o42@4%rO0ciLpI z5I8!rSjP00e;Qe(|2@5Np^cCcI3hI>D)lQlU~NJfV%4H!s6PkxQ5!mmVg1Iz8jN(= zOLVDe8+nFcU4Vs4v+P4SJEh{7+pQ)}Ubt32Cj|Ms&H0u!97$DxQx?iPGAW571dlcYc}jag8l?HY>%+Ut^BM1p2slY;G8 z?!-UEC$jS<+2z4F*U}1qBe)Mh%0{YY!ZcU!2j-RY)pn&3=yu<}D$|||-H%N2a)}MR zc1!DC;>f~3D}VFPcOxLS5po^2d5K1^-iXPyjW2ewNqdSEB}Bd%FVy@Cl7)1=S3heT zoq)vVt&Wk)Qqx3cIimVrZ|7uZ7+ZwQ;1UZ?VS&S^-xsCkPRi9*<0r}(y*b=oYW8Kl zRo7x~qMj|v%USCED5>)sqUZEQX0hp_;X=}8Fb_2XeQeO>>bBpZXR4z^t*8!bY@`U- zw$s{=gimm&g!i2xVOfJ_&`c*JU;^6Qm@0uJEx zzUc`K*M_=l5THG%V)Qo)N6%H>_%sJ2o?TaLzs=}~)8C~t_|~h6o;=;-30t^%ia)x8 zkvkUon;A#zZ6QaJX6S^{skVhWuU0(dWK$f8WQY z4C~c`mz2<#-Kn;jDiHInHXt$S;pr@dv8yME%ikHejOh+lj)9s#LdE|6#C_ z7H=kP4jHVeS5_WN7*IUJr&)_4#k*q~*FI}L+6l>(>> z*2}(-4Iavsj{?y{9Nn0`j8?tqBK&tMrVNqIb;yy4!dL$Gzx*pG29zrbL1rGPdVgZa z&;WEn?wuSPz`FWWUD1tEw<&te^v6qKGx;9uVtEA2dyzWe!2MScdQwYz!mL+sQ|H5M zQ=zj!?9#H%M{N6q+G;WjyQrIbxceL)aNl${fj?+6@Jo5{{lNPm$=s;PTIGdi-`!Xo z>QU*aJEh-bGB4}Z+Q_)MA1OU)G*$__i0WB56^ebRKq1YY1s`OppF-}%?CJC`M6AAS zA-hzO>7&$KHjih$ipiD_OoKv8A>JqDG+TT2xa>ppGs1eXy=^aWnX=`dIxL5H}){LW723~5v|(dPSUtbeVqxP z3wZpSRG`q)G`mBaef4Xr3Rt_$S4@u73LiB*{B(^r#q~)Ou=O2x|5;nzwR^D?egVl` z$QPcwUyf?p`3aCiR(Chvk}8af`9$O0-*bzmd-dY`(!%z zeW7U0Z0OBn-9*r3dn;;eGFfm9AzSh-%DW*bmbza@DGf zEFve;9#Z?$A=H9$`R}ur)%0bwZv_1}C7tA&+*QAm_vkra>7B+!)i<+ZZXJls(9!Z; zVO1r5C)gEy+13s(LQrMp<>?)7xwYs!|3f&HS0R`tX9+@B^GuC@0<1)UTYS}nbRF1U zkZy%H6!5hPpOMBhs`r30;wIMaZ%0Y}0V%u_AXqSQkI*x0Vt6su^Bm;N{{n{#G_fq9 zfo8QER&mB+1^0~Or}DSeCe?^O;+F`i{y}h3G457I{FN(hJRh>?L+j_)W&La0Wt3ap z!=fgi&D!7KQZk*H`>K7Eu)Wm3`)Hqkh+dWbU^tg#BD5S`Vgv(Uq; zf-|m<$O2uiJP(hPS8vc6pA779J;6%}ddZ~uCw)$pgQ^8E_3XqRc&zc@V%GXM#2F-# zP4^=9XD&RLEepx+1=F)`k72qef#Xy7Ss#+!n&RXx!uP6>V)A?hT;LUOyxP5?^?zD| zTwF#NaTBdcZKnrzf2a8D#EmH(kM(oxO()ajEET~s1#;v9Ed1v8F|65gecKVgj&z1Y zzfA?yAM4pYYW|Li6N>Ch@sI{E-hRj`wK7e6X(Nu}vDKQ*ab^@jXM63@|K*mu4Vc#I zl}@I7wSGwdkAbyIc0?cMq*`Dn+?UE`hE4d}$><>Tlv=uufXmKS?X~2&Y~k9DE23}o zXJi8gguArsbW6N(F>H2(LUEYZICvBgWS3=%#ZT)#h(-uSzMeIU)=LQWr5B=85@-N=nUo* zQ^gH(l`kCXBk@7jyBQ8lRfsN~eSffszDA+fzXIQmdcS&6TQ|pe#VTotNpMBT0n!TX z^T-D%YeOs(lGR-j6XlG2=rnEtR)Yr6+3PTbbphJ}*2nfudsZ2!FS&#uZk3G8tt^@B z-klotY%zdq4HKHn&z29XW}7DyUQ!zMi`&6pl}Ih>m_IS%NaSKGbVPB zidbpwyEKe<7px_mfi-ut`d7RqQ7|xO!N*FC!oM2k33>I+ldVV6^fvwUGDy?+ng_eM zwl*WL)U6HZC!?9Wt*nKMLU{0)($FKNJ!=cmg%WxKLOD1T|mn9gux!^4m_T zQ%Mgh6YqUmjW^Fa3yQqn3t^suadq(L7c+&WWBbzuZuWdAs-th>l`03-H|bC;0(bxq znDr~x8MX;>HO9x|0Xbnj&~Oj)bhY}|dPHY!^&FsdXHtFVQ+9n106OeP-WDw_K_nnn zHrIH3ByMx$^g?#`xuF*%>Zd>69%ePQeHf{>_L+Xcjw)PK6CH7|P-Ef|Xdr-2i)cHE zOUzMZNok$O`vdVoB@*6SRM3fV!<-#&M^Nf1@<*Rh(XbJhz|EYCZM=$}EhDE9N-K=> zbOq+?yaU8>4=x?c81$Jn|9WapbOSxgxQ$^x177}CE0$ULW=I)9iuS81^(gZd7vC|o z43;0hyuPFNMA6n=@Y3wDTt!G0r?n@vQiiBLv{u?^t}hBSPzLR<>NKpgIZ_V>chSstbiCro zsd}2)kxM%tiGpp@H_Y4JVte@8LJW2}h!RG&Hm)@~g#}X3=6UHm0xaiwYmQe{TRO>p zl}fgytTz0FJuPgy7d?W%Ylti6y)3Q4oI}0!3s&CnAd8SZW#m5FAPe$5S&RKi;hpwykl;nc>l9`9^?1()Xzs*Bh zywc2>-4VzDE64NUrEWe(-R>?2%&5NT3w%X9K5@g~+o2R+6+12CSr_wr*AZL0=LpVp zCtJ~VE3P+?o(yyDi`?UttI_SEE1sM^DIz!Qd5`{PF|?^eyH(0QJt^a20|Y03pqf8> zQqP?OX8#u&?z`|JL}(Cmbic_+qwUY=xE9~NrsVLw;@KAKHk5?^ZlTx#%PhpqrGFoJ z!kERa5n`~r8l#Pck@@g{FSSqCYgQ+Qf@g8ByvQ@Kg>y-|=MnBT+ZXYE!$mByN;-A( z>kbSk$*ROUpup=8rw~?Mf$zaFTV=~R6%Gx$_%DF2iES>AFP;VvS`w>Oy0jK9J_82t zk~mOW^{#%+wW3X?G-b>ci%P?>n-MXXbm*8wkiRo4xs!FaIMLC78k@<)lhGc~upP%Ac6rub2H(s2g)eDJ*glU}{@)B74J?BC&|LD>&30|>-fb6u*< zq=1fojC9Y+bdslWfAoo>#KVGqMlHIwq*Dv z=icbJ@%5Eyy544H0+uCKC*_atzY&rD95* zYaUKW`Yons)tLCY5;(pioh*wtqKMQbHU;hL`)Kqbmll97*+Q34RqZASEfNg{ydz|K4DDRY)2&-L z?V3#;Qfw@%=D*L{ph3p?)U~kW{34cK=BZVub6U;&Iz&kyD zL|zw=z8lJZ1O=%s0AhbMgp|}y@?v*n*TX%LNEO}KdFRb)g}Dk>CTQ|B80G7WJ-4`)Kmv5!tcb46$4dqjX4kI@LhmC;tD zigLeI?dg_mSKcHSTDB-aGCtv@U;OZ|x6?WNgpDq2GxO`EoZPxHKh>l8xGQ@Mq}|ZAdIUf94+=f;^(uan>tEf@7~M z<~vuNP8K9RGtW`qJvUL+nsD?*r0l)OdQ2*4Zf;yO{d2~bz6$(=hD`$@D?2P*T8c9a zbX326S2<9fzRL;!RVv{an`gZ~Uj>obg*st_ZCbc$-Voc~60*ef?hQgl_7uXW&Y1Pg zbMa|wDbTbR7JTQ6YMgMi^++``2Uh1c3D9yAVToCx{>M8cD+AGDjvD9FFBawMeYU*GDp zn`IjA@UYsJPX7oF%HscATk-K%Y3JRwgFV-o-FzEmy50!A^3|CxbO}f4@XUv3gpEzS zPq0nO&3@^2!wPRe0aTC8hgc6=9h*HC5_ro|GhKNe?6(B{0dZ7ky!>nRYTo}lGhC?d z%q`wA;%RwKoJ%Lv*;+Fj$gk|z-(h2oKUkB+{o-sh-H2DaHo@vRq5eAm?X9A*2zYF@ zimT8_1WqGAma>>|GZ>AdjwCJ=aw^mWBjOVn_Q=Yz$Z;*DVmh^q5*0W-mEY4EJfHc6 zMy|2XKkv+ptye#qd(MRg{x4ZkSj%C-I=;?DxY$&$&JOx;V;DRB zz+$=mY<7xI!FY5^!kAXi#ggE4db>f@q4}m*f4;sW{ArBDKse~&{h+LM z(?gxG62JE@>exB#L!@I74x3w$DpYS@>VXgA$jltfaUXk~hpYYftJ+WZA=6}P$pPxA z(JEM{r$mfF{tZ_#(f-#O`%631z~5T0R`pCAwIe8VvgCaW@@URuaAH;xL*C6iMLI>< z^~@$$;WjcVXjOihjnhScFhF=Ls(3f*9nc{$t%ExhCaP4*i_&6bgmEYVnEKB@`xhB4 zFDM$0^mS->;l}!Y$~dIiF6+11``7w;(8*k?)#APlBat%KM-$qTa%?FhxIe^yWRLR^9uB(OVq~Q`D21NrUIvHsW zf?m+qK=l z#|E*zE>z?%1|_&#+i)^tx#GeWJcY`pEX?T)(2f~}&6pD6OUu_i+&WT1x-!Ox8jxG= z7Hx0=KAcb8_h`!ROQS(f$z~{9+>jv`hdzBBb}50DjxzMrbuRNSO1A8d?ymk@Ybp1h z<=~c|8*Oq1DymeMKt;39X->5sTQas3awm}TIwxts=Q1BEYw;n3T*>=cZ4lo(StokP8Z~1ank1VNcO`YEzVCDqVdLY;uoVGfu%WvMGm7$p*^fn!R=8C*&o->&#@UP0RVmbA&$=wAKYVCAD53DBnMH@b=bN6YzS1_g z1#B=jK%;CJPXElNpH8`09co^9g5f{|{_#HqEdS2HgC}2~?#|!T&c{2||Cl8M@Q7^3gEx^yXy)z3(ISsXF5-v`A<=TATalj3bb;}Byr+iL*? z`OFsv(`@``cK6;rNX7QqDmnWg$FxM#XS*yMDl6|M+*}2tWE;@5#t`BZh=cqk(UL<< zZxSdG(ULGr$7Wobj#5H7PSl$L6VMQ?VCXdgTF~G9jMJ@caX(8h$He7jxVXJx8N7pA z<7wEI(}=sS7D{^(E!<8+vSgPKPQ;fpMkZqA5R|IO7@E+6111y7nZ6{|?5glqQWGp( zJq(Fz0#*k7M~WvA+whJiUFz=dXIQK2jUuQ?u_vO{>QQqc`=DMg`J?w>*fXv2Ua5b| zz5dHZe77nR$nkbp7cZ%(uFY44j+?xTh20ogyL}l{KmeT~}FrC+* z#wd^QW>Ymq3%#chk(}CCGt1h46R;EyH4gd(X|qwv=Npnrz4hR0dKaC*3%#G_m&tAxaR7sc|yK^NrUY{IbK4`7{ zl3;g?6LU2bf^v;2@#N?E-Qgx!U1p&A)wq}7v@P<-Q|i6FHgdiDJf&pM;MA70x?Kq< zu|?)K&zQfhFXE}{0u~N})#{xQ@duT!(l?}jtaO|NdmONv_2kH4mK=`h%{eWl^csRB zJdS*jv%=RfD#%-(WnaH(zk)j7LA-ZPMgB9;g|3Az-}0k6MRcLu0#P8+Pugb-GRH<= zn23v?=jg)u!Ebhgb3G-QgsfH5zOI8*zW3a+P828JcqWC>NBJ#1?jGo`SLBv6H~(&h z7AB!Ke*UQILweay3Yw{1z^j^94aBjlEhP)FD_JX}LI&OD7lJdt!azu+Z~4TXEL9WM z*QdYMC_?ieJV^4QW$l{kOqe!TI#H?(nJDYGLLDcjG?F2iCJT*n-VzKlfUX^k9QA)R zT9&L|F+uf8mx|c6J`JY{9^{NW47!X14iCXDh9SX*yrEY<8IWwVs5AoU62>X6Tba z^FT^bDrEPso0CFNaE2@UE0qjukv2FlRR2e~tBa55vbB+<<|CPt$5fzL)Czm7U+wR$ z(Ne0=e(x&k326aY3+J&^aaBX|2|aU(!)Pvr&RWzCS?;vp)_@3xk%YfwTF`lHp87@o zvo)})s!V6EEXP5fwWYSVbX1u>OH@MZSL;3=R{7V1c=AfHP^AK;JbzJ1S*#8)LX=V0 z^ReFHmol$u;>`9>cLmOGL(bD_cqnOF=K^U}uFT~uNw_}8VtzhmAFf*u6d#B&){Vt3 zKFMrz2;0K<`1uCfF1&UXXY&dReOb}}lDGq2ocU*vz(zXwx4g0*b}iX<%1Nk~^jn`z zYV_U%JX^_Cxv6?G7dCirZE`*9K@8uPiS9@q@gJqU{!I;7mj-bwV)|&3a-0+yK^1QD zoH*+mZ>Rf~(a+iv=RP@v`-z3{qePthhpZHGwS_im+j_SvW^{t1m449HwY@?Sk1YXZ zs#9%&&?w0z-NMdCx^f6X`{_YGTOe3LoE;lQdpuL!tA+w?8VIbC%QJegpYL0yk9eO` z_B{hqOp36F{(@P3QG~D@5j=74gzyw(-q{18uB4 zYQXQAd7$qSWA4?a2S3MmH0%8#D&kF8zCE>ut&}{tU#9l1JMuaH)WW;RSjp3#Oxvr0 zLI^?j9kgoQenXlKWL)xT&C_ zI%oUdXTuYu@{e^Rwj$=df-MH1WszIcmRwzwqv^@m4~zlMYW4~RvgM_h80gL3hjNJ$ zn*F!9)EF;gidp2<%Q)3XT-P7x&WtRVL*nIrP3Nj}bZyqT@A&V+7-XnnTch3FJ_ zm%Z$_CW?+BOEYm^b8IPA%L^mb>L{zdHRkR8Z2W1Sw2{ClSpEP;?Y-W!-gJA^EVNpe z11?O`C7{ir(^oP0F@-ZZ_}HeUB$IOSCqnA)>(YLYTt^04b-jkCI9-{--kGV zBGmZc7t-fNPh*OGLci`|{XMl@G}9wRhyM3qaVmEcdP8?B!5Ur$N|9orbkBB34NcQ= z$)HpuU27CyPAAmt=U2=r*)y@fumg<=j9%d;YFL1w z&y8CvMCz>8f;~EPO;nv{@vFj)tbZS)(g|?vw1A}H!P30c%k}lEjNPFRKmWklx=AZa z4hqd~=~0`#Lhl`81LaEFe|p^RaM)9QnIxK4p7nZW0rIvy9-g})nW#zSGqvRbaEX)2 z9BnvN-jK>y-9e8Gemq{R-NJI=8^EnO_p-+&cO)jNax z2hoy(CcATB4c*eyV)#s3bmQw!UWiliPS9FpI)0gAIFAh7I^7L zBB)Px35TbzAhY)oEnJ9?f48z3EwY<#gRNq}f3)L}AL>Zun9#iyWq4qh3PaMB0((w~ zy5rRB=+XSAhmby|`OZe&{@u^?$TR&Ul?7oEDb_CX^&h;P4S9?k;3OkTn($a1B|Rd0 zyLmh6tCH$PA>p$zu4)a=ho3>j*FQor<=bmwVN-9TM@=JDE!CgC^=UW~;msoy6Jr9O z&eS_=T-Fj1lni7U1Q591I_%6^a^C+g;!s+8vnVmA%Z?(Z+GG=Yyhae*6tPQhOcA7~ zGt}3Z;UHy;SsU*9`9RxLp8!^XiHBGK!G-bMKThhKrvE^SsKghl2xil=A4LXGClA~l z)mkUpWp@Q-+?zpCqIQ(0x(Z|9-?(aX5=@a_E_hLYc_`g|8st-~*sWwVTgV~Xos;Le zjZAQ5wRT7Gy_BRIcUmOlwSumRLGMC@wm5tJd8$>AltLd<7ov;Hp7-@l&IB{~G{mOO zNo>Y$M+;tHML6cjJqRSG3gyrxs4>g}JHN9q&lFrElUuKNu*!fS4wAwYJ@w|Vr6D*1 zCY_H;CP|faH)$Ps^;lyA|jWG|Hx#*#-^6g;3LU+5PRYJA&Zd-1VmH`5__4AGm zJ}8CV9>8)>i4+qz9jL*b$rj(1tD_tdPVag|O>k$L7`;zWD_@Aag*d`ol@&v`K0JtBBVhVHBU=Qkvpvh40%;|w2b5W}+tB1~FBmJB6jmTgoeHqKsz)k%^ppPGpj)HM-S zPzU*JKa^=nWy$uictF6!qgZr9Be~6^Nwz|ehrB&WD{>J>N_?%p+LzQj7xoZN6kY$u@>W#fgV#%t;vVPrDvQ+s^Qi(_AK9Dts4bMYEte= z&XnK&03rEU>ba$|EK;0EtKVsWsG<&#fy~h~fy`#H$i0WzF2BF8Sa3js6>dsqO!+F5 zDBHSsy}wsNDb^o^cUP#e{yN^4@4KV7&Yx~oXBraCpfS#nW;c&>19PY!$-H(Qa^6D@ zP70ZPDK1x8S#1#ug@^atMu606ts8q^7t?A-=8{gtddnh5+HS$B@%Nl1$5(VE%dv~WjOLsle4*e2)-CIc1 z&2fIrJ3NbNkS=lqC*TI~fS!MgZJ(ZEkr=%Lniexf$-q_~p2t<$)Ty5`HG6>r)f^3Z zHa`EU7EHGPTI|yCk=+gH++ed_Z|)#igF3Cbf}TfItfHvhN#=T zN0H3NM3BTL5}%Xs%|!>Mwc-VF&ev=8XT_T8$aD?dq!qqA5Dubkcg3wt=%z=K+5Ih< z)>YxDPi{4P#5o`F*nz}&Th%I^#e2+7?z22WDQd0HW{o}#pZzwL@LCGvbRV3rDztWE zU0CH|4gh-qKd*BwTkDg&n={1r;Ys~DbPC&^xJHs{(e%Tju5gJVXvCmn_U|0J(R3M` zw?~Zq$9tr5{$Z#!@na8Av2NZXf#+2=!y~sEwvr~%zf)?X>3d>-O23#HoZxvll9os0 z)Y`e1{LV1qxpJc@#jtn?<-MW0dQ^92)VG7@2qIx-VG;g!EdW*%vD1R_AS)u8E7c?9 zvnRiPoT^YpDls}w6AyUhaMo6vNq&#PO{Jnt>9obSCkk#@@<;SnIqzW_7+xjPse1QH zdnxM;)J@a#Cr7Lk^piwqvq<|42W)m-Z|D;7j0T6hGKjr)iu&zKjzmh=am&D2$8%SW zYN6z&4fUA*CoLb2`wUwkx|9y3X^E6W_iM1VcpQ_Z+lA8%Px>?n5|NQAMdZSKmM{?&s;3yH#US)HK|qX26+v9cu7E|56mI zohX7*-?H%6su*8{Wy!rI`<#rCU(S0}T<>-r#(|G&jT^3(t<@^#fo7dE%lD(cXV?@9({(t5xgn$)Z@TX+Yl@B6({C#+I&-~{~FWqzPcW* zr*8m#@?E&GO+Yj%%$}jPtG>95>*<#oC(=DdsGQMbU3J)m*&^6=VV&y&l^f~Yi~Hvt zHEM!VFq(cQeEl%OCA+<6G#D{nTLvTORG`=z{)j$7e@Gy)WA&QH%NSmd?*ZxL2{uyP z2)~Zvw3jwj@gBxc9R5@Epw1-UY&OHR{F25Jl9oZ^l4&puxj?%u_=-ha97AxZ_>+T& zd()*XVfBjMk;L-SICcl#Zac`PT6M(|N4cdJEIY5bb1j^25dVS%%q$&V3`M3LLFOG7 zgoMw>xV%T$=AP&goqcm}oOjbC8pTyliSsH%U_m#fAgz4>Ell&mawo5%*WA*d>?%a; z6;|8#NzFSpd2ZE@E%lRAU-GHfS+O)j3-zQ2$$lF0>|^1j;81V4m?ZV8H9##UK!z)F zDm@rR%Sx|!k)V2UHn0_$v@ZcCPh1kBwUuSr?O?Glh?d#waHdWnnGUujsVnJf=+yQs zsUO>>e*qWW7kcV86?n$~DUa-v={~InQR64WmT~VzV8vW*xj~53L!EfjdGtq@lJBSa zN&C;o?SPMyNCTtQ1sO=ZyAi+$q3+AXy!o)&iLpg{nWa9%>67=W;dxfx?<%Z|zKUYP zllhA>0@6JAJK8_E7w3QkhE11YsTSvJ-%!L2<*EXPTnI}(cxt%_dsWH7#7WR%0_}6B z`2%X-H3nOFOQje0g@=`D%_5%3)Uv%z}y~jhX|m^Km*4Q z06xMeb!hiFS%UTxs1V`O3G~?Vb|LRvg{{CUs1jqoO@Al8Z*4^B9483m+gMpej@x%gLxmb}P5fs(kl$z5sAYU@l*_gFpLsMHdr7iUMcJOfu4;Fe4!@?958z=$OD$Fq2G&>yhs^gc}z zFe2+Fg`6_9Y4vX}>A~jB=48osgZ16OlEJp~B;3DqexfUe=T5O60JYsl2D~E2P>F3&(88{T zI%;9Zp|~m0!|rV-n$d>!;Fx|w@TJp*{@dwqF4gTD10olJZOiG0kwctjz1JSk0hofD zZ+M5u1=^L4fQtS&v|B=o)rsuuG~iWbjhb+h1X1>a*KLYS`kX~5YvNit^LRxd>i$k(3+TmZ ztZW`%t_iXEu3Ar}u9SY20o+dXx%|K%Bl?DD{ z1L?&W1jq=7?rNQV-O;Ba(CMDv5T;DoHfRjJT#VG`cUH2tKe+9u96tS~qV`;KxH? zLOG`&eKo`xZf&CWE)$h@jq99uZ~Z(TC%jj+!JzW#M%m=WxCG>`#K^b=04I;FV zxl0f6yHVOu`36y<^}zszwnft09V-&h99>X4So$kXIgNeaLPaKX$EL`t6R_KcaO_5= z^y%f^d`pI}VkD^pb&8x&v{Mr5YkGjx8Ql-M04Ykk(;e)b2duNB74!D{ zTo)Y7txXry1{~)X(9#WMKR?d%Xvq$_I6loVfW#umsmY-(ljq4H!?FU-ucWUb@Oe0A zC(EX(9RfPbCNv*Vrd)LO*|njm#DI8yM>(g5?um0VTV<)N^x}FAtGlqp(@hW5Y^o8=v2+b>=3C3kgGh)P&h620-5uWN zSraS5=3trchmEN?ToJBefy_F{l(1Wq2+8x;-Yv%4_Zlx3}d=Ld}3~86f zBHfG8O4`LFDm#>fYtg7fu)R%9sjJ zT?Z~}Nb5Ou9ONDzqnuf!YM-tjOCOSPx6UqgCMe}@i+ovY_d-v~NvocrC3WfceIbp% zQ~kZB9x)HeG-IhV%d4JI&f4;>kqszMIr4f8qgFF&H`jcCe#eV071M5U;gCFTX+X*+ z-*c0sJ)TgT(Z8GM&tP9WzUN{dwcpcpsW>kRkNS0Z=*H1dC4fg+xfg`E2!b4}_d%BX z)l2wxN`5CsLd2q9c7M`AF1{0rD(t(Rlv1&bFgrVT`wsLkcX*)ffl0R|+5K++{{72x zZ&)BoXy*h>c*b)RdEfIpHG4~7LveE36PGvp<+G#b&Ge-hhSlb%l@hpuwp-?_ zp#C#lD2*=6@x7#nb)6fw33K9Fpl3YyXYFJ}G&qI1bAE|?O;KYe+-2iHJF;D`%|$TM zzs)^($Qwe!y_SMeG1#}bwH6gJjx0s%wP6oT+(9?1ObN^`d+1R$3!&cAg#|7@YoF*o zzTzc!VFM2gR|qG^xx3gqN28hE!@eO@yDQ1h0nNLb6x&^PkN!52CP`PbL&X+$nf_)* z6hN`;NE}t8df?x3d5n;dbl$o=Q69s;_Ov;3fOny6e|y4b5Bwc7FMUC0*d{k~mnaH4 zZIe^B`sZw-jd321DRWUuXTBhWPresw)=>v8Dy~MYX^G;RcxbRO9`YVP!esW z21KlsFXr&O(5<1)ZH0>e{1SCdxsEewuZc>us-QKKW9loG=4ZDyo>wy`=OxX>lzpCk zZj95MeyamQ?4&LzLpUvXq zn*ZPKQ_yS+4C~SCzN>rs6wuM>xjCBYl1gTW8~MJHNgyINHr6Gy)6K=D+WRTM^jCUX z8Yg~zkyWq)<}P5JdnctRH^l@-bVkWzoPmpJOvSDJgAoq_m46f}DZfJK>q&yp4*>m( zk+i}EPEn+#!RGZ?(z6|kM$3V?YTBWma4O{K?o6rwJ%C;#&f&GpOF|Nj`1> zOr8^Kzi{DzR*k}Cz_8J)NpqgCUlS7(E=_LRT4Jy(H?KH60A>`SV$`)2Ft)Dre^78QLMgKXFoHE%U7Aieec1( zW(@*Bin{yAW6zYaEJ<;rnlh7iDY#yhxh*LC-|$r>zw|e`ZVo<|$5eY@(6zpoN7cU> zx@MA1d34Dwkn);fs=*2PbFF!fcQ{Zg#OWS@mz_Le8l>Vz`@kMmmP(5JKD|`=P^*pt z5EEaNx7us@#Ya;~@?=~NnY%PQtEb;CAAL8tg6F4kk@`nBo6t_du&GZGg2K&7@`u1D zMSu?8X|Cl}zB@G>@_B$rUZ>NYX~^%vMBL821_Q;JfX`pc%OhE8!)arNlDJ;_h{}^Z zt<$F8A=%yFs5#}DCDP16dH&3M6WKC;C=rIb5C(j{eEbz+l%N(IJ&#Ydr*t$;MwI9kJ+yHTm+_rh)$p Dx1Yg# literal 0 HcmV?d00001 diff --git a/src/TcoAimTtiPowerSupply/assets/expandedQl.png b/src/TcoAimTtiPowerSupply/assets/expandedQl.png new file mode 100644 index 0000000000000000000000000000000000000000..ecbdc108fbd594a19e969d67a6f78a38bee665fb GIT binary patch literal 61508 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¯k5U; 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 bb@KRWRn7fV%}4HRHqA8yv){@t-@5;A - /// Looks up a localized string similar to Acc.. + /// Looks up a localized string similar to Command description.. /// - public static string Acc { + public static string ShowCommandDescription { get { - return ResourceManager.GetString("Acc", resourceCulture); - } - } - - ///

- /// Looks up a localized string similar to Acceleration. - /// - public static string Acceleration { - get { - return ResourceManager.GetString("Acceleration", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Are you sure to create new set?. - /// - public static string AskCreate { - get { - return ResourceManager.GetString("AskCreate", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Are you sure to delete set?. - /// - public static string AskDelete { - get { - return ResourceManager.GetString("AskDelete", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Are you sure to load positions?. - /// - public static string AskLoad { - get { - return ResourceManager.GetString("AskLoad", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Are you sure to move position:. - /// - public static string AskMovePos { - get { - return ResourceManager.GetString("AskMovePos", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Are you sure to save positions?. - /// - public static string AskSave { - get { - return ResourceManager.GetString("AskSave", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Are you sure to change position:. - /// - public static string AskTeachPos { - get { - return ResourceManager.GetString("AskTeachPos", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Attention. - /// - public static string Attention { - get { - return ResourceManager.GetString("Attention", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Axis. - /// - public static string Axis { - get { - return ResourceManager.GetString("Axis", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Create. - /// - public static string Create { - get { - return ResourceManager.GetString("Create", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Dec.. - /// - public static string Dec { - get { - return ResourceManager.GetString("Dec", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Deceleration. - /// - public static string Deceleration { - get { - return ResourceManager.GetString("Deceleration", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Define Repository Handler first!. - /// - public static string DefineRepository { - get { - return ResourceManager.GetString("DefineRepository", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Delete selected. - /// - public static string DeleteSelected { - get { - return ResourceManager.GetString("DeleteSelected", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Jerk. - /// - public static string Jerk { - get { - return ResourceManager.GetString("Jerk", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Load. - /// - public static string Load { - get { - return ResourceManager.GetString("Load", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Move to position. - /// - public static string MoveToPosition { - get { - return ResourceManager.GetString("MoveToPosition", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Name. - /// - public static string Name { - get { - return ResourceManager.GetString("Name", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Position. - /// - public static string Position { - get { - return ResourceManager.GetString("Position", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Positions. - /// - public static string Positions { - get { - return ResourceManager.GetString("Positions", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Save. - /// - public static string Save { - get { - return ResourceManager.GetString("Save", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Selected. - /// - public static string Selected { - get { - return ResourceManager.GetString("Selected", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Select position first!. - /// - public static string SelectFirst { - get { - return ResourceManager.GetString("SelectFirst", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Select SetId first!. - /// - public static string SelectSetId { - get { - return ResourceManager.GetString("SelectSetId", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Set Id. - /// - public static string SetId { - get { - return ResourceManager.GetString("SetId", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Write SetId first!. - /// - public static string SetNewName { - get { - return ResourceManager.GetString("SetNewName", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Teach. - /// - public static string Teach { - get { - return ResourceManager.GetString("Teach", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Vel.. - /// - public static string Vel { - get { - return ResourceManager.GetString("Vel", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Velocity. - /// - public static string Velocity { - get { - return ResourceManager.GetString("Velocity", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Write default values. - /// - public static string WriteDefaultValues { - get { - return ResourceManager.GetString("WriteDefaultValues", resourceCulture); + return ResourceManager.GetString("ShowCommandDescription", resourceCulture); } } } diff --git a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Properties/strings.resx b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Properties/strings.resx index 04ec9cab3..0879d23b8 100644 --- a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Properties/strings.resx +++ b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Properties/strings.resx @@ -117,97 +117,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Acc. - - - Acceleration - - - Are you sure to create new set? - - - Are you sure to delete set? - - - Are you sure to load positions? - - - Are you sure to move position: - - - Are you sure to save positions? - - - Are you sure to change position: - - - Attention - - - Axis - - - Create - - - Dec. - - - Deceleration - - - Define Repository Handler first! - - - Delete selected - - - Jerk - - - Load - - - Move to position - - - Name - - - Position - - - Positions - - - Save - - - Selected - - - Select position first! - - - Select SetId first! - - - Set Id - - - Write SetId first! - - - Teach - - - Vel. - - - Velocity - - - Write default values + + Command description. \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Properties/strings.sk-Sk.resx b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Properties/strings.sk-Sk.resx index 075be2f1f..4bbb7f894 100644 --- a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Properties/strings.sk-Sk.resx +++ b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Properties/strings.sk-Sk.resx @@ -117,97 +117,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Acc. - - - Akcelerácia - - - Prajete si vytvoriť novu sadu? - - - Prajete si vytmazať sadu? - - - Prajete si nahrať pozicie? - - - Prajete sa presunúť na poziciu: - - - Prajete si uložiťpozicie? - - - Prajete si naučiť novú pozíciu? - - - Upozornenie - - - Os - - - Vytvor - - - Dec. - - - Spomalenie - - - Zadefinujte obsluhu repozitáru! - - - Vymažte označeny - - - Trh - - - Nahraj - - - Do pozicie - - - Meno - - - Pozícia - - - Pozície - - - Ulož - - - Označené - - - Najskôr označ pozíciu! - - - Najskôr označ sadu údajov! - - - Sada udajov ID - - - Najskôr zadaj nový názov sady! - - - Nauč - - - Vel. - - - Rýchlosť - - - Zapiš vychodzie hodnoty + + Popis príkazu \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/Converters.cs b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/Converters.cs new file mode 100644 index 000000000..c17ad252b --- /dev/null +++ b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/Converters.cs @@ -0,0 +1,156 @@ +using System; +using System.Globalization; +using System.Linq; +using System.Windows.Data; +using System.Windows.Markup; +using System.Windows; + +namespace TcoAimTtiPowerSupply +{ + public class TcoQlSeriesGetCommandDescriptionConverter : MarkupExtension, IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + string command = Enum.GetName(typeof(eTcoQWlSeriesSupplyGetCommands_v_1_x_x), value); + + if (string.IsNullOrEmpty(command)) + { + return string.Empty; + } + var selectedCmd = QlSeriesCommands.Commands.Where(p => p.Type == eQlCommandType.GetCommand).Where(q => q.Key == command).FirstOrDefault(); + + return String.Format("\r\n Syntax:{0}\r\n\r\n {1}", selectedCmd.Syntax, selectedCmd.HelpDescription); + + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return null; + } + + public override object ProvideValue(IServiceProvider serviceProvider) + { + return this; + } + } + + public class TcoQlSeriesSetCommandDescriptionConverter : MarkupExtension, IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + string command = Enum.GetName(typeof(eTcoQWlSeriesSupplySetCommands_v_1_x_x), value); + + if (string.IsNullOrEmpty(command)) + { + return string.Empty; + } + var selectedCmd = QlSeriesCommands.Commands.Where(p => p.Type == eQlCommandType.SetCommand).Where(q => q.Key == command).FirstOrDefault(); + + return String.Format("\r\n Syntax:{0}\r\n\r\n {1}", selectedCmd.Syntax, selectedCmd.HelpDescription); + + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return null; + } + + public override object ProvideValue(IServiceProvider serviceProvider) + { + return this; + } + } + public class TcoQlSeriesGetNValueVisibilityConverter : MarkupExtension, IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + string command = Enum.GetName(typeof(eTcoQWlSeriesSupplyGetCommands_v_1_x_x), value); + + if (string.IsNullOrEmpty(command)) + { + return Visibility.Collapsed; + } + var selectedCmd = QlSeriesCommands.Commands.Where(p => p.Type == eQlCommandType.GetCommand).Where(q => q.Key == command).FirstOrDefault(); + + if (selectedCmd.Syntax.Contains("")) + { + return Visibility.Visible; + } + return Visibility.Collapsed; + + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return null; + } + + public override object ProvideValue(IServiceProvider serviceProvider) + { + return this; + } + } + public class TcoQlSeriesSetNValueVisibilityConverter : MarkupExtension, IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + string command = Enum.GetName(typeof(eTcoQWlSeriesSupplySetCommands_v_1_x_x), value); + + if (string.IsNullOrEmpty(command)) + { + return Visibility.Collapsed; + } + + var selectedCmd = QlSeriesCommands.Commands.Where(p => p.Type == eQlCommandType.SetCommand).Where(q => q.Key == command).FirstOrDefault(); + + if (selectedCmd.Syntax.Contains("")) + { + return Visibility.Visible; + } + return Visibility.Collapsed; + + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return null; + } + + public override object ProvideValue(IServiceProvider serviceProvider) + { + return this; + } + } + + public class TcoQlSeriesSetNrfValueVisibilityConverter : MarkupExtension, IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + string command = Enum.GetName(typeof(eTcoQWlSeriesSupplySetCommands_v_1_x_x), value); + + if (string.IsNullOrEmpty(command)) + { + return Visibility.Collapsed; + } + + var selectedCmd = QlSeriesCommands.Commands.Where(p => p.Type == eQlCommandType.SetCommand).Where(q => q.Key == command).FirstOrDefault(); + + if (selectedCmd.Syntax.Contains("")) + { + return Visibility.Visible; + } + return Visibility.Collapsed; + + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return null; + } + + public override object ProvideValue(IServiceProvider serviceProvider) + { + return this; + } + } + } diff --git a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/TcoQl355P_v_1_x_xServiceView.xaml b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/TcoQl355P_v_1_x_xServiceView.xaml new file mode 100644 index 000000000..6702c8503 --- /dev/null +++ b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/TcoQl355P_v_1_x_xServiceView.xaml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/TcoQl355P_v_1_x_xServiceView.xaml.cs b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/TcoQl355P_v_1_x_xServiceView.xaml.cs new file mode 100644 index 000000000..bd82708c7 --- /dev/null +++ b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/TcoQl355P_v_1_x_xServiceView.xaml.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.ObjectModel; +using System.Globalization; +using System.Linq; +using System.Windows; +using System.Windows.Controls; + + +namespace TcoAimTtiPowerSupply +{ + public partial class TcoQl355P_v_1_x_xServiceView : UserControl + { + + + public TcoQl355P_v_1_x_xServiceView() + { + InitializeComponent(); + } + + } + + +} + diff --git a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/TcoQl355P_v_1_x_xViewModel.cs b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/TcoQl355P_v_1_x_xViewModel.cs new file mode 100644 index 000000000..5fdc6be3c --- /dev/null +++ b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupply.Wpf/Ql series/TcoQl355P_v_1_x_xViewModel.cs @@ -0,0 +1,31 @@ +using System; +using System.Linq; +using Vortex.Presentation.Wpf; + + +namespace TcoAimTtiPowerSupply + +{ + public class TcoQl355P_v_1_x_xViewModel + + : RenderableViewModel + { + + public TcoQl355P_v_1_x_xViewModel () + { + + + } + public TcoQl355P_v_1_x_x Component { get; private set; } + public override object Model { get => Component; set { Component = value as TcoQl355P_v_1_x_x; } } + + public bool ShowGetCommand { get; set; } + } + public class TcoQl355P_v_1_x_xServiceViewModel : TcoQl355P_v_1_x_xViewModel + { + + + } + + +} \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/Properties/Localizations.Designer.cs b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/Properties/Localizations.Designer.cs index 3099ba940..fc80909b2 100644 --- a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/Properties/Localizations.Designer.cs +++ b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/Properties/Localizations.Designer.cs @@ -61,83 +61,11 @@ internal Localizations() { } /// - /// Looks up a localized string similar to is OFF . + /// Looks up a localized string similar to Command started.. /// - public static string ____is_OFF___ { + public static string ___Command_started___ { get { - return ResourceManager.GetString("____is_OFF___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Waiting for signal: . - /// - public static string ____Waiting_for_signal____ { - get { - return ResourceManager.GetString("____Waiting_for_signal____", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Action number. - /// - public static string ___Action_number__ { - get { - return ResourceManager.GetString("___Action_number__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Actual coordinates workobject tool. - /// - public static string ___Actual_coordinates_workobject_tool__ { - get { - return ResourceManager.GetString("___Actual_coordinates_workobject_tool__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Actual coordinates world. - /// - public static string ___Actual_coordinates_world__ { - get { - return ResourceManager.GetString("___Actual_coordinates_world__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Auto stop 1. - /// - public static string ___Auto_stop_1__ { - get { - return ResourceManager.GetString("___Auto_stop_1__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Auto stop 2. - /// - public static string ___Auto_stop_2__ { - get { - return ResourceManager.GetString("___Auto_stop_2__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to AutoOn. - /// - public static string ___AutoOn__ { - get { - return ResourceManager.GetString("___AutoOn__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Battery Low. - /// - public static string ___Battery_Low__ { - get { - return ResourceManager.GetString("___Battery_Low__", resourceCulture); + return ResourceManager.GetString("___Command_started___", resourceCulture); } } @@ -151,1199 +79,101 @@ public static string ___Config__ { } /// - /// Looks up a localized string similar to Control. - /// - public static string ___Control__ { - get { - return ResourceManager.GetString("___Control__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Coordinates. - /// - public static string ___Coordinates__ { - get { - return ResourceManager.GetString("___Coordinates__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to CycleOn. - /// - public static string ___CycleOn__ { - get { - return ResourceManager.GetString("___CycleOn__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Drive error no . - /// - public static string ___Drive_error_no___ { - get { - return ResourceManager.GetString("___Drive_error_no___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Emergency stop. - /// - public static string ___Emergency_stop__ { - get { - return ResourceManager.GetString("___Emergency_stop__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Emergency stop 1. - /// - public static string ___Emergency_stop_1__ { - get { - return ResourceManager.GetString("___Emergency_stop_1__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Emergency stop 2. - /// - public static string ___Emergency_stop_2__ { - get { - return ResourceManager.GetString("___Emergency_stop_2__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Emergency stop acknowledge. - /// - public static string ___Emergency_stop_acknowledge__ { - get { - return ResourceManager.GetString("___Emergency_stop_acknowledge__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Emergency stop active. - /// - public static string ___Emergency_stop_active__ { - get { - return ResourceManager.GetString("___Emergency_stop_active__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Enable 1. - /// - public static string ___Enable_1__ { - get { - return ResourceManager.GetString("___Enable_1__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Enable 2. - /// - public static string ___Enable_2__ { - get { - return ResourceManager.GetString("___Enable_2__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Error. - /// - public static string ___Error__ { - get { - return ResourceManager.GetString("___Error__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Error acknowledge. - /// - public static string ___Error_acknowledge__ { - get { - return ResourceManager.GetString("___Error_acknowledge__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Event ID. - /// - public static string ___Event_ID__ { - get { - return ResourceManager.GetString("___Event_ID__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to General stop 1. - /// - public static string ___General_stop_1__ { - get { - return ResourceManager.GetString("___General_stop_1__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to General stop 2. - /// - public static string ___General_stop_2__ { - get { - return ResourceManager.GetString("___General_stop_2__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Global robot speed. - /// - public static string ___Global_robot_speed__ { - get { - return ResourceManager.GetString("___Global_robot_speed__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Global speed. - /// - public static string ___Global_speed__ { - get { - return ResourceManager.GetString("___Global_speed__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to IN. - /// - public static string ___IN__ { - get { - return ResourceManager.GetString("___IN__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to In area 1. - /// - public static string ___In_area_1__ { - get { - return ResourceManager.GetString("___In_area_1__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to In area 2. - /// - public static string ___In_area_2__ { - get { - return ResourceManager.GetString("___In_area_2__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to In area 3. - /// - public static string ___In_area_3__ { - get { - return ResourceManager.GetString("___In_area_3__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to In area 4. - /// - public static string ___In_area_4__ { - get { - return ResourceManager.GetString("___In_area_4__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to In position. - /// - public static string ___In_position__ { - get { - return ResourceManager.GetString("___In_position__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to In position 1. + /// Looks up a localized string similar to Convert Message. /// - public static string ___In_position_1__ { + public static string ___Convert_Message__ { get { - return ResourceManager.GetString("___In_position_1__", resourceCulture); + return ResourceManager.GetString("___Convert_Message__", resourceCulture); } } /// - /// Looks up a localized string similar to In position 2. + /// Looks up a localized string similar to Get Command. /// - public static string ___In_position_2__ { + public static string ___Get_Command__ { get { - return ResourceManager.GetString("___In_position_2__", resourceCulture); + return ResourceManager.GetString("___Get_Command__", resourceCulture); } } /// - /// Looks up a localized string similar to In position 3. + /// Looks up a localized string similar to N . /// - public static string ___In_position_3__ { + public static string ___N___ { get { - return ResourceManager.GetString("___In_position_3__", resourceCulture); + return ResourceManager.GetString("___N___", resourceCulture); } } /// - /// Looks up a localized string similar to In position 4. + /// Looks up a localized string similar to NR1. /// - public static string ___In_position_4__ { + public static string ___NR1__ { get { - return ResourceManager.GetString("___In_position_4__", resourceCulture); + return ResourceManager.GetString("___NR1__", resourceCulture); } } /// - /// Looks up a localized string similar to Interuption actually running instruction. + /// Looks up a localized string similar to NR2. /// - public static string ___Interuption_actually_running_instruction__ { + public static string ___NR2__ { get { - return ResourceManager.GetString("___Interuption_actually_running_instruction__", resourceCulture); + return ResourceManager.GetString("___NR2__", resourceCulture); } } /// - /// Looks up a localized string similar to Invalid reference: . + /// Looks up a localized string similar to NRF. /// - public static string ___Invalid_reference____ { + public static string ___NRF__ { get { - return ResourceManager.GetString("___Invalid_reference____", resourceCulture); + return ResourceManager.GetString("___NRF__", resourceCulture); } } /// - /// Looks up a localized string similar to Invalid reference StartMotorAndProgramTask. + /// Looks up a localized string similar to Nvalue. /// - public static string ___Invalid_reference_StartMotorAndProgramTask__ { + public static string ___Nvalue__ { get { - return ResourceManager.GetString("___Invalid_reference_StartMotorAndProgramTask__", resourceCulture); + return ResourceManager.GetString("___Nvalue__", resourceCulture); } } /// - /// Looks up a localized string similar to Load and run program. + /// Looks up a localized string similar to Raw Response. /// - public static string ___Load_and_run_program__ { + public static string ___Raw_Response__ { get { - return ResourceManager.GetString("___Load_and_run_program__", resourceCulture); + return ResourceManager.GetString("___Raw_Response__", resourceCulture); } } /// - /// Looks up a localized string similar to Load program. - /// - public static string ___Load_program__ { - get { - return ResourceManager.GetString("___Load_program__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Master mode. - /// - public static string ___Master_mode__ { - get { - return ResourceManager.GetString("___Master_mode__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Motion supervision. - /// - public static string ___Motion_supervision__ { - get { - return ResourceManager.GetString("___Motion_supervision__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Motor off. - /// - public static string ___Motor_off__ { - get { - return ResourceManager.GetString("___Motor_off__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Motor off state. - /// - public static string ___Motor_off_state__ { - get { - return ResourceManager.GetString("___Motor_off_state__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Motor on. - /// - public static string ___Motor_on__ { - get { - return ResourceManager.GetString("___Motor_on__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Motor on state. - /// - public static string ___Motor_on_state__ { - get { - return ResourceManager.GetString("___Motor_on_state__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Move active. - /// - public static string ___Move_active__ { - get { - return ResourceManager.GetString("___Move_active__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Move inactive. - /// - public static string ___Move_inactive__ { - get { - return ResourceManager.GetString("___Move_inactive__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Moving to position ID. + /// Looks up a localized string similar to Restore. /// - public static string ___Moving_to_position_ID__ { + public static string ___Restore__ { get { - return ResourceManager.GetString("___Moving_to_position_ID__", resourceCulture); + return ResourceManager.GetString("___Restore__", resourceCulture); } } /// - /// Looks up a localized string similar to OUT. + /// Looks up a localized string similar to Set Command. /// - public static string ___OUT__ { + public static string ___Set_Command__ { get { - return ResourceManager.GetString("___OUT__", resourceCulture); + return ResourceManager.GetString("___Set_Command__", resourceCulture); } } /// - /// Looks up a localized string similar to PN Error. + /// Looks up a localized string similar to Status. /// - public static string ___PN_Error__ { + public static string ___Status__ { get { - return ResourceManager.GetString("___PN_Error__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Point number. - /// - public static string ___Point_number__ { - get { - return ResourceManager.GetString("___Point_number__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to PointNumber. - /// - public static string ___PointNumber__ { - get { - return ResourceManager.GetString("___PointNumber__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Program execution error. - /// - public static string ___Program_execution_error__ { - get { - return ResourceManager.GetString("___Program_execution_error__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Program execution error see robot panel for details. - /// - public static string ___Program_execution_error_see_robot_panel_for_details__ { - get { - return ResourceManager.GetString("___Program_execution_error_see_robot_panel_for_details__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Program pointer moved. - /// - public static string ___Program_pointer_moved__ { - get { - return ResourceManager.GetString("___Program_pointer_moved__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Program start. - /// - public static string ___Program_start__ { - get { - return ResourceManager.GetString("___Program_start__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Program start at main. - /// - public static string ___Program_start_at_main__ { - get { - return ResourceManager.GetString("___Program_start_at_main__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Program stop. - /// - public static string ___Program_stop__ { - get { - return ResourceManager.GetString("___Program_stop__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Restore. - /// - public static string ___Restore__ { - get { - return ResourceManager.GetString("___Restore__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Robot Emergency Stop Reset. - /// - public static string ___Robot_Emergency_Stop_Reset__ { - get { - return ResourceManager.GetString("___Robot_Emergency_Stop_Reset__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Robot Error Reset. - /// - public static string ___Robot_Error_Reset__ { - get { - return ResourceManager.GetString("___Robot_Error_Reset__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Robot is not in Auto. - /// - public static string ___Robot_is_not_in_Auto__ { - get { - return ResourceManager.GetString("___Robot_is_not_in_Auto__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Safety circuit open. - /// - public static string ___Safety_circuit_open__ { - get { - return ResourceManager.GetString("___Safety_circuit_open__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Safety Error . - /// - public static string ___Safety_Error___ { - get { - return ResourceManager.GetString("___Safety_Error___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Safety OK. - /// - public static string ___Safety_OK__ { - get { - return ResourceManager.GetString("___Safety_OK__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Speed limitation. - /// - public static string ___Speed_limitation__ { - get { - return ResourceManager.GetString("___Speed_limitation__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start at Main. - /// - public static string ___Start_at_Main__ { - get { - return ResourceManager.GetString("___Start_at_Main__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start at Main finished with error.. - /// - public static string ___Start_at_Main_finished_with_error___ { - get { - return ResourceManager.GetString("___Start_at_Main_finished_with_error___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start at Main started.. - /// - public static string ___Start_at_Main_started___ { - get { - return ResourceManager.GetString("___Start_at_Main_started___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start at Main was aborted, while not yet completed!. - /// - public static string ___Start_at_Main_was_aborted__while_not_yet_completed___ { - get { - return ResourceManager.GetString("___Start_at_Main_was_aborted__while_not_yet_completed___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start at Main was completed successfully.. - /// - public static string ___Start_at_Main_was_completed_successfully___ { - get { - return ResourceManager.GetString("___Start_at_Main_was_completed_successfully___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start motors. - /// - public static string ___Start_motors__ { - get { - return ResourceManager.GetString("___Start_motors__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start motors finished successfully.. - /// - public static string ___Start_motors__finished_successfully___ { - get { - return ResourceManager.GetString("___Start_motors__finished_successfully___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start motors, program and movements finished successfully.. - /// - public static string ___Start_motors__program_and_movements_finished_successfully___ { - get { - return ResourceManager.GetString("___Start_motors__program_and_movements_finished_successfully___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start motors, program and movements finished with error.. - /// - public static string ___Start_motors__program_and_movements_finished_with_error___ { - get { - return ResourceManager.GetString("___Start_motors__program_and_movements_finished_with_error___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start motors, program and movements stared.. - /// - public static string ___Start_motors__program_and_movements_stared___ { - get { - return ResourceManager.GetString("___Start_motors__program_and_movements_stared___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start motors, program and movements was aborted, while not yet completed!. - /// - public static string ___Start_motors__program_and_movements_was_aborted__while_not_yet_completed___ { - get { - return ResourceManager.GetString("___Start_motors__program_and_movements_was_aborted__while_not_yet_completed___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start motors was aborted.. - /// - public static string ___Start_motors__was_aborted___ { - get { - return ResourceManager.GetString("___Start_motors__was_aborted___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start motors and program. - /// - public static string ___Start_motors_and_program__ { - get { - return ResourceManager.GetString("___Start_motors_and_program__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start motors and program finished successfully.. - /// - public static string ___Start_motors_and_program_finished_successfully___ { - get { - return ResourceManager.GetString("___Start_motors_and_program_finished_successfully___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start motors and program finished with error.. - /// - public static string ___Start_motors_and_program_finished_with_error___ { - get { - return ResourceManager.GetString("___Start_motors_and_program_finished_with_error___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start motors and program started.. - /// - public static string ___Start_motors_and_program_started___ { - get { - return ResourceManager.GetString("___Start_motors_and_program_started___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start motors and program was aborted.. - /// - public static string ___Start_motors_and_program_was_aborted___ { - get { - return ResourceManager.GetString("___Start_motors_and_program_was_aborted___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start motors finished with error.. - /// - public static string ___Start_motors_finished_with_error___ { - get { - return ResourceManager.GetString("___Start_motors_finished_with_error___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start motors program and movements. - /// - public static string ___Start_motors_program_and_movements__ { - get { - return ResourceManager.GetString("___Start_motors_program_and_movements__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start motors started.. - /// - public static string ___Start_motors_started___ { - get { - return ResourceManager.GetString("___Start_motors_started___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start movements. - /// - public static string ___Start_movements__ { - get { - return ResourceManager.GetString("___Start_movements__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start movements finished successfully.. - /// - public static string ___Start_movements_finished_successfully___ { - get { - return ResourceManager.GetString("___Start_movements_finished_successfully___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start movements finished with error.. - /// - public static string ___Start_movements_finished_with_error___ { - get { - return ResourceManager.GetString("___Start_movements_finished_with_error___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start movements stared.. - /// - public static string ___Start_movements_stared___ { - get { - return ResourceManager.GetString("___Start_movements_stared___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start movements was aborted, while not yet completed!. - /// - public static string ___Start_movements_was_aborted__while_not_yet_completed___ { - get { - return ResourceManager.GetString("___Start_movements_was_aborted__while_not_yet_completed___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Start program. - /// - public static string ___Start_program__ { - get { - return ResourceManager.GetString("___Start_program__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Status. - /// - public static string ___Status__ { - get { - return ResourceManager.GetString("___Status__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop motors. - /// - public static string ___Stop_motors__ { - get { - return ResourceManager.GetString("___Stop_motors__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop motors finished with error.. - /// - public static string ___Stop_motors_finished_with_error___ { - get { - return ResourceManager.GetString("___Stop_motors_finished_with_error___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop motors started.. - /// - public static string ___Stop_motors_started___ { - get { - return ResourceManager.GetString("___Stop_motors_started___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop motors was completed successfully.. - /// - public static string ___Stop_motors_was_completed_successfully___ { - get { - return ResourceManager.GetString("___Stop_motors_was_completed_successfully___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop movement-quick. - /// - public static string ___Stop_movement_quick__ { - get { - return ResourceManager.GetString("___Stop_movement_quick__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop movement-soft. - /// - public static string ___Stop_movement_soft__ { - get { - return ResourceManager.GetString("___Stop_movement_soft__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop movements. - /// - public static string ___Stop_movements__ { - get { - return ResourceManager.GetString("___Stop_movements__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop movements and program was completed successfully.. - /// - public static string ___Stop_movements_and_program__was_completed_successfully___ { - get { - return ResourceManager.GetString("___Stop_movements_and_program__was_completed_successfully___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop movements and program finished with error.. - /// - public static string ___Stop_movements_and_program_finished_with_error___ { - get { - return ResourceManager.GetString("___Stop_movements_and_program_finished_with_error___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop movements and program started.. - /// - public static string ___Stop_movements_and_program_started___ { - get { - return ResourceManager.GetString("___Stop_movements_and_program_started___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop movements and program was aborted, while not yet completed!. - /// - public static string ___Stop_movements_and_program_was_aborted__while_not_yet_completed___ { - get { - return ResourceManager.GetString("___Stop_movements_and_program_was_aborted__while_not_yet_completed___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop movenents and program. - /// - public static string ___Stop_movenents_and_program__ { - get { - return ResourceManager.GetString("___Stop_movenents_and_program__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop program. - /// - public static string ___Stop_program__ { - get { - return ResourceManager.GetString("___Stop_program__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop program at the end of the cycle. - /// - public static string ___Stop_program_at_the_end_of_the_cycle__ { - get { - return ResourceManager.GetString("___Stop_program_at_the_end_of_the_cycle__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop program at the end of the instruction. - /// - public static string ___Stop_program_at_the_end_of_the_instruction__ { - get { - return ResourceManager.GetString("___Stop_program_at_the_end_of_the_instruction__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop program was aborted, while not yet completed!. - /// - public static string ___Stop_program_was_aborted__while_not_yet_completed___ { - get { - return ResourceManager.GetString("___Stop_program_was_aborted__while_not_yet_completed___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stop program was completed successfully.. - /// - public static string ___Stop_program_was_completed_successfully___ { - get { - return ResourceManager.GetString("___Stop_program_was_completed_successfully___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stopping movement finished with error.. - /// - public static string ___Stopping_movement_finished_with_error___ { - get { - return ResourceManager.GetString("___Stopping_movement_finished_with_error___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stopping movements started.. - /// - public static string ___Stopping_movements_started___ { - get { - return ResourceManager.GetString("___Stopping_movements_started___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stopping movements was aborted, while not yet completed!. - /// - public static string ___Stopping_movements_was_aborted__while_not_yet_completed___ { - get { - return ResourceManager.GetString("___Stopping_movements_was_aborted__while_not_yet_completed___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stopping movements was completed successfully.. - /// - public static string ___Stopping_movements_was_completed_successfully___ { - get { - return ResourceManager.GetString("___Stopping_movements_was_completed_successfully___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stopping program started.. - /// - public static string ___Stopping_program_started___ { - get { - return ResourceManager.GetString("___Stopping_program_started___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Stopping program with error.. - /// - public static string ___Stopping_program_with_error___ { - get { - return ResourceManager.GetString("___Stopping_program_with_error___", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Switch off the motors. - /// - public static string ___Switch_off_the_motors__ { - get { - return ResourceManager.GetString("___Switch_off_the_motors__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Switch on the motors. - /// - public static string ___Switch_on_the_motors__ { - get { - return ResourceManager.GetString("___Switch_on_the_motors__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Switch on the motors and start program. - /// - public static string ___Switch_on_the_motors_and_start_program__ { - get { - return ResourceManager.GetString("___Switch_on_the_motors_and_start_program__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to System input busy. - /// - public static string ___System_input_busy__ { - get { - return ResourceManager.GetString("___System_input_busy__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tool 1 extend. - /// - public static string ___Tool_1_extend__ { - get { - return ResourceManager.GetString("___Tool_1_extend__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tool 1 retract. - /// - public static string ___Tool_1_retract__ { - get { - return ResourceManager.GetString("___Tool_1_retract__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tool 2 extend. - /// - public static string ___Tool_2_extend__ { - get { - return ResourceManager.GetString("___Tool_2_extend__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tool 2 retract. - /// - public static string ___Tool_2_retract__ { - get { - return ResourceManager.GetString("___Tool_2_retract__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tool 3 extend. - /// - public static string ___Tool_3_extend__ { - get { - return ResourceManager.GetString("___Tool_3_extend__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tool 3 retract. - /// - public static string ___Tool_3_retract__ { - get { - return ResourceManager.GetString("___Tool_3_retract__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tool 4 extend. - /// - public static string ___Tool_4_extend__ { - get { - return ResourceManager.GetString("___Tool_4_extend__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tool 4 retract. - /// - public static string ___Tool_4_retract__ { - get { - return ResourceManager.GetString("___Tool_4_retract__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Tool number. - /// - public static string ___Tool_number__ { - get { - return ResourceManager.GetString("___Tool_number__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to User specific speed 1. - /// - public static string ___User_specific_speed_1__ { - get { - return ResourceManager.GetString("___User_specific_speed_1__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to User specific speed 2. - /// - public static string ___User_specific_speed_2__ { - get { - return ResourceManager.GetString("___User_specific_speed_2__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Waiting for Auto signal! . - /// - public static string ___Waiting_for_Auto_signal____ { - get { - return ResourceManager.GetString("___Waiting_for_Auto_signal____", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Waiting for motors are On! . - /// - public static string ___Waiting_for_motors_are_On____ { - get { - return ResourceManager.GetString("___Waiting_for_motors_are_On____", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Waiting for program running signal! . - /// - public static string ___Waiting_for_program_running_signal____ { - get { - return ResourceManager.GetString("___Waiting_for_program_running_signal____", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Waiting for system is without errors! . - /// - public static string ___Waiting_for_system_is_without_errors____ { - get { - return ResourceManager.GetString("___Waiting_for_system_is_without_errors____", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Waiting for system ready signal! . - /// - public static string ___Waiting_for_system_ready_signal____ { - get { - return ResourceManager.GetString("___Waiting_for_system_ready_signal____", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Waiting program pointer changed! . - /// - public static string ___Waiting_program_pointer_changed____ { - get { - return ResourceManager.GetString("___Waiting_program_pointer_changed____", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Workobject number. - /// - public static string ___Workobject_number__ { - get { - return ResourceManager.GetString("___Workobject_number__", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Zones. - /// - public static string ___Zones__ { - get { - return ResourceManager.GetString("___Zones__", resourceCulture); + return ResourceManager.GetString("___Status__", resourceCulture); } } } diff --git a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/Properties/Localizations.resx b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/Properties/Localizations.resx index 26466b61a..b52834714 100644 --- a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/Properties/Localizations.resx +++ b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/Properties/Localizations.resx @@ -117,430 +117,43 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Emergency stop active - - - Safety Error - - - Program execution error see robot panel for details - - - Drive error no - Status - - Control - Config - - PN Error - - - Start at Main - - - Start motors and program - - - Start program - - - Start motors + + Get Command - - Start movements - - - Start motors program and movements - - - Stop movements - - - Stop movenents and program - - - Stop program - - - Stop motors + + Set Command Restore - - Invalid reference: - - - Waiting program pointer changed! - - - Waiting for system ready signal! - - - Start at Main was aborted, while not yet completed! - - - Start at Main was completed successfully. - - - Start at Main finished with error. - - - Start at Main started. - - - Waiting for Auto signal! - - - Robot is not in Auto - - - Robot Error Reset - - - Robot Emergency Stop Reset - - - Waiting for signal: - - - Start motors and program was aborted. - - - Start motors and program finished successfully. - - - Start motors and program finished with error. - - - Start motors and program started. - - - Invalid reference StartMotorAndProgramTask - - - Moving to position ID - - - Start motors, program and movements was aborted, while not yet completed! - - - Start motors, program and movements finished successfully. - - - Start motors, program and movements finished with error. - - - Start motors, program and movements stared. - - - Start motors was aborted. - - - Start motors finished successfully. - - - Start motors finished with error. - - - Start motors started. - - - Waiting for program running signal! - - - Waiting for motors are On! - - - Waiting for system is without errors! - - - Start movements was aborted, while not yet completed! - - - Start movements finished successfully. - - - Start movements finished with error. - - - Start movements stared. - - - Stop program was aborted, while not yet completed! - - - Stop program was completed successfully. - - - Stopping program with error. - - - Stopping program started. - - - Stop motors was completed successfully. - - - Stop motors finished with error. - - - Stop motors started. - - - is OFF - - - Stop movements and program was aborted, while not yet completed! - - - Stop movements and program was completed successfully. - - - Stop movements and program finished with error. - - - Stop movements and program started. - - - Stopping movements was aborted, while not yet completed! - - - Stopping movements was completed successfully. - - - Stopping movement finished with error. - - - Stopping movements started. - - - Interuption actually running instruction - - - Load program - - - Load and run program - - - Switch off the motors - - - Switch on the motors - - - Switch on the motors and start program - - - Emergency stop acknowledge - - - Error acknowledge - - - Program start - - - Program start at main - - - Program stop - - - Stop movement-quick - - - Stop movement-soft - - - Stop program at the end of the cycle - - - Stop program at the end of the instruction - - - Speed limitation - - - Master mode - - - Tool 1 retract - - - Tool 1 extend - - - Tool 2 retract - - - Tool 2 extend - - - Tool 3 retract - - - Tool 3 extend - - - Tool 4 retract - - - Tool 4 extend - - - Zones - - - In position - - - Action number - - - Global robot speed - - - Tool number - - - Workobject number - - - Point number - - - User specific speed 1 - - - User specific speed 2 - - - Coordinates - - - AutoOn - - - CycleOn - - - Emergency stop - - - Error - - - Event ID - - - Move active - - - Move inactive - - - Motor off - - - Motor on - - - Motor off state - - - Motor on state - - - Program execution error - - - Safety OK - - - System input busy - - - Program pointer moved - - - Motion supervision - - - Battery Low - - - In area 1 - - - In area 2 - - - In area 3 - - - In area 4 - - - In position 1 - - - In position 2 - - - In position 3 - - - In position 4 - - - Auto stop 1 - - - Auto stop 2 - - - Emergency stop 1 - - - Emergency stop 2 - - - General stop 1 - - - General stop 2 - - - Enable 1 + + Command started. - - Enable 2 + + Nvalue - - Global speed + + NRF - - PointNumber + + Raw Response - - Actual coordinates world + + NR1 - - Actual coordinates workobject tool + + NR2 - - IN + + N - - OUT + + Convert Message \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/TcoAimTtiPowerSupplyConnector.csproj b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/TcoAimTtiPowerSupplyConnector.csproj index 0bb6f519c..88caea757 100644 --- a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/TcoAimTtiPowerSupplyConnector.csproj +++ b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/TcoAimTtiPowerSupplyConnector.csproj @@ -54,7 +54,6 @@ - diff --git a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/pex/QlSeriesCommand.cs b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/pex/QlSeriesCommand.cs new file mode 100644 index 000000000..638fc1577 --- /dev/null +++ b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/pex/QlSeriesCommand.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TcoAimTtiPowerSupply +{ + public class QlSeriesCommand + { + public string Key{get;set;} + public string Command { get; set; } + public string Syntax{get;set;} + + public string ResponseSyntax { get; set; } = string.Empty; + public string HelpDescription { get; set; } + + public eQlCommandType Type { get; set; } + + } + public static class QlSeriesCommands + + { + public static IEnumerable Commands = new List () + { + {new QlSeriesCommand(){ Key = "V",Syntax="V " ,HelpDescription=@"Set output to Volts. For AUX output =3",Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "V_Verif",Syntax="VV ",HelpDescription=@"Set output to Volts with verify. For AUX output =3",Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "OVP",Syntax="OVP ",HelpDescription=@"Set output over voltage protection trip point to Volts",Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "I",Syntax="I ",HelpDescription=@"Set output current limit to Amps",Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "OCP",Syntax="OCP ",HelpDescription=@"Set output over current protection trip point to Amps",Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "V",Syntax="V? ",HelpDescription=@"Return the set voltage of output . For AUX output =3 – response is V where is in Volts" ,ResponseSyntax="V ",Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "I",Syntax="I? ",HelpDescription=@"Return the set current limit of output – response is I where is in Amps",ResponseSyntax="I ",Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "OVP",Syntax="OVP? ",HelpDescription=@"Return the voltage trip setting for output – response is VP where is in Volts",ResponseSyntax="VP ",Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "OCP",Syntax="OCP? ",HelpDescription=@"Return the current trip setting for output – response is IP where is in Amps",ResponseSyntax="IP ",Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "VO",Syntax="VO?",HelpDescription=@"Return the output readback voltage for output . For AUX output =3 – response is V where is in Volts",ResponseSyntax="V",Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "IO",Syntax="IO? ",HelpDescription=@"Return the output readback current for output . For AUX output =3 – response is A where is in Amps",ResponseSyntax="A",Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "RANGE",Syntax="RANGE ",HelpDescription=@"Set the voltage range of output to where has the following meaning: QL355 Models: 0=15V(5A), 1=35V(3A), 2=35V(500mA) QL564 Models: 0=25V(4A), 1=56V(2A), 2=56V(500mA)",Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "RANGE",Syntax = "RANGE? ",HelpDescription = @"Return the set voltage range of output ",Type = eQlCommandType.GetCommand}}, + {new QlSeriesCommand(){ Key = "DELTAV", Syntax = "DELTAV", HelpDescription = @"Set the output voltage step size to Volts. For AUX output =3", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "DELTAI", Syntax = "DELTAI ", HelpDescription = @"Set the output current step size to Amps", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "DELTAV", Syntax = "DELTAV? ", HelpDescription = @"Return the output voltage step size. For AUX output =3 – response is DELTAV where is in Volts.",ResponseSyntax="DELTAV ", Type = eQlCommandType.GetCommand } }, + {new QlSeriesCommand(){ Key = "DELTAI", Syntax = "DELTAI? ", HelpDescription = @"Return the output current step size – response is DELTAI where is in Amps.",ResponseSyntax="DELTAI ", Type = eQlCommandType.GetCommand } }, + {new QlSeriesCommand(){ Key = "INCV", Syntax = "INCV ", HelpDescription = @"Increment the output voltage by the step size set for output .For AUX output =3", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "INCV_Verif", Syntax = "INCVV", HelpDescription = @" Increment with verify the output voltage by the step size set for output .For AUX output =3", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "DECV", Syntax = "DECV", HelpDescription = @" Decrement the output voltage by the step size set for output .For AUX output =3", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "DECV_Verif", Syntax = "DECVV ", HelpDescription = @"Decrement with verify the output voltage by the step size set for output For AUX output =3", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "INCI", Syntax = "INCI ", HelpDescription = @"Increment the output current limit by the step size set for output ", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "DECI", Syntax = "DECI", HelpDescription = @"Decrement the output current limit by the step size set for output ", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "OP", Syntax = "OP ", HelpDescription = @"Set output on/off where has the following meaning: 0=OFF, 1=ONFor AUX output =3", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "OP", Syntax = "OP?", HelpDescription = @"Returns output on/off status. For AUX output =3 - response is where 1 = ON, 0 = OFF.",ResponseSyntax="", Type = eQlCommandType.GetCommand } }, + {new QlSeriesCommand(){ Key = "OPALL",Syntax="OPALL ",HelpDescription=@"Simultaneously sets all outputs on/off where has the following meaning: 0 = All OFF, 1 = ALL ON. If OPALL sets all outputs ON then any that were already on will remain ON. If OPALL sets all outputs OFF then any that were already off will remain OFF", Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "SENSE", Syntax = "SENSE ", HelpDescription = @"Set the output sense mode where has the following meaning:0=local, 1=remote", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "MODE", Syntax = "MODE ", HelpDescription = @"Set the instrument operating mode to LINK or assign control to output 1 or 2", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "MODE ", Syntax = "MODE? ", HelpDescription = @" has the following meaning: – response is LINKED or CTRL (control assigned to output )", Type = eQlCommandType.GetCommand } }, + {new QlSeriesCommand(){ Key = "TRIPRST", Syntax = "TRIPRST ", HelpDescription = @"0 = linked, 1 = assign control to output 1, 2 = assign control to output 2.", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "LSR", Syntax = "LSR? ", HelpDescription = @"Setting linked mode uniquely affects the way the instrument responds to some – response is ",ResponseSyntax="", Type = eQlCommandType.GetCommand } }, + {new QlSeriesCommand(){ Key = "LSE", Syntax = "LSE ", HelpDescription = @"remote commands. Commands to set Range, Voltage, Current Limit, OVP or", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "LSE", Syntax = "LSE? ", HelpDescription = @"OCP sent to either Output 1 or Output 2 will change the setting on both outputs – response is ",ResponseSyntax="", Type = eQlCommandType.GetCommand } }, + {new QlSeriesCommand(){ Key = "SAV",Syntax="SAV ",HelpDescription=@"Save the current set-up of output to the set-up store specified by where can be 0-49 for the main outputs or 0-9 for the AUX output on TP models. For AUX output =3. If the instrument is operating in linked mode then the entire instrument set-up (excluding auxiliary output) will be stored in the linked mode set-up store specified by . The specification is ignored. This has no affect on the individual PSU set-up stores available when not in linked mode", Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "RCL",Syntax="RCL ",HelpDescription=@"Recall a set up for output from the set-up store specified by where < NRF > can be 0 - 49 for the main outputs or 0 - 9 for the AUX output on TP models.For AUX output < N >= 3. If the instrument is operating in LINK mode then the entire instrument set - up (excluding AUX output) will be recalled from the LINK mode set - up store specified by.The < N > specification is ignored.", Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "RST",Syntax="*RST",HelpDescription=@"Resets the instrument to the factory default settings − (see Factory Defaults section) with the exception of all remote interface settings.",Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "QER", Syntax = "QER? ", HelpDescription = @"Query and clear Query Error Register. The response format is nr1",ResponseSyntax="", Type = eQlCommandType.GetCommand } }, + {new QlSeriesCommand(){ Key = "CLS",Syntax="*CLS",HelpDescription=@"Clear Status. Clears the Standard Event Status Register, Query Error Register and Execution Error Register. This indirectly clears the Status Byte Register.", Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "EER", Syntax = "EER?", HelpDescription = @"Query and clear Execution Error Register. The response format is nr1",ResponseSyntax="", Type = eQlCommandType.GetCommand } }, + {new QlSeriesCommand(){ Key = "ESE", Syntax = "*ESE ", HelpDescription = @"Set the Standard Event Status Enable Register to the value of .", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "ESE",Syntax="*ESE? ",HelpDescription=@"Returns the value in the Standard Event Status Enable Register in numeric format.The syntax of the response is ",ResponseSyntax="", Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "ESR",Syntax="*ESR?",HelpDescription=@"Returns the value in the Standard Event Status Register in numeric format.The register is then cleared. The syntax of the response is ", ResponseSyntax="",Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "IST",Syntax="*IST?",HelpDescription=@"Returns ist local message as defined by IEEE Std. 488.2. The syntax of the response is 0 < RMT >, if the local message is false, or 1 < RMT >, if the local message is true.",ResponseSyntax="",Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "OPC",Syntax="*OPC",HelpDescription=@"Sets the Operation Complete bit (bit 0) in the Standard Event Status Register.This will happen immediately the command is executed because of the sequential nature of all operations.", Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "OPC",Syntax="*OPC?",HelpDescription=@"Query Operation Complete status. The syntax of the response is 1.The response will be available immediately the command is executed because of the sequential nature of all operations.",ResponseSyntax="", Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "PRE", Syntax = "*PRE ", HelpDescription = @"Set the Parallel Poll Enable Register to the value .", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "PRE", Syntax = "*PRE?", HelpDescription = @"Returns the value in the Parallel Poll Enable Register in numeric format.The syntax of the response is ",ResponseSyntax="", Type = eQlCommandType.GetCommand } }, + {new QlSeriesCommand(){ Key = "SRE", Syntax = "*SRE ", HelpDescription = @"Set the Service Request Enable Register to .", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "STB",Syntax="*STB? ",HelpDescription=@"Returns the value of the Status Byte Register in numeric format. The syntax of the response is",ResponseSyntax="", Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "WAI",Syntax="*WAI",HelpDescription=@"Wait for Operation Complete true. As all commands are completely executed before the next is started this command takes no additional action.", Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "IFLOCK",Syntax="IFLOCK",HelpDescription=@"Request Instrument ‘lock’. This command requests exclusive access control of the instrument.The response is ‘1’ is successful or ‘-1’ if the lock is unavailable either because it is already in use or the user has disabled this interface from taking control using the web interface",Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "SRE",Syntax="*SRE? ",HelpDescription=@"Returns the value of the Service Request Enable Register in numeric format.The syntax of the response is",ResponseSyntax="", Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "IFLOCK", Syntax = "IFLOCK?", HelpDescription = @"Query the status of the interface ‘lock’. The return value is ‘1’ if the lock is owned by the requesting interface instance; ‘0’ if there is no active lock or ‘-1’ if the lock is unavailable either because it is in use by another interface or the user has disabled the interface from taking control via the web interface.",ResponseSyntax="", Type = eQlCommandType.GetCommand } }, + {new QlSeriesCommand(){ Key = "IFUNLOCK", Syntax = "IFUNLOCK", HelpDescription = @"Release the ‘lock’ if possible. Returns ‘0’ if successful. If this command is unsuccessful ‘-1’ is returned, 200 is placed in the Execution Error Register and bit 4 of the Event Status Register is set indicating that you do not have the authority to release the lock.",ResponseSyntax="", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "LOCAL", Syntax = "LOCAL", HelpDescription = @"Go to local. This does not release any active interface lock so that the lock remains with the selected interface when the next remote command is", Type = eQlCommandType.SetCommand } }, + {new QlSeriesCommand(){ Key = "ADDRESS",Syntax="ADDRESS?",HelpDescription=@"Returns the bus address . This number can be used to identify the unit",ResponseSyntax="", Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "IPADDR",Syntax="IPADDR? ",HelpDescription=@"Returns the present IP address of the LAN interface, provided it is connected. If it is not connected, the response will be the static IP if configured to always use that static IP, otherwise it will be 0.0.0.0 if waiting for DHCP or Auto-IP. The response is nnn.nnn.nnn.nnn, where each nnn is 0 to 255", Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "NETMASK",Syntax="NETMASK?",HelpDescription=@"Returns the present netmask of the LAN interface, provided it is connected. The response is nnn.nnn.nnn.nnn, where each nnn is 0 to 255.", Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "NETCONFIG",Syntax="NETCONFIG?",HelpDescription=@"Returns the first means by which an IP address will be sought. The response is where is DHCP, AUTO or STATIC.", Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "NETCONFIG",Syntax="NETCONFIG ",HelpDescription=@"Specifies the means by which an IP address will be sought.< CPD > must be one of DHCP, AUTO or STATIC.", Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "IPADDR",Syntax="IPADDR ",HelpDescription=@"Sets the potential static IP address of the LAN interface (as on the webpage). The parameter must be strictly a dotted quad for the IP address, with each address part an in the range 0 to 255, (e.g. 192.168.1.101).", Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "NETMASK",Syntax="NETMASK ",HelpDescription=@"Sets the netmask to accompany the static IP address of the LAN interface. The parameter must be strictly a dotted quad for the netmask, with each part an in the range 0 to 255, (e.g. 255.255.255.0).", Type = eQlCommandType.SetCommand} }, + {new QlSeriesCommand(){ Key = "IDN",Syntax="*IDN?",HelpDescription=@"Returns the instrument identification. The exact response is determined by the instrument configuration and is of the form ,, 0, where is the manufacturer's name, defines the type of instrument and is the revision level of the software installed.", Type = eQlCommandType.GetCommand} }, + {new QlSeriesCommand(){ Key = "TST", Syntax = "*TST? ", HelpDescription = @"The PSU has no self test capability and the response is always 0 " ,ResponseSyntax="", Type = eQlCommandType.GetCommand } }, + {new QlSeriesCommand(){ Key = "TRG", Syntax = "*TRG ", HelpDescription = @"The PSU has no trigger capability.", Type = eQlCommandType.SetCommand } }, + + + }; + + + } + +} diff --git a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/pex/TcoQl355P_v_1_x_x.cs b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/pex/TcoQl355P_v_1_x_x.cs new file mode 100644 index 000000000..dcc3b1b6d --- /dev/null +++ b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/pex/TcoQl355P_v_1_x_x.cs @@ -0,0 +1,161 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Net.Sockets; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Vortex.Connector; + +namespace TcoAimTtiPowerSupply +{ + public partial class TcoQl355P_v_1_x_x + + { + + public void Initialize() + { + _getCommandTask.InitializeExclusively(InvokeGetCommand); + _setCommandTask.InitializeExclusively(InvokeSetCommand); + + } + + private void InvokeSetCommand() + { + this.Read(); + + try + { + + using (TcpClient client = new TcpClient(_config.IpAddress.LastValue, _config.Port.LastValue)) + { + client.SendTimeout = _config.Timeout.LastValue; + client.ReceiveTimeout = _config.Timeout.LastValue; + + using (NetworkStream stream = client.GetStream()) + using (StreamWriter writer = new StreamWriter(stream)) + using (StreamReader reader = new StreamReader(stream)) + { + + string nVal = null; + // Send a string to the server + var cmd = QlSeriesCommands.Commands.Where(p => p.Type == eQlCommandType.SetCommand).Where(q => q.Key == Enum.GetName(typeof(eTcoQWlSeriesSupplySetCommands_v_1_x_x), _setCommandTask._command.Command.LastValue)).FirstOrDefault(); + var message = cmd.Syntax.Replace("", _setCommandTask._command.NValue.LastValue.ToString()).Replace("", _setCommandTask._command.NrfValue.LastValue.ToString(" 00.00", System.Globalization.CultureInfo.InvariantCulture)); + + writer.WriteLine(message); + writer.Flush(); // Flush the buffer to ensure data is sent immediately + + //Console.WriteLine("Sent: " + message); + + //// Receive a response from the server + //var response = reader.ReadLine(); + //_status.State.Resposne.Cyclic = response; + //_status.State.Write(); + //Console.WriteLine("Recieved: " + response); + } + } + } + catch (Exception ex) + { + Console.WriteLine("Error: " + ex.Message); + } + } + + + + private void InvokeGetCommand() + { + this.Read(); + + try + { + + using (TcpClient client = new TcpClient(_config.IpAddress.LastValue, _config.Port.LastValue)) + { + client.SendTimeout = _config.Timeout.LastValue; + client.ReceiveTimeout = _config.Timeout.LastValue; + + using (NetworkStream stream = client.GetStream()) + using (StreamWriter writer = new StreamWriter(stream)) + using (StreamReader reader = new StreamReader(stream)) + { + + string nVal = null; + // Send a string to the server + var cmd = QlSeriesCommands.Commands.Where(p => p.Type == eQlCommandType.GetCommand).Where(q => q.Key == Enum.GetName(typeof(eTcoQWlSeriesSupplyGetCommands_v_1_x_x), _getCommandTask._command.Command.LastValue)).FirstOrDefault(); + var message = cmd.Syntax.Replace("", _getCommandTask._command.NValue.LastValue.ToString()); + + + writer.WriteLine(message); + writer.Flush(); // Flush the buffer to ensure data is sent immediately + + + + // Receive a response from the server + var response = reader.ReadLine(); + + _status.State.Nr1Value.Cyclic = 0; + _status.State.Nr2Value.Cyclic = 0; + _status.State.NValue.Cyclic = 0; + _status.State.ConvertMessage.Cyclic =string.Empty ; + _status.State.Resposne.Cyclic = response; + + if (!string.IsNullOrEmpty(cmd.ResponseSyntax)) + { + + if (cmd.ResponseSyntax == "") + { + short result; + if (short.TryParse(response, NumberStyles.Any, CultureInfo.InvariantCulture, out result)) + _status.State.Nr1Value.Cyclic = result; + else + _status.State.ConvertMessage.Cyclic = "Unable to convert " + response; + } + + else if (cmd.ResponseSyntax == "V" || cmd.ResponseSyntax == "A") + { + float result; + var splitted = response.Split('A', 'V'); + if (float.TryParse(splitted[0], NumberStyles.Any, CultureInfo.InvariantCulture, out result)) + _status.State.Nr2Value.Cyclic = result; + else + _status.State.ConvertMessage.Cyclic = "Unable to convert " + splitted[0]; + } + + //"V " + else + { + var splitted = response.Split(' '); + short nResult; + string nValue = new String(splitted[0].Where(Char.IsDigit).ToArray()); + if (short.TryParse(nValue, NumberStyles.Any, CultureInfo.InvariantCulture, out nResult)) + _status.State.NValue.Cyclic = (byte)nResult; + else + _status.State.ConvertMessage.Cyclic = "Unable to convert " + splitted[1]; + + float result; + if (float.TryParse(splitted[1], NumberStyles.Any, CultureInfo.InvariantCulture, out result)) + _status.State.Nr2Value.Cyclic = result; + else + _status.State.ConvertMessage.Cyclic = "Unable to convert " + splitted[1]; + } + + + } + + _status.State.Write(); + + + } + } + } + catch (Exception ex) + { + Console.WriteLine("Error: " + ex.Message); + } + } + } + +} \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/pex/eQlCommandType.cs b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/pex/eQlCommandType.cs new file mode 100644 index 000000000..5dbee2612 --- /dev/null +++ b/src/TcoAimTtiPowerSupply/src/TcoAimTtiPowerSupplyConnector/pex/eQlCommandType.cs @@ -0,0 +1,8 @@ +namespace TcoAimTtiPowerSupply +{ + public enum eQlCommandType + { + SetCommand, + GetCommand + } +} \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoAbbRobotics_Control_v_1_x_x.TcDUT b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoAbbRobotics_Control_v_1_x_x.TcDUT deleted file mode 100644 index 4668999d8..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoAbbRobotics_Control_v_1_x_x.TcDUT +++ /dev/null @@ -1,121 +0,0 @@ - - - - "} - Interupt : BOOL; - - {attribute addProperty Name "<#Load program#>"} - LoadProg : BOOL; - - {attribute addProperty Name "<#Load and run program#>"} - LoadAndStartProg : BOOL; - - {attribute addProperty Name "<#Switch off the motors#>"} - MotorOff : BOOL; - - {attribute addProperty Name "<#Switch on the motors#>"} - MotorOn : BOOL; - - {attribute addProperty Name "<#Switch on the motors and start program#>"} - MotorOnAndStart : BOOL; - - {attribute addProperty Name "<#Emergency stop acknowledge#>"} - ResetEmgStop : BOOL; - - {attribute addProperty Name "<#Error acknowledge#>"} - ResetError : BOOL; - - {attribute addProperty Name "<#Program start#>"} - StartProgram : BOOL; - - {attribute addProperty Name "<#Program start at main#>"} - StartAtMain : BOOL; - - {attribute addProperty Name "<#Program stop#>"} - StopProgram : BOOL; - - {attribute addProperty Name "<#Stop movement-quick#>"} - QuickStop : BOOL; - - {attribute addProperty Name "<#Stop movement-soft#>"} - SoftStop : BOOL; - - {attribute addProperty Name "<#Stop program at the end of the cycle#>"} - StopCycle : BOOL; - - {attribute addProperty Name "<#Stop program at the end of the instruction#>"} - StopInstruction : BOOL; - - {attribute addProperty Name "<#Speed limitation#>"} - LimitSpeed : BOOL; - - {attribute addProperty Name "<#Master mode#>"} - MasterMode : BYTE; - - {attribute addProperty Name "<#Tool 1 retract#>"} - Tool_1_Retract : BOOL; - - {attribute addProperty Name "<#Tool 1 extend#>"} - Tool_1_Extend : BOOL; - - {attribute addProperty Name "<#Tool 2 retract#>"} - Tool_2_Retract : BOOL; - - {attribute addProperty Name "<#Tool 2 extend#>"} - Tool_2_Extend : BOOL; - - {attribute addProperty Name "<#Tool 3 retract#>"} - Tool_3_Retract : BOOL; - - {attribute addProperty Name "<#Tool 3 extend#>"} - Tool_3_Extend : BOOL; - - {attribute addProperty Name "<#Tool 4 retract#>"} - Tool_4_Retract : BOOL; - - {attribute addProperty Name "<#Tool 4 extend#>"} - Tool_4_Extend : BOOL; - - {attribute addProperty Name "<#Zones#>"} - Zone : BYTE; - - {attribute addProperty Name "<#In position#>"} - InPosition : BYTE; - - {attribute addProperty Name "<#Action number#>"} - ActionNo : BYTE; - - {attribute addProperty Name "<#Global robot speed#>"} - GlobalSpeed : BYTE; - - {attribute addProperty Name "<#Tool number#>"} - ToolNo : BYTE; - - {attribute addProperty Name "<#Workobject number#>"} - WorkobjectNo : BYTE; - - {attribute addProperty Name "<#Point number#>"} - PointNo : BYTE; - - {attribute addProperty Name "<#User specific speed 1#>"} - UserSpecSpeed1 : REAL; - - {attribute addProperty Name "<#User specific speed 2#>"} - UserSpecSpeed2 : REAL; - - - - - {attribute addProperty Name "<#Coordinates#>"} - Coordinates : TcoAbstractions.TcoRoboticsCoordinates; - -END_STRUCT -END_TYPE -]]> - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoAbbRobotics_State_v_1_x_x.TcDUT b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoAbbRobotics_State_v_1_x_x.TcDUT deleted file mode 100644 index 5f97078d6..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoAbbRobotics_State_v_1_x_x.TcDUT +++ /dev/null @@ -1,183 +0,0 @@ - - - - "} - AutoOn : BOOL; - - {attribute addProperty Name "<#CycleOn#>"} - CycleOn : BOOL; - - {attribute addProperty Name "<#Emergency stop#>"} - EmgStop : BOOL; - - {attribute addProperty Name "<#Error#>"} - Error : BOOL; - - {attribute addProperty Name "<#Event ID#>"} - EventId : UDINT; - - {attribute addProperty Name "<#Move active#>"} - MoveActive : BOOL; - - {attribute addProperty Name "<#Move inactive#>"} - MoveInactive : BOOL; - - {attribute addProperty Name "<#Motor off#>"} - MotorOff : BOOL; - - {attribute addProperty Name "<#Motor on#>"} - MotorOn : BOOL; - - {attribute addProperty Name "<#Motor off state#>"} - MotorOffState : BOOL; - - {attribute addProperty Name "<#Motor on state#>"} - MotorOnState : BOOL; - - {attribute addProperty Name "<#Program execution error#>"} - ProgExecError : BOOL; - - {attribute addProperty Name "<#Safety OK#>"} - SafetyOk : BOOL; - - {attribute addProperty Name "<#System input busy#>"} - SystemInputBusy : BOOL; - - {attribute addProperty Name "<#Program pointer moved#>"} - PpMoved : BOOL; - - {attribute addProperty Name "<#Motion supervision#>"} - MotionSupervision : BOOL; - - {attribute addProperty Name "<#Battery Low#>"} - BatteryLow : BOOL; - - - - - - - {attribute addProperty Name "<#In area 1#>"} - InArea_1 : BOOL; - - {attribute addProperty Name "<#In area 2#>"} - InArea_2 : BOOL; - - {attribute addProperty Name "<#In area 3#>"} - InArea_3 : BOOL; - - {attribute addProperty Name "<#In area 4#>"} - InArea_4 : BOOL; - - - {attribute addProperty Name "<#In position 1#>"} - InPosition_1 : BOOL; - - {attribute addProperty Name "<#In position 2#>"} - InPosition_2 : BOOL; - - {attribute addProperty Name "<#In position 3#>"} - InPosition_3 : BOOL; - - {attribute addProperty Name "<#In position 4#>"} - InPosition_4 : BOOL; - - - - {attribute addProperty Name "<#Zones#>"} - Zone : BYTE; - - {attribute addProperty Name "<#In position#>"} - InPosition : BYTE; - - - - {attribute addProperty Name "<#Tool 1 retract#>"} - Tool_1_Retract : BOOL; - - {attribute addProperty Name "<#Tool 1 extend#>"} - Tool_1_Extend : BOOL; - - {attribute addProperty Name "<#Tool 2 retract#>"} - Tool_2_Retract : BOOL; - - {attribute addProperty Name "<#Tool 2 extend#>"} - Tool_2_Extend : BOOL; - - {attribute addProperty Name "<#Tool 3 retract#>"} - Tool_3_Retract : BOOL; - - {attribute addProperty Name "<#Tool 3 extend#>"} - Tool_3_Extend : BOOL; - - {attribute addProperty Name "<#Tool 4 retract#>"} - Tool_4_Retract : BOOL; - - {attribute addProperty Name "<#Tool 4 extend#>"} - Tool_4_Extend : BOOL; - - - - {attribute addProperty Name "<#Auto stop 1#>"} - AutoStop_1 : BOOL; - - {attribute addProperty Name "<#Auto stop 2#>"} - AutoStop_2 : BOOL; - - {attribute addProperty Name "<#Emergency stop 1#>"} - EmergencyStop_1 : BOOL; - - {attribute addProperty Name "<#Emergency stop 2#>"} - EmergencyStop_2 : BOOL; - - {attribute addProperty Name "<#General stop 1#>"} - GeneralStop_1 : BOOL; - - {attribute addProperty Name "<#General stop 2#>"} - GeneralStop_2 : BOOL; - - {attribute addProperty Name "<#Enable 1#>"} - Enable_1 : BOOL; - - {attribute addProperty Name "<#Enable 2#>"} - Enable_2 : BOOL; - - - {attribute addProperty Name "<#Action number#>"} - ActionNo : BYTE; - - {attribute addProperty Name "<#Global speed#>"} - GlobalSpeed : BYTE; - - {attribute addProperty Name "<#Tool number#>"} - ToolNo : BYTE; - - {attribute addProperty Name "<#Workobject number#>"} - WorkobjectNo : BYTE; - - {attribute addProperty Name "<#PointNumber#>"} - PointNo : BYTE; - - {attribute addProperty Name "<#User specific speed 1#>"} - UserSpecSpeed1 : DINT; - - {attribute addProperty Name "<#User specific speed 2#>"} - UserSpecSpeed2 : DINT; - - {attribute addProperty Name "<#Coordinates#>"} - Coordinates : TcoAbstractions.TcoRoboticsCoordinates; - -// {attribute addProperty Name "<#Actual coordinates world#>"} -// CoordinatesWorld :TcoAbstractions.TcoRoboticsCoordinates; -// -// {attribute addProperty Name "<#Actual coordinates workobject tool#>"} -// CoordinatesWobjTool : TcoAbstractions.TcoRoboticsCoordinates; -END_STRUCT -END_TYPE -]]> - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoAbbRobotics_Config_v_1_x_x.TcDUT b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_Config_v_1_x_x.TcDUT similarity index 62% rename from src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoAbbRobotics_Config_v_1_x_x.TcDUT rename to src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_Config_v_1_x_x.TcDUT index 04a108cf0..b2d21de64 100644 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoAbbRobotics_Config_v_1_x_x.TcDUT +++ b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_Config_v_1_x_x.TcDUT @@ -1,12 +1,14 @@  - + diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_GetControl_v_1_x_x.TcDUT b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_GetControl_v_1_x_x.TcDUT new file mode 100644 index 000000000..975f394e1 --- /dev/null +++ b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_GetControl_v_1_x_x.TcDUT @@ -0,0 +1,23 @@ + + + + "} + NValue : USINT; //The number of the output or status register to which the command relates. + //Note that on single output supplies =1 always. + //Note also that = 3 refers to the AUX output. The AUX output has limited remote + //control functionality. For clarity, the commands where = 3 can be used are + //explicitly commented; elsewhere only = 1 or = 2 can be used. + + + +END_STRUCT +END_TYPE +]]> + + \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_SetControl_v_1_x_x.TcDUT b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_SetControl_v_1_x_x.TcDUT new file mode 100644 index 000000000..af6f3ac16 --- /dev/null +++ b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_SetControl_v_1_x_x.TcDUT @@ -0,0 +1,27 @@ + + + + "} + NrfValue : REAL; //A number in any format. e.g. 12, 12·00, 1·2 e1 and 120 e-1 are all accepted as the + //number 12. Any number, when received, is converted to the required precision + //consistent with the use then rounded up to obtain the value of the command. + + {attribute addProperty Name "<#Nvalue#>"} + NValue : USINT; //The number of the output or status register to which the command relates. + //Note that on single output supplies =1 always. + //Note also that = 3 refers to the AUX output. The AUX output has limited remote + //control functionality. For clarity, the commands where = 3 can be used are + //explicitly commented; elsewhere only = 1 or = 2 can be used. + + + +END_STRUCT +END_TYPE +]]> + + \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_State_v_1_x_x.TcDUT b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_State_v_1_x_x.TcDUT new file mode 100644 index 000000000..7bd13e6d7 --- /dev/null +++ b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_State_v_1_x_x.TcDUT @@ -0,0 +1,25 @@ + + + + "} + Resposne : STRING(255); + {attribute addProperty Name "<#NR1#>"} + Nr1Value : INT; // A number with no fractional part, i.e. an integer. + {attribute addProperty Name "<#NR2#>"} + Nr2Value : REAL; // A number in fixed point format e.g. 11·52, 0·78 etc. + {attribute addProperty Name "<#N #>"} + NValue : USINT; //The number of the output or status register to which the command relates. + //Note that on single output supplies =1 always. + //Note also that = 3 refers to the AUX output. The AUX output has limited remote + //control functionality. For clarity, the commands where = 3 can be used are + //explicitly commented; elsewhere only = 1 or = 2 can be used. + + {attribute addProperty Name "<#Convert Message#>"} + ConvertMessage : STRING; +END_STRUCT +END_TYPE +]]> + + \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoAbbRobotics_Status_v_1_x_x.TcDUT b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_Status_v_1_x_x.TcDUT similarity index 51% rename from src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoAbbRobotics_Status_v_1_x_x.TcDUT rename to src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_Status_v_1_x_x.TcDUT index c19ad0551..0054a9f32 100644 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoAbbRobotics_Status_v_1_x_x.TcDUT +++ b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/DUTs/TcoQlSeriesSupply_Status_v_1_x_x.TcDUT @@ -1,10 +1,10 @@  - - + + + + + + + + + + + Restores this instance to the Ready state. Can be called explicitly or from within one of the restore mechanisms. + + See also + + + +~*) +METHOD Restore : ITcoRestorable]]> + + + + + + + + + + + + \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/TcoAbbRoboticsTask.TcPOU b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Command/TcoQlSeriesSupplyTask.TcPOU similarity index 71% rename from src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/TcoAbbRoboticsTask.TcPOU rename to src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Command/TcoQlSeriesSupplyTask.TcPOU index 296830859..4937ef2b8 100644 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/TcoAbbRoboticsTask.TcPOU +++ b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Command/TcoQlSeriesSupplyTask.TcPOU @@ -1,13 +1,14 @@  - - + - + + + + + '; END_IF; +]]> + + diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Command/TcoQlSetCommandTask.TcPOU b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Command/TcoQlSetCommandTask.TcPOU new file mode 100644 index 000000000..bbb192f64 --- /dev/null +++ b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Command/TcoQlSetCommandTask.TcPOU @@ -0,0 +1,41 @@ + + + + + + + + + + + Restores this instance to the Ready state. Can be called explicitly or from within one of the restore mechanisms. + + See also + + + +~*) +METHOD Restore : ITcoRestorable]]> + + + + + + + + + + + + \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/IO/TcoIrc5_IO_v_1_x_x.TcDUT b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/IO/TcoIrc5_IO_v_1_x_x.TcDUT deleted file mode 100644 index 89831325d..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/IO/TcoIrc5_IO_v_1_x_x.TcDUT +++ /dev/null @@ -1,17 +0,0 @@ - - - - "} - In : TcoIrc5_Inputs_v_1_x_x; - {attribute addProperty Name "<#OUT#>"} - Out : TcoIrc5_Outputs_v_1_x_x; -END_STRUCT -END_TYPE -]]> - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/IO/TcoIrc5_Inputs_v_1_x_x.TcDUT b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/IO/TcoIrc5_Inputs_v_1_x_x.TcDUT deleted file mode 100644 index c5764192d..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/IO/TcoIrc5_Inputs_v_1_x_x.TcDUT +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/IO/TcoIrc5_Outputs_v_1_x_x.TcDUT b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/IO/TcoIrc5_Outputs_v_1_x_x.TcDUT deleted file mode 100644 index 58f686182..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/IO/TcoIrc5_Outputs_v_1_x_x.TcDUT +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/TcoIrc5_v_1_x_x.TcPOU b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/TcoIrc5_v_1_x_x.TcPOU deleted file mode 100644 index 2ba5e810c..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/IRC5/TcoIrc5_v_1_x_x.TcPOU +++ /dev/null @@ -1,748 +0,0 @@ - - - - "} - {attribute clr [ReadOnly()]} - _status : TcoAbbRobotics_Status_v_1_x_x; - {attribute addProperty Name "<#Control#>"} - _control : TcoAbbRobotics_Control_v_1_x_x; - {attribute addProperty Name "<#Config#>"} - _config : TcoAbbRobotics_Config_v_1_x_x; - {attribute addProperty Name "<#PN Error#>"} - {attribute clr [ReadOnly()]} - _pnError : BOOL; - - _someTaskIsActive: BOOL; - - _stopTasksAreActive: BOOL; -END_VAR -VAR - {attribute addProperty Name "<#Start at Main#>"} - _startAtMainTask : StartAtMainTask(THIS^); - - {attribute addProperty Name "<#Start motors and program#>"} - _startMotorsAndProgramTask : StartMotorsAndProgramTask(THIS^); - - {attribute addProperty Name "<#Start program#>"} - _startProgramTask : StartProgramTask(THIS^); - - {attribute addProperty Name "<#Start motors#>"} - _startMotorsTask : StartMotorsTask(THIS^); - - {attribute addProperty Name "<#Start movements#>"} - _startMovementsTask : StartMovementsTask(THIS^); - - {attribute addProperty Name "<#Start motors program and movements#>"} - _startMotorsProgramAndMovementsTask : StartMotorsProgramAndMovementsTask(THIS^); - - - - - {attribute addProperty Name "<#Stop movements#>"} - _stopMovementsTask : StopMovementsTask(THIS^); - - {attribute addProperty Name "<#Stop movenents and program#>"} - _stopMovementsAndProgramTask : StopMovementsAndProgramTask(THIS^); - - {attribute addProperty Name "<#Stop program#>"} - _stopProgramTask : StopMovementsAndProgramTask(THIS^); - - {attribute addProperty Name "<#Stop motors#>"} - _stopMotorsTask : StopMotorsTask(THIS^); - - - {attribute addProperty Name "<#Restore#>"} - _restoreTask : TcoCore.TcoTask(THIS^); - - - - - - - -END_VAR - -VAR - {attribute 'hide'} - _sb : TcoCore.StringBuilder; -END_VAR]]> - - '); - END_IF; - IF(NOT _status.State.SafetyOk) THEN - Messenger.Warning('<#Safety Error #>'); - END_IF; - IF(_status.State.ProgExecError) THEN - Messenger.Error('<#Program execution error see robot panel for details#>'); - END_IF; - -END_IF; - -IF(_status.State.Error) THEN Messenger.Error(_sb.Clear().Append('<#Drive error no #>').Append(UDINT_TO_STRING(_status.State.EventId)).Append(' |[[0]AdvancedDiagnosticMessage]|').Append('.').Append('For details see the service mode').ToString()); END_IF; - - -UpdateControl();]]> - - - - - - - Gets the configuration of the IRC 5. - - -~*) -PROPERTY Config : REFERENCE TO TcoAbbRobotics_Config_v_1_x_x]]> - - - - - - - - - - - - - - - - - Restores this instance to the Ready state. Can be called explicitly or from within one of the restore mechanisms. - - -~*) -METHOD Restore : ITcoRestorable]]> - - - - - - - - - - - - - - Custom service (manual, maintenance) logic. - This method must be implemented in derived class. - - -~*) -METHOD PROTECTED ServiceMode]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Gets the status of the IRC5. - - -~*) -PROPERTY Status : REFERENCE TO TcoAbbRobotics_Status_v_1_x_x]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/QLSeries/TcoQl355P_v_1_x_x.TcPOU b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/QLSeries/TcoQl355P_v_1_x_x.TcPOU new file mode 100644 index 000000000..7eb96e757 --- /dev/null +++ b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/QLSeries/TcoQl355P_v_1_x_x.TcPOU @@ -0,0 +1,325 @@ + + + + "} + _status : TcoQlSeriesSupply_Status_v_1_x_x; + {attribute addProperty Name "<#Config#>"} + _config : TcoQlSeriesSupply_Config_v_1_x_x; + + + _someTaskIsActive: BOOL; + + +END_VAR +VAR + {attribute addProperty Name "<#Get Command#>"} + _getCommandTask : TcoQlGetCommandTask(THIS^); + + {attribute addProperty Name "<#Set Command#>"} + _setCommandTask : TcoQlSetCommandTask(THIS^); + + + {attribute addProperty Name "<#Restore#>"} + _restoreTask : TcoCore.TcoTask(THIS^); + + + + + + + +END_VAR + +VAR + {attribute 'hide'} + _sb : TcoCore.StringBuilder; +END_VAR]]> + + + + + + + + + + + + Gets the configuration of the IRC 5. + + +~*) +PROPERTY Config : REFERENCE TO TcoQlSeriesSupply_Config_v_1_x_x]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Restores this instance to the Ready state. Can be called explicitly or from within one of the restore mechanisms. + + +~*) +METHOD Restore : ITcoRestorable]]> + + + + + + + + + + + + + + Custom service (manual, maintenance) logic. + This method must be implemented in derived class. + + +~*) +METHOD PROTECTED ServiceMode]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets the status of the components. + + +~*) +PROPERTY Status : REFERENCE TO TcoQlSeriesSupply_Status_v_1_x_x]]> + + + + + + + + + \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartAtMainTask.TcPOU b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartAtMainTask.TcPOU deleted file mode 100644 index 172a89ad1..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartAtMainTask.TcPOU +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - ').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoConfig) THEN - _varInfo :=__VARINFO(inoConfig); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoStatus) THEN - _varInfo :=__VARINFO(inoStatus); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSE - _progress := _progress + 1; - END_IF - - END_IF - IF _progress = 1 THEN - - inoControl.StartAtMain := _blink.outQ; - _varInfo :=__VARINFO( inoStatus.State.PpMoved); - THIS^.Messenger.OnCondition(_infoTimer.Q AND NOT inoStatus.State.PpMoved).Warning(_sb.Clear().Append('<#Waiting program pointer changed! #>').Append(_varInfo.Symbol).ToString()); - - // _varInfo :=__VARINFO( inoStatus.State.SystemInputBusy); -// THIS^.Messenger.OnCondition(_infoTimer.Q AND NOT inoStatus.State.SystemInputBusy).Warning(_sb.Clear().Append('<#Waiting for system ready signal! #>').Append(_varInfo.Symbol).ToString()); -// - IF inoStatus.State.PpMoved THEN - inoControl.StartAtMain :=FALSE; - _progress:=0; - END_IF - END_IF - DoneWhen(inoStatus.State.PpMoved ); - CallTimers(TRUE); - - THIS^.ThrowWhen(_errorTimer.Q ); - -END_IF; - -IF THIS^.Error AND NOT _errorMessage.Pinned THEN - THIS^.Restore(); -END_IF]]> - - - - - - - - - - - Executes when task is aborted. - - -~*) -METHOD PROTECTED OnAbort -]]> - - ';END_IF; - -]]> - - - - - - Executes when task reaches the ```Done``` state . - - -~*) -METHOD PROTECTED OnDone -]]> - - ';END_IF; -]]> - - - - - - Executes when task reaches the ```Error``` state. - - Do not confuse with , that is called cyclically until '''Error''' state is left. - - - -~*) -METHOD PROTECTED OnError - -VAR - description: STRING; -END_VAR]]> - - '; -IF __ISVALIDREF(inoStatus) THEN THIS^.inoStatus.ActionDescription := description; END_IF; -THIS^._errorMessage.Error(_sb.Clear().Append(description).Append(' To restore acknowledge this alarm.').ToString()).Pin();]]> - - - - - - '; END_IF; -]]> - - - - - - Restores this instance to the Ready state. Can be called explicitly or from within one of the restore mechanisms. - - See also - - - -~*) -METHOD Restore : ITcoRestorable]]> - - - - - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMotorsAndProgramTask.TcPOU b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMotorsAndProgramTask.TcPOU deleted file mode 100644 index dc99692d1..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMotorsAndProgramTask.TcPOU +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - ').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoConfig) THEN - _varInfo :=__VARINFO(inoConfig); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoStatus) THEN - _varInfo :=__VARINFO(inoStatus); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSE - - _progress := _progress + 1; - - END_IF - - END_IF - IF _progress = 1 THEN - - _varInfo :=__VARINFO( inoStatus.State.AutoOn); - THIS^.Messenger.OnCondition(_infoTimer.Q AND NOT inoStatus.State.AutoOn).Warning(_sb.Clear().Append('<#Waiting for Auto signal! #>').Append(_varInfo.Symbol).ToString()); - Messenger.Warning('<#Robot is not in Auto#>'); - IF inoStatus.State.AutoOn THEN - _progress := _progress + 1; - END_IF; - END_IF; - - - IF _progress = 2 THEN - Messenger.Debug('<#Robot Error Reset#>'); - inoControl.ResetError := inoStatus.State.Error AND _blink.outQ; - IF NOT inoStatus.State.Error THEN - inoControl.ResetError:=FALSE; - _progress := _progress + 1; - END_IF - END_IF; - - IF _progress = 3 THEN - Messenger.Debug('<#Robot Emergency Stop Reset#>'); - inoControl.ResetEmgStop := inoStatus.State.EmgStop AND _blink.outQ; - IF NOT inoStatus.State.EmgStop THEN - inoControl.ResetEmgStop:=FALSE; - _progress := _progress + 1; - END_IF - END_IF; - - - IF _progress = 4 THEN - IF inoStatus.State.Error THEN - _progress := 1; - END_IF - _varInfo :=__VARINFO( inoStatus.State.MotorOnState); - THIS^.Messenger.OnCondition(_infoTimer.Q AND NOT inoStatus.State.MotorOnState).Warning(_sb.Clear().Append('<# Waiting for signal: #>').Append(_varInfo.Symbol).ToString()); - _varInfo :=__VARINFO( inoStatus.State.CycleOn); - THIS^.Messenger.OnCondition(_infoTimer.Q AND NOT inoStatus.State.CycleOn).Warning(_sb.Clear().Append('<# Waiting for signal: #>').Append(_varInfo.Symbol).ToString()); - _varInfo :=__VARINFO( inoStatus.State.Error); - THIS^.Messenger.OnCondition(_infoTimer.Q AND NOT inoStatus.State.Error).Warning(_sb.Clear().Append('<# Waiting for signal: #>').Append(_varInfo.Symbol).ToString()); - - inoControl.MotorOnAndStart:=_blink.outQ; - IF inoStatus.State.MotorOnState AND inoStatus.State.CycleOn AND NOT inoStatus.State.Error THEN - inoControl.MotorOnAndStart:=FALSE; - _progress := _progress + 1; - END_IF - END_IF; - - - - - DoneWhen(inoStatus.State.CycleOn AND inoStatus.State.MotorOnState AND NOT inoStatus.State.Error); - CallTimers(TRUE); - - THIS^.ThrowWhen(_errorTimer.Q ); - -END_IF - -IF THIS^.Error AND NOT _errorMessage.Pinned THEN - THIS^.Restore(); -END_IF]]> - - - - - - - - - - - Executes when task is aborted. - - -~*) -METHOD PROTECTED OnAbort -]]> - - '; END_IF; -]]> - - - - - - Executes when task reaches the ```Done``` state . - - -~*) -METHOD PROTECTED OnDone -]]> - - '; END_IF; -_progress:=0;]]> - - - - - - '; -IF __ISVALIDREF(inoStatus) THEN THIS^.inoStatus.ActionDescription := description; END_IF; -THIS^._errorMessage.Error(_sb.Clear().Append(description).Append(' To restore acknowledge this alarm.').ToString()).Pin();]]> - - - - - - '; END_IF; -CallTimers(FALSE); -]]> - - - - - - Restores this instance to the Ready state. Can be called explicitly or from within one of the restore mechanisms. - - See also - - - -~*) -METHOD Restore : ITcoRestorable]]> - - - - - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMotorsProgramAndMovementsTask.TcPOU b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMotorsProgramAndMovementsTask.TcPOU deleted file mode 100644 index e7af8fd4e..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMotorsProgramAndMovementsTask.TcPOU +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - ', TcoCore.eMessageCategory.ProgrammingError); - RETURN; -END_IF -_startMotorsAndProgramTask REF= refStartMotorsAndProgramTask; - -IF Execute() THEN - IF _progress = 0 THEN - IF NOT __ISVALIDREF(inoControl) THEN - _varInfo :=__VARINFO(inoControl); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoConfig) THEN - _varInfo :=__VARINFO(inoConfig); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoStatus) THEN - _varInfo :=__VARINFO(inoStatus); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSE - _progress := _progress + 1; - END_IF - - END_IF - - IF _progress = 1 THEN - IF _startMotorsAndProgramTask.Invoke().Done THEN - _progress := _progress + 1; - END_IF - - END_IF; - - - IF _progress = 2 THEN - inoControl.GlobalSpeed := _moveParams.GlobalSpeed; - inoControl.ToolNo := _moveParams.ToolNo; - inoControl.WorkobjectNo := _moveParams.WorkobjectNo; - inoControl.PointNo := _moveParams.PointNo; - inoControl.UserSpecSpeed1 := _moveParams.UserSpecSpeed1; - inoControl.UserSpecSpeed2 := _moveParams.UserSpecSpeed2; - inoControl.Coordinates := _moveParams.Coordinates; - - inoControl.ActionNo := 254; - IF inoControl.ActionNo = inoStatus.State.ActionNo THEN - inoControl.ActionNo := 255; - _progress:=_progress + 1; - END_IF - END_IF; - IF _progress = 3 THEN - IF inoStatus.State.GlobalSpeed = _moveParams.GlobalSpeed AND - inoStatus.State.ToolNo = _moveParams.ToolNo AND - inoStatus.State.WorkobjectNo = _moveParams.WorkobjectNo AND - inoStatus.State.PointNo = _moveParams.PointNo AND - inoStatus.State.UserSpecSpeed1 = _moveParams.UserSpecSpeed1 AND - inoStatus.State.UserSpecSpeed2 =_moveParams.UserSpecSpeed2 AND - TcoAbstractions.CoordinatesAreEqual(inoStatus.State.Coordinates,_moveParams.Coordinates,0.01,0.01,0.01,0.01,0.01,0.01) THEN - inoControl.ActionNo := 255; - _progress:=_progress + 1; - END_IF - END_IF; - - IF _progress = 4 THEN - IF inoControl.ActionNo = inoStatus.State.ActionNo THEN - _progress:=_progress + 1; - END_IF - END_IF; - - - IF _progress = 5 THEN - - Messenger.Info(CONCAT('<#Moving to position ID#>: ', INT_TO_STRING(_moveParams.ActionNo))); - inoControl.ActionNo := _moveParams.ActionNo; - IF inoControl.ActionNo = inoStatus.State.ActionNo THEN - inoControl.ActionNo :=255; - _progress := _progress + 1; - END_IF - END_IF; - - IF _progress = 6 THEN - IF inoControl.ActionNo = inoStatus.State.ActionNo THEN - DoneWhen(TRUE); - END_IF - END_IF; - - CallTimers(TRUE); - - THIS^.ThrowWhen(_errorTimer.Q ); -END_IF - -IF THIS^.Error AND NOT _errorMessage.Pinned THEN - THIS^.Restore(); -END_IF]]> - - - - - - - - - - - - - - - - - Executes when task is aborted. - - -~*) -METHOD PROTECTED OnAbort]]> - - ';END_IF; -inoControl.SoftStop := TRUE; -inoControl.QuickStop := FALSE;]]> - - - - - - Executes when task reaches the ```Done``` state . - - -~*) -METHOD PROTECTED OnDone -]]> - - '; END_IF; -_progress:=0;]]> - - - - - - Executes when task reaches the ```Error``` state. - - -~*) -METHOD PROTECTED OnError -VAR - description: STRING; -END_VAR]]> - - '; -IF __ISVALIDREF(inoStatus) THEN THIS^.inoStatus.ActionDescription := description; END_IF; -THIS^._errorMessage.Error(_sb.Clear().Append(description).Append(' To restore acknowledge this alarm.').ToString()).Pin();]]> - - - - - - '; END_IF; -CallTimers(FALSE); -inoControl.QuickStop:=FALSE; -inoControl.SoftStop:=FALSE;]]> - - - - - - Restores this instance to the Ready state. Can be called explicitly or from within one of the restore mechanisms. - - See also - - - -~*) -METHOD Restore : ITcoRestorable]]> - - - - - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMotorsTask.TcPOU b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMotorsTask.TcPOU deleted file mode 100644 index fbf33df16..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMotorsTask.TcPOU +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - ').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoConfig) THEN - _varInfo :=__VARINFO(inoConfig); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoStatus) THEN - _varInfo :=__VARINFO(inoStatus); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSE - - _progress := _progress + 1; - - END_IF - - END_IF - IF _progress = 1 THEN - - _varInfo :=__VARINFO( inoStatus.State.AutoOn); - THIS^.Messenger.OnCondition(_infoTimer.Q AND NOT inoStatus.State.AutoOn).Warning(_sb.Clear().Append('<#Waiting for Auto signal! #>').Append(_varInfo.Symbol).ToString()); - IF inoStatus.State.AutoOn THEN - _progress := _progress + 1; - END_IF; - END_IF; - - - IF _progress = 2 THEN - Messenger.Debug('<#Robot Error Reset#>'); - inoControl.ResetError := inoStatus.State.Error AND _blink.outQ; - IF NOT inoStatus.State.Error THEN - inoControl.ResetError:=FALSE; - _progress := _progress + 1; - END_IF - END_IF; - - IF _progress = 3 THEN - Messenger.Debug('<#Robot Emergency Stop Reset#>'); - inoControl.ResetEmgStop := inoStatus.State.EmgStop AND _blink.outQ; - IF NOT inoStatus.State.EmgStop THEN - inoControl.ResetEmgStop:=FALSE; - _progress := _progress + 1; - END_IF - END_IF; - - - IF _progress = 4 THEN - IF inoStatus.State.Error THEN - _progress := 1; - END_IF - _varInfo :=__VARINFO( inoStatus.State.MotorOnState); - THIS^.Messenger.OnCondition(_infoTimer.Q AND NOT inoStatus.State.MotorOnState).Warning(_sb.Clear().Append('<# Waiting for signal: #>').Append(_varInfo.Symbol).ToString()); - _varInfo :=__VARINFO( inoStatus.State.Error); - THIS^.Messenger.OnCondition(_infoTimer.Q AND NOT inoStatus.State.Error).Warning(_sb.Clear().Append('<# Waiting for signal: #>').Append(_varInfo.Symbol).ToString()); - - inoControl.MotorOn:=_blink.outQ; - IF inoStatus.State.MotorOnState AND NOT inoStatus.State.Error THEN - inoControl.MotorOn:=FALSE; - _progress := _progress + 1; - END_IF - END_IF; - - - - - DoneWhen(inoStatus.State.MotorOnState AND NOT inoStatus.State.Error); - CallTimers(TRUE); - - THIS^.ThrowWhen(_errorTimer.Q ); - -END_IF - -IF THIS^.Error AND NOT _errorMessage.Pinned THEN - THIS^.Restore(); -END_IF]]> - - - - - - - - - - - Executes when task is aborted. - - -~*) -METHOD PROTECTED OnAbort -]]> - - '; END_IF; -]]> - - - - - - Executes when task reaches the ```Done``` state . - - -~*) -METHOD PROTECTED OnDone -]]> - - '; END_IF; -_progress:=0;]]> - - - - - - '; -IF __ISVALIDREF(inoStatus) THEN THIS^.inoStatus.ActionDescription := description; END_IF; -THIS^._errorMessage.Error(_sb.Clear().Append(description).Append(' To restore acknowledge this alarm.').ToString()).Pin();]]> - - - - - - '; END_IF; -CallTimers(FALSE);]]> - - - - - - Restores this instance to the Ready state. Can be called explicitly or from within one of the restore mechanisms. - - See also - - - -~*) -METHOD Restore : ITcoRestorable]]> - - - - - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMovementsTask.TcPOU b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMovementsTask.TcPOU deleted file mode 100644 index 192c4e002..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartMovementsTask.TcPOU +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - ').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoConfig) THEN - _varInfo :=__VARINFO(inoConfig); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoStatus) THEN - _varInfo :=__VARINFO(inoStatus); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSE - _progress := _progress + 1; - END_IF - - END_IF - - IF _progress = 1 THEN - - _varInfo :=__VARINFO( inoStatus.State.CycleOn); - THIS^.Messenger.OnCondition(_infoTimer.Q AND NOT inoStatus.State.CycleOn).Warning(_sb.Clear().Append('<#Waiting for program running signal! #>').Append(_varInfo.Symbol).ToString()); - - _varInfo :=__VARINFO( inoStatus.State.MotorOnState); - THIS^.Messenger.OnCondition(_infoTimer.Q AND NOT inoStatus.State.MotorOnState).Warning(_sb.Clear().Append('<#Waiting for motors are On! #>').Append(_varInfo.Symbol).ToString()); - - _varInfo :=__VARINFO( inoStatus.State.Error); - THIS^.Messenger.OnCondition(_infoTimer.Q AND inoStatus.State.Error).Warning(_sb.Clear().Append('<#Waiting for system is without errors! #>').Append(_varInfo.Symbol).ToString()); - - IF inoStatus.State.CycleOn AND inoStatus.State.MotorOnState AND NOT inoStatus.State.Error THEN - _progress := _progress + 1; - END_IF - - END_IF; - - - IF _progress = 2 THEN - inoControl.GlobalSpeed := _moveParams.GlobalSpeed; - inoControl.ToolNo := _moveParams.ToolNo; - inoControl.WorkobjectNo := _moveParams.WorkobjectNo; - inoControl.PointNo := _moveParams.PointNo; - inoControl.UserSpecSpeed1 := _moveParams.UserSpecSpeed1; - inoControl.UserSpecSpeed2 := _moveParams.UserSpecSpeed2; - inoControl.Coordinates := _moveParams.Coordinates; - - inoControl.ActionNo := 254; - IF inoControl.ActionNo = inoStatus.State.ActionNo THEN - - _progress:=_progress + 1; - END_IF - END_IF; - IF _progress = 3 THEN - IF inoStatus.State.GlobalSpeed = _moveParams.GlobalSpeed AND - inoStatus.State.ToolNo = _moveParams.ToolNo AND - inoStatus.State.WorkobjectNo = _moveParams.WorkobjectNo AND - inoStatus.State.PointNo = _moveParams.PointNo AND - inoStatus.State.UserSpecSpeed1 = _moveParams.UserSpecSpeed1 AND - inoStatus.State.UserSpecSpeed2 =_moveParams.UserSpecSpeed2 AND - TcoAbstractions.CoordinatesAreEqual(inoStatus.State.Coordinates,_moveParams.Coordinates,0.01,0.01,0.01,0.01,0.01,0.01) THEN - inoControl.ActionNo := 255; - _progress:=_progress + 1; - END_IF - END_IF; - - IF _progress = 4 THEN - IF inoControl.ActionNo = inoStatus.State.ActionNo THEN - _progress:=_progress + 1; - END_IF - END_IF; - - - - IF _progress = 5 THEN - - Messenger.Info(CONCAT('<#Moving to position ID#>: ', INT_TO_STRING(_moveParams.ActionNo))); - inoControl.ActionNo := _moveParams.ActionNo; - IF inoControl.ActionNo = inoStatus.State.ActionNo THEN - inoControl.ActionNo :=255; - _progress := _progress + 1; - END_IF - END_IF; - - IF _progress = 6 THEN - IF inoControl.ActionNo = inoStatus.State.ActionNo THEN - DoneWhen(TRUE); - END_IF - END_IF; - - CallTimers(TRUE); - - THIS^.ThrowWhen(_errorTimer.Q OR inoStatus.State.Error); -END_IF - -IF THIS^.Error AND NOT _errorMessage.Pinned THEN - THIS^.Restore(); -END_IF]]> - - - - - - - - - - - - - - - - - Executes when task is aborted. - - -~*) -METHOD PROTECTED OnAbort]]> - - ';END_IF; -inoControl.SoftStop := TRUE; -inoControl.QuickStop := FALSE;]]> - - - - - - Executes when task reaches the ```Done``` state . - - -~*) -METHOD PROTECTED OnDone -]]> - - '; END_IF; -_progress:=0;]]> - - - - - - Executes when task reaches the ```Error``` state. - - - -~*) -METHOD PROTECTED OnError -VAR - description: STRING; -END_VAR]]> - - '; -IF __ISVALIDREF(inoStatus) THEN THIS^.inoStatus.ActionDescription := description; END_IF; -THIS^._errorMessage.Error(_sb.Clear().Append(description).Append(' To restore acknowledge this alarm.').ToString()).Pin(); -]]> - - - - - - '; END_IF; -CallTimers(FALSE); -inoControl.QuickStop:=FALSE; -inoControl.SoftStop:=FALSE;]]> - - - - - - Restores this instance to the Ready state. Can be called explicitly or from within one of the restore mechanisms. - - See also - - - -~*) -METHOD Restore : ITcoRestorable]]> - - - - - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartProgramTask.TcPOU b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartProgramTask.TcPOU deleted file mode 100644 index 3c9f2e796..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Starts/StartProgramTask.TcPOU +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - ').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoConfig) THEN - _varInfo :=__VARINFO(inoConfig); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoStatus) THEN - _varInfo :=__VARINFO(inoStatus); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSE - _progress := _progress + 1; - END_IF - - END_IF - IF _progress = 1 THEN - inoControl.StartProgram:=_blink.outQ; - _varInfo :=__VARINFO( inoStatus.State.CycleOn); - THIS^.Messenger.OnCondition(_infoTimer.Q AND NOT inoStatus.State.CycleOn).Warning(_sb.Clear().Append('<#Waiting for program running signal! #>').Append(_varInfo.Symbol).ToString()); - - _varInfo :=__VARINFO( inoStatus.State.SystemInputBusy); - THIS^.Messenger.OnCondition(_infoTimer.Q AND inoStatus.State.SystemInputBusy).Warning(_sb.Clear().Append('<#Waiting for system ready signal! #>').Append(_varInfo.Symbol).ToString()); - - IF inoStatus.State.CycleOn AND NOT inoStatus.State.SystemInputBusy THEN - inoControl.StartProgram:=FALSE; - END_IF - END_IF; - - - - DoneWhen(inoStatus.State.CycleOn ); - CallTimers(TRUE); - - THIS^.ThrowWhen(_errorTimer.Q OR inoStatus.State.Error); -END_IF - -IF THIS^.Error AND NOT _errorMessage.Pinned THEN - THIS^.Restore(); -END_IF]]> - - - - - - - - - - - - - - - - - Executes when task is aborted. - - -~*) -METHOD PROTECTED OnAbort -]]> - - ';END_IF; -]]> - - - - - - Executes when task reaches the ```Done``` state . - - -~*) -METHOD PROTECTED OnDone -]]> - - ';END_IF; -_progress:=0;]]> - - - - - - Executes when task reaches the ```Error``` state. - - -~*) -METHOD PROTECTED OnError -VAR - description: STRING; -END_VAR]]> - - '; -IF __ISVALIDREF(inoStatus) THEN THIS^.inoStatus.ActionDescription := description; END_IF; -THIS^._errorMessage.Error(_sb.Clear().Append(description).Append(' To restore acknowledge this alarm.').ToString()).Pin();]]> - - - - - - '; END_IF; -CallTimers(FALSE);]]> - - - - - - Restores this instance to the Ready state. Can be called explicitly or from within one of the restore mechanisms. - - See also - - - -~*) -METHOD Restore : ITcoRestorable]]> - - - - - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopMotorsTask.TcPOU b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopMotorsTask.TcPOU deleted file mode 100644 index 9bb1090cb..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopMotorsTask.TcPOU +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - ').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoConfig) THEN - _varInfo :=__VARINFO(inoConfig); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoStatus) THEN - _varInfo :=__VARINFO(inoStatus); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSE - _progress := _progress + 1; - END_IF - - END_IF - IF _progress = 1 THEN - - - inoControl.MotorOff := TRUE ; - - IF inoStatus.State.MotorOffState AND NOT inoStatus.State.SystemInputBusy THEN - inoControl.MotorOff :=FALSE; - _progress:=0; - END_IF - END_IF - - _varInfo :=__VARINFO( inoStatus.State.MotorOffState); - THIS^.Messenger.OnCondition(_infoTimer.Q).Warning(_sb.Clear().Append('<# Waiting for signal: #>').Append(_varInfo.Symbol).ToString()); - - DoneWhen(inoStatus.State.MotorOffState); - CallTimers(TRUE); - - THIS^.ThrowWhen(_errorTimer.Q); - -END_IF; - -IF THIS^.Error AND NOT _errorMessage.Pinned THEN - THIS^.Restore(); -END_IF]]> - - - - - - - - - - - Executes when task is aborted. - - -~*) -METHOD PROTECTED OnAbort -]]> - - ';END_IF; -inoControl.MotorOff :=FALSE; -]]> - - - - - - Executes when task reaches the ```Done``` state . - - -~*) -METHOD PROTECTED OnDone -]]> - - ';END_IF; -]]> - - - - - - Executes when task reaches the ```Error``` state. - - -~*) -METHOD PROTECTED OnError -VAR - description: STRING; -END_VAR]]> - - '; -IF __ISVALIDREF(inoStatus) THEN THIS^.inoStatus.ActionDescription := description; END_IF; -THIS^._errorMessage.Error(_sb.Clear().Append(description).Append(' To restore acknowledge this alarm.').ToString()).Pin();]]> - - - - - - '; END_IF; -]]> - - - - - - Restores this instance to the Ready state. Can be called explicitly or from within one of the restore mechanisms. - - See also - - - -~*) -METHOD Restore : ITcoRestorable]]> - - - - - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopMovementsAndProgramTask.TcPOU b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopMovementsAndProgramTask.TcPOU deleted file mode 100644 index 05d3b14d4..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopMovementsAndProgramTask.TcPOU +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - ').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoConfig) THEN - _varInfo :=__VARINFO(inoConfig); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoStatus) THEN - _varInfo :=__VARINFO(inoStatus); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSE - _progress := _progress + 1; - END_IF - - END_IF - IF _progress = 1 THEN - inoControl.SoftStop := TRUE; - inoControl.QuickStop := FALSE; - - IF _stopType = TcoAbstractions.eTcoRoboticsStopType.Quick THEN - inoControl.SoftStop := FALSE; - inoControl.QuickStop := TRUE; - END_IF - - - IF inoStatus.State.MoveInactive THEN - _progress := _progress + 1; - END_IF - END_IF; - - IF _progress = 2 THEN - inoControl.StopProgram:=TRUE; - IF NOT inoStatus.State.CycleOn THEN - _progress := _progress + 1; - END_IF - END_IF; - - IF _progress = 3 THEN - inoControl.SoftStop := FALSE; - inoControl.QuickStop := FALSE; - inoControl.StopProgram:=FALSE; - END_IF; - - _varInfo :=__VARINFO( inoStatus.State.MoveInactive); - THIS^.Messenger.OnCondition(_infoTimer.Q AND NOT inoStatus.State.MoveInactive).Warning(_sb.Clear().Append('<# Waiting for signal: #>').Append(_varInfo.Symbol).ToString()); - _varInfo :=__VARINFO( inoStatus.State.CycleOn); - THIS^.Messenger.OnCondition(_infoTimer.Q AND inoStatus.State.CycleOn) - .Warning(_sb.Clear().Append('<# Waiting for signal: #>').Append(_varInfo.Symbol).Append('<# is OFF #>').ToString()); - - DoneWhen( inoStatus.State.MoveInactive AND NOT inoStatus.State.CycleOn); - CallTimers(TRUE); - - THIS^.ThrowWhen(_errorTimer.Q); -END_IF - -IF THIS^.Error AND NOT _errorMessage.Pinned THEN - THIS^.Restore(); -END_IF]]> - - - - - - - - - - - - - - - - - Executes when task is aborted. - - -~*) -METHOD PROTECTED OnAbort -]]> - - ';END_IF; -inoControl.SoftStop := FALSE; -inoControl.QuickStop := FALSE; -inoControl.StopProgram:=FALSE;]]> - - - - - - Executes when task reaches the ```Done``` state . - - -~*) -METHOD PROTECTED OnDone -]]> - - ';END_IF; -_progress:=0;]]> - - - - - - Executes when task reaches the ```Error``` state. - - - -~*) -METHOD PROTECTED OnError -VAR - description: STRING; -END_VAR]]> - - '; -IF __ISVALIDREF(inoStatus) THEN THIS^.inoStatus.ActionDescription := description; END_IF; -THIS^._errorMessage.Error(_sb.Clear().Append(description).Append(' To restore acknowledge this alarm.').ToString()).Pin();]]> - - - - - - '; END_IF; -CallTimers(FALSE);]]> - - - - - - Restores this instance to the Ready state. Can be called explicitly or from within one of the restore mechanisms. - - See also - - - -~*) -METHOD Restore : ITcoRestorable]]> - - - - - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopMovementsTask.TcPOU b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopMovementsTask.TcPOU deleted file mode 100644 index f6ec18f40..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopMovementsTask.TcPOU +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - ').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoConfig) THEN - _varInfo :=__VARINFO(inoConfig); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoStatus) THEN - _varInfo :=__VARINFO(inoStatus); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSE - _progress := _progress + 1; - END_IF - - END_IF - IF _progress = 1 THEN - inoControl.SoftStop := TRUE ; - inoControl.QuickStop := FALSE; - - IF _stopType = TcoAbstractions.eTcoRoboticsStopType.Quick THEN - inoControl.SoftStop := FALSE; - inoControl.QuickStop := TRUE; - END_IF - IF inoStatus.State.MoveInactive THEN - inoControl.SoftStop := FALSE ; - inoControl.QuickStop := FALSE; - END_IF - END_IF; - - _varInfo :=__VARINFO( inoStatus.State.MoveInactive); - THIS^.Messenger.OnCondition(_infoTimer.Q).Warning(_sb.Clear().Append('<# Waiting for signal: #>').Append(_varInfo.Symbol).ToString()); - - - DoneWhen(inoStatus.State.MoveInactive); - CallTimers(TRUE); - - THIS^.ThrowWhen(_errorTimer.Q); -END_IF - -IF THIS^.Error AND NOT _errorMessage.Pinned THEN - THIS^.Restore(); -END_IF]]> - - - - - - - - - - - - - - - - - Executes when task is aborted. - - -~*) -METHOD PROTECTED OnAbort -]]> - - ';END_IF; -inoControl.SoftStop := FALSE; -inoControl.QuickStop := FALSE;]]> - - - - - - Executes when task reaches the ```Done``` state . - - -~*) -METHOD PROTECTED OnDone -]]> - - ';END_IF; -_progress:=0;]]> - - - - - - Executes when task reaches the ```Error``` state. - - -~*) -METHOD PROTECTED OnError -VAR - description: STRING; -END_VAR]]> - - '; -IF __ISVALIDREF(inoStatus) THEN THIS^.inoStatus.ActionDescription := description; END_IF; -THIS^._errorMessage.Error(_sb.Clear().Append(description).Append(' To restore acknowledge this alarm.').ToString()).Pin();]]> - - - - - - '; END_IF; -CallTimers(FALSE);]]> - - - - - - Restores this instance to the Ready state. Can be called explicitly or from within one of the restore mechanisms. - - See also - - - -~*) -METHOD Restore : ITcoRestorable]]> - - - - - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopProgramTask.TcPOU b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopProgramTask.TcPOU deleted file mode 100644 index 801ccfd1b..000000000 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/RoboticsTasks/Stops/StopProgramTask.TcPOU +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - ').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoConfig) THEN - _varInfo :=__VARINFO(inoConfig); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSIF NOT __ISVALIDREF(inoStatus) THEN - _varInfo :=__VARINFO(inoStatus); - Messenger.Programming(_sb.Clear().Append('<#Invalid reference: #>').Append(_varInfo.Symbol).ToString()).Pin(); - ELSE - _progress := _progress + 1; - END_IF - - END_IF - IF _progress = 1 THEN - inoControl.StopProgram:=TRUE ; - - IF NOT inoStatus.State.CycleOn AND NOT inoStatus.State.SystemInputBusy THEN - inoControl.StopProgram:=FALSE; - END_IF - END_IF; - - - _varInfo :=__VARINFO( inoStatus.State.CycleOn); - THIS^.Messenger.OnCondition(_infoTimer.Q AND inoStatus.State.CycleOn) - .Warning(_sb.Clear().Append('<# Waiting for signal: #>').Append(_varInfo.Symbol).Append('<# is OFF #>').ToString()); - - DoneWhen(NOT inoStatus.State.CycleOn ); - CallTimers(TRUE); - - THIS^.ThrowWhen(_errorTimer.Q); -END_IF - -IF THIS^.Error AND NOT _errorMessage.Pinned THEN - THIS^.Restore(); -END_IF]]> - - - - - - - - - - - - - - - - - Executes when task is aborted. - - -~*) -METHOD PROTECTED OnAbort -]]> - - ';END_IF; -inoControl.StopProgram:=FALSE;]]> - - - - - - Executes when task reaches the ```Done``` state . - - -~*) -METHOD PROTECTED OnDone -]]> - - ';END_IF; -_progress:=0;]]> - - - - - - Executes when task reaches the ```Error``` state. -> - - -~*) -METHOD PROTECTED OnError -VAR - description: STRING; -END_VAR]]> - - '; -IF __ISVALIDREF(inoStatus) THEN THIS^.inoStatus.ActionDescription := description; END_IF; -THIS^._errorMessage.Error(_sb.Clear().Append(description).Append(' To restore acknowledge this alarm.').ToString()).Pin();]]> - - - - - - '; END_IF; -CallTimers(FALSE);]]> - - - - - - Restores this instance to the Ready state. Can be called explicitly or from within one of the restore mechanisms. - - See also - - - -~*) -METHOD Restore : ITcoRestorable]]> - - - - - - \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Structs/eTcoQWlSeriesSupplyGetCommands_v_1_x_x.TcDUT b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Structs/eTcoQWlSeriesSupplyGetCommands_v_1_x_x.TcDUT new file mode 100644 index 000000000..85e2bfcf1 --- /dev/null +++ b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Structs/eTcoQWlSeriesSupplyGetCommands_v_1_x_x.TcDUT @@ -0,0 +1,50 @@ + + + + + + \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Structs/eTcoQWlSeriesSupplySetCommands_v_1_x_x.TcDUT b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Structs/eTcoQWlSeriesSupplySetCommands_v_1_x_x.TcDUT new file mode 100644 index 000000000..40590c2ec --- /dev/null +++ b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/POUs/Prototypes/Structs/eTcoQWlSeriesSupplySetCommands_v_1_x_x.TcDUT @@ -0,0 +1,53 @@ + + + + + + \ No newline at end of file diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/TcoAimTtiPowerSupply.plcproj b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/TcoAimTtiPowerSupply.plcproj index d6992426b..d1937e5c4 100644 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/TcoAimTtiPowerSupply.plcproj +++ b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupply/TcoAimTtiPowerSupply.plcproj @@ -36,67 +36,44 @@ - + Code - + Code - + Code - + Code - - Code - - - Code - - - Code - - - Code - - + Code - - Code - - - Code - - - Code - - - Code - - + Code - + Code - + Code - + Code - + Code - + Code + false - + Code - + Code @@ -104,12 +81,10 @@ - - - - - + + + diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupplyTests/TcoAimTtiPowerSupplyTests.plcproj b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupplyTests/TcoAimTtiPowerSupplyTests.plcproj index 3f361fbf5..4e8a55a2a 100644 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupplyTests/TcoAimTtiPowerSupplyTests.plcproj +++ b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupplyTests/TcoAimTtiPowerSupplyTests.plcproj @@ -82,7 +82,6 @@ TcoAimTtiPowerSupply, 0.6.0.913 (Vortex.Library) - TcoAimTtiPowerSupply TcoCore, 0.6.0.913 (Vortex.Library) diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupplyTests/Tests/TcoContext/WpfContext.TcPOU b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupplyTests/Tests/TcoContext/WpfContext.TcPOU index f2e6d6b4f..c80ce2cf5 100644 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupplyTests/Tests/TcoContext/WpfContext.TcPOU +++ b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/TcoAimTtiPowerSupplyTests/Tests/TcoContext/WpfContext.TcPOU @@ -4,10 +4,10 @@ "} -// _robot1 : TcoAbbRobotics.TcoIrc5_v_1_x_x(THIS^); -// -// + {attribute addProperty Name "<#QL355P SUPPLY#>"} + _supply : TcoAimTtiPowerSupply.TcoQl355P_v_1_x_x(THIS^); + + _sequence1 : TcoCore.TcoSequence(THIS^, eRestoreMode.None); _observer : TcoCore.TcoSequencerObserver(THIS^); @@ -15,6 +15,7 @@ VAR _sequence1Task : SequenceTask(THIS^); _dialog : TcoCore.TcoDialog(THIS^); + _enable: BOOL; END_VAR ]]> @@ -34,16 +35,19 @@ END_VAR METHOD PROTECTED Main]]> outVoltage).Done THEN + IF outVoltage=4.0 THEN + seq.CompleteStep(); + END_IF; + END_IF + //-------------------------------------------------------- END_IF; -IF (seq.Step(inStepID := 15, +IF (seq.Step(inStepID := 19, inEnabled := TRUE, - inStepDescription := 'START MOVEMENTS')) THEN + inStepDescription := 'READY TO START')) THEN + //-------------------------------------------------------- + + _noOfAttmets:=0; + + answer := _dialog + .Show() + .WithType(eDialogType.Question) + .WithCaption('Ready to go?') + .WithText('Do you really want to setup current?') + .WithYesNo().Answer; + // + + IF (answer = TcoCore.eDialogAnswer.Yes) THEN + seq.CompleteStep(); + ELSIF(answer = TcoCore.eDialogAnswer.No) THEN + _sequence1Task.Restore(); + END_IF; + + //-------------------------------------------------------- +END_IF; + + +IF (seq.Step(inStepID := 20, + inEnabled := TRUE, + inStepDescription := 'RESTORE')) THEN //-------------------------------------------------------- - _param.ActionNo:=100; - IF _robot1.StartMovements(inData:=_param).Done THEN - seq.CompleteStep(); - _robot1.Restore(); - END_IF + _supply.Restore(); + seq.CompleteStep(); + +//-------------------------------------------------------- +END_IF; +IF (seq.Step(inStepID := 21, + inEnabled := TRUE, + inStepDescription := 'SET CURRENT')) THEN +//-------------------------------------------------------- + cmd.Command:=eTcoQWlSeriesSupplySetCommands_v_1_x_x.I; + cmd.NrfValue:=0.5; + cmd.NValue:=1; + IF _supply.SetCommand(inCommand:=cmd).Done THEN + seq.CompleteStep(); + END_IF + //-------------------------------------------------------- END_IF; +IF (seq.Step(inStepID := 22, + inEnabled := TRUE, + inStepDescription := 'GET CURRENT')) THEN +//-------------------------------------------------------- + getCmd.Command:=eTcoQWlSeriesSupplyGetCommands_v_1_x_x.I; + getCmd.NValue:=1; + IF _supply.GetCommand(inCommand:=getCmd).Done THEN + IF _supply.Status.State.Nr2Value=0.5 THEN + seq.CompleteStep(); + END_IF; + END_IF + +//-------------------------------------------------------- +END_IF; -IF (seq.Step(inStepID := 16, +IF (seq.Step(inStepID := 23, inEnabled := TRUE, - inStepDescription := 'START ANOTHER MOVE MOVEMENTS')) THEN + inStepDescription := 'SET CURRENT ANOTHER WAY')) THEN //-------------------------------------------------------- - _param.ActionNo:=1; - _param.GlobalSpeed:=90; - IF _robot1.StartMovements(inData:=_param).Done THEN - IF _noOfAttmets<_maxAllowedAttempts THEN - _noOfAttmets:=_noOfAttmets+1; - seq.RequestStep(14); - _robot1.Restore(); - ELSE - seq.CompleteStep(); - end_if; - END_IF + IF _supply.SetCurrent(inCurrent:=0.2).Done THEN + seq.CompleteStep(); + END_IF + +//-------------------------------------------------------- +END_IF; + +IF (seq.Step(inStepID := 24, + inEnabled := TRUE, + inStepDescription := 'GET CURRENT ANOTHER WAY')) THEN +//-------------------------------------------------------- + IF _supply.GetCurrent(outCurrent=>outCurrent).Done THEN + IF outCurrent=0.2 THEN + seq.CompleteStep(); + END_IF; + END_IF + //-------------------------------------------------------- END_IF; +IF (seq.Step(inStepID := 29, + inEnabled := TRUE, + inStepDescription := 'READY TO START')) THEN + //-------------------------------------------------------- + _noOfAttmets:=0; + answer := _dialog + .Show() + .WithType(eDialogType.Question) + .WithCaption('Ready to go?') + .WithText('Do you really want to set output?') + .WithYesNo().Answer; + // + + IF (answer = TcoCore.eDialogAnswer.Yes) THEN + seq.CompleteStep(); + ELSIF(answer = TcoCore.eDialogAnswer.No) THEN + _sequence1Task.Restore(); + END_IF; + //-------------------------------------------------------- +END_IF; +IF (seq.Step(inStepID := 30, + inEnabled := TRUE, + inStepDescription := 'RESTORE')) THEN +//-------------------------------------------------------- + + _supply.Restore(); + seq.CompleteStep(); + + +//-------------------------------------------------------- +END_IF; +IF (seq.Step(inStepID := 31, + inEnabled := TRUE, + inStepDescription := 'SET ON OUTPUT')) THEN +//-------------------------------------------------------- + cmd.Command:=eTcoQWlSeriesSupplySetCommands_v_1_x_x.OP; + cmd.NrfValue:=1; + cmd.NValue:=1; + IF _supply.SetCommand(inCommand:=cmd).Done THEN + seq.CompleteStep(); + END_IF + +//-------------------------------------------------------- +END_IF; +IF (seq.Step(inStepID := 32, + inEnabled := TRUE, + inStepDescription := 'GET ON OUTPUT')) THEN +//-------------------------------------------------------- + getCmd.Command:=eTcoQWlSeriesSupplyGetCommands_v_1_x_x.OP; + getCmd.NValue:=1; + IF _supply.GetCommand(inCommand:=getCmd).Done THEN + IF _supply.Status.State.Nr1Value=1 THEN + seq.CompleteStep(); + END_IF; + END_IF + +//-------------------------------------------------------- +END_IF; +IF (seq.Step(inStepID := 33, + inEnabled := TRUE, + inStepDescription := 'SET OFF OUTPUT ANOTHER WAY')) THEN +//-------------------------------------------------------- + + IF _supply.SetOutputOff().Done THEN + seq.CompleteStep(); + END_IF + +//-------------------------------------------------------- +END_IF; +IF (seq.Step(inStepID := 34, + inEnabled := TRUE, + inStepDescription := 'GET IF OUTPUT IS OFF ANOTHER WAY')) THEN +//-------------------------------------------------------- + IF _supply.GetOutputIsOff(outIsOff=>isOff).Done THEN + IF isOff=TRUE THEN + seq.CompleteStep(); + END_IF; + END_IF + +//-------------------------------------------------------- +END_IF; -// -IF (seq.Step(inStepID := 500, +IF (seq.Step(inStepID := 40, inEnabled := TRUE, - inStepDescription := 'EXAMPLE OF MOVMENT ABORTED')) THEN -// -------------------------------------------------------- + inStepDescription := 'READY TO START')) THEN + //-------------------------------------------------------- + + _noOfAttmets:=0; + _maxAllowedAttempts:=100; answer := _dialog .Show() .WithType(eDialogType.Question) - .WithCaption('Abort movement?') - .WithText('Do you want to start movements and abort it?') + .WithCaption('Ready to go?') + .WithText('Do you really want to set output in cycle?') .WithYesNo().Answer; - + // IF (answer = TcoCore.eDialogAnswer.Yes) THEN seq.CompleteStep(); @@ -236,63 +387,96 @@ IF (seq.Step(inStepID := 500, _sequence1Task.Restore(); END_IF; -// -------------------------------------------------------- + //-------------------------------------------------------- END_IF; -IF (seq.Step(inStepID := 525, + + +IF (seq.Step(inStepID := 41, inEnabled := TRUE, - inStepDescription := 'STOP MOVEMENT EXAMPLE')) THEN -// -------------------------------------------------------- + inStepDescription := 'SET ON OUTPUT')) THEN +//-------------------------------------------------------- + cmd.Command:=eTcoQWlSeriesSupplySetCommands_v_1_x_x.OP; + cmd.NrfValue:=1; + cmd.NValue:=1; + IF _supply.SetCommand(inCommand:=cmd).Done THEN + seq.CompleteStep(); + END_IF +//-------------------------------------------------------- +END_IF; - answer := _dialog - .Show() - .WithType(eDialogType.Question) - .WithCaption('Movement running') - .WithText('Do you want to abort movement?') - .WithYesNo().Answer; - - - IF (answer = TcoCore.eDialogAnswer.Yes) THEN - _robot1.StopMovements(inStopType:=TcoAbstractions.eTcoRoboticsStopType.Quick); - seq.CompleteStep(); - ELSIF(answer = TcoCore.eDialogAnswer.No) THEN - _sequence1Task.Restore(); - END_IF; +IF (seq.Step(inStepID := 42, + inEnabled := TRUE, + inStepDescription := 'GET ON OUTPUT')) THEN +//-------------------------------------------------------- + getCmd.Command:=eTcoQWlSeriesSupplyGetCommands_v_1_x_x.OP; + getCmd.NValue:=1; + IF _supply.GetCommand(inCommand:=getCmd).Done THEN + IF _supply.Status.State.Nr1Value=1 THEN + seq.CompleteStep(); + END_IF; + END_IF - _param.ActionNo:=100; - _param.GlobalSpeed :=20; - IF _robot1.StartMovements(inData:=_param).Done THEN - seq.CompleteStep(); - END_IF +//-------------------------------------------------------- +END_IF; + +IF (seq.Step(inStepID := 43, + inEnabled := TRUE, + inStepDescription := 'SET OFF OUTPUT ANOTHER WAY')) THEN +//-------------------------------------------------------- + IF _supply.SetOutputOff().Done THEN + seq.CompleteStep(); + END_IF - -// -------------------------------------------------------- +//-------------------------------------------------------- END_IF; -IF (seq.Step(inStepID := 600, +IF (seq.Step(inStepID := 44, inEnabled := TRUE, - inStepDescription := 'ASKING FOR RESTORING')) THEN -// -------------------------------------------------------- + inStepDescription := 'GET IF OUTPUT IS OFF ANOTHER WAY')) THEN +//-------------------------------------------------------- + IF _supply.GetOutputIsOff(outIsOff=>isOff).Done THEN + IF isOff=TRUE THEN + seq.CompleteStep(); + END_IF; + END_IF + +//-------------------------------------------------------- +END_IF; - answer := _dialog - .Show() - .WithType(eDialogType.Question) - .WithCaption('Question?') - .WithText('Do you want to restore TcoIrc5 component?') - .WithYesNo().Answer; - - - IF (answer = TcoCore.eDialogAnswer.Yes) THEN - _robot1.Restore(); + + + +IF (seq.Step(inStepID := 45, + inEnabled := TRUE, + inStepDescription := 'REPEAT IT IF NECESSARY')) THEN +//-------------------------------------------------------- + + + IF _noOfAttmets<_maxAllowedAttempts THEN + _noOfAttmets:=_noOfAttmets+1; + seq.RequestStep(41); + _supply.Restore(); + ELSE seq.CompleteStep(); - ELSIF(answer = TcoCore.eDialogAnswer.No) THEN - _sequence1Task.Restore(); - END_IF; -// -------------------------------------------------------- + end_if; + + +//-------------------------------------------------------- END_IF; -*) + + + + + + + + + + + IF (seq.Step(inStepID := seq.RESTORE_STEP_ID, inEnabled := TRUE, inStepDescription := 'RETURN TO THE START OF THE SEQUENCE')) THEN diff --git a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/XaeTcoAimTtiPowerSupply.tsproj b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/XaeTcoAimTtiPowerSupply.tsproj index 3901950dc..9bb012ced 100644 --- a/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/XaeTcoAimTtiPowerSupply.tsproj +++ b/src/TcoAimTtiPowerSupply/src/XaeTcoAimTtiPowerSupply/XaeTcoAimTtiPowerSupply.tsproj @@ -2137,7 +2137,7 @@ External Setpoint Generation: 424dd6020000000000003600000028000000100000000e0000000100180000000000a0020000c40e0000c40e00000000000000000000ff00ffff00ffff00ffff00ffff00ffff00ff808080808080808080808080808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c000ffffc0c0c000ffff808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0ff0000c0c0c0ff0000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff0000ff0000ff0000ff0000ff0000ff0000c0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff0000ff0000ff0000ff0000ff0000ff0000c0c0c00000ffc0c0c00000ff808080ff00ffff00ffff00ffff00ffff00ffff0000ff0000ff0000ff0000ff0000ff0000c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff0000ff0000ff0000ff0000ff0000ff0000c0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff0000ff0000ff0000ff0000ff0000ff0000c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff0000ff0000ff0000ff0000ff0000ff0000c0c0c0008000c0c0c0008000808080ff00ffff00ffff00ffff00ffff00ffff0000ff0000ff0000ff0000ff0000ff0000c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff 424dd6020000000000003600000028000000100000000e0000000100180000000000a0020000c40e0000c40e00000000000000000000ff00ff000000000000ff00ffff00ffff00ff808080808080808080808080808080ff00ffff00ffff00ffff00ffff00ff000000ff00ffff00ff000000ff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff000000ff00ffff00ffff00ffff00ffff00ffc0c0c000ffffc0c0c000ffff808080ff00ffff00ffff00ffff00ffff00ff000000ff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff000000ff00ffff00ff000000ff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ff000000000000ff00ffff00ffff00ffc0c0c0ff0000c0c0c0ff0000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c00000ffc0c0c00000ff808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0008000c0c0c0008000808080ff00ffff00ffff00ffff00ffff00ff007fff007fff007fff007fff007fff007fffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff - + @@ -2815,7 +2815,7 @@ External Setpoint Generation: - + TcoAimTtiPowerSupply Instance {08500001-0000-0000-F000-000000000064} @@ -2835,8 +2835,8 @@ External Setpoint Generation: - - + + TcoAimTtiPowerSupplyTests Instance {08500001-0000-0000-F000-000000000064} diff --git a/src/TcoAimTtiPowerSupply/tests/TcoAimTtiPowerSupply.Wpf.Sandbox/App.xaml.cs b/src/TcoAimTtiPowerSupply/tests/TcoAimTtiPowerSupply.Wpf.Sandbox/App.xaml.cs index 5ab2e1034..fcb9b11ac 100644 --- a/src/TcoAimTtiPowerSupply/tests/TcoAimTtiPowerSupply.Wpf.Sandbox/App.xaml.cs +++ b/src/TcoAimTtiPowerSupply/tests/TcoAimTtiPowerSupply.Wpf.Sandbox/App.xaml.cs @@ -29,10 +29,11 @@ public App() : base() TcoAimTtiPowerSupplyTests.Entry.TcoAimTtiPowerSupplyTestsPlc.Connector.BuildAndStart(); TcoAimTtiPowerSupplyTests.Entry.TcoAimTtiPowerSupplyTestsPlc.MAIN._wpfContextCall.Synchron = true; TcoAimTtiPowerSupplyTests.Entry.TcoAimTtiPowerSupplyTestsPlc.MAIN._wpfContext._serviceModeActive.Synchron = true; + TcoAimTtiPowerSupplyTests.Entry.TcoAimTtiPowerSupplyTestsPlc.MAIN._wpfContext._supply.Initialize(); this.ShutdownMode = ShutdownMode.OnLastWindowClose; } - - + + } } diff --git a/src/TcoAimTtiPowerSupply/tests/TcoAimTtiPowerSupply.Wpf.Sandbox/MainWindow.xaml b/src/TcoAimTtiPowerSupply/tests/TcoAimTtiPowerSupply.Wpf.Sandbox/MainWindow.xaml index ea19dcd16..9d76a1637 100644 --- a/src/TcoAimTtiPowerSupply/tests/TcoAimTtiPowerSupply.Wpf.Sandbox/MainWindow.xaml +++ b/src/TcoAimTtiPowerSupply/tests/TcoAimTtiPowerSupply.Wpf.Sandbox/MainWindow.xaml @@ -13,46 +13,28 @@ - + - + - - - - - - - - - - - - - + + - - - - - - - - - + + diff --git a/src/TcoAimTtiPowerSupply/tests/TcoAimTtiPowerSupplyTestsConnector/Properties/Localizations.resx b/src/TcoAimTtiPowerSupply/tests/TcoAimTtiPowerSupplyTestsConnector/Properties/Localizations.resx index d91b46123..d69a0485a 100644 --- a/src/TcoAimTtiPowerSupply/tests/TcoAimTtiPowerSupplyTestsConnector/Properties/Localizations.resx +++ b/src/TcoAimTtiPowerSupply/tests/TcoAimTtiPowerSupplyTestsConnector/Properties/Localizations.resx @@ -117,7 +117,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Abb IRC 5 + + QL355P SUPPLY \ No newline at end of file