diff --git a/CMakeLists.txt b/CMakeLists.txt index 01d6453..184ccef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,8 +9,8 @@ set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools SvgWidgets Gui Network PrintSupport) -find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools SvgWidgets Gui Network PrintSupport) +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools SvgWidgets Gui Network PrintSupport Positioning Location Qml QuickWidgets) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools SvgWidgets Gui Network PrintSupport Positioning Location Qml QuickWidgets) set(TS_FILES FemaSoftware_ru_RU.ts) @@ -54,7 +54,10 @@ if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) journalservice.h logs_r.h qcustomplot.h qcustomplot.cpp - + plotservice.h + logwidget.h logwidget.cpp + apiform.h apiform.cpp apiform.ui + serverwidget.h serverwidget.cpp ) @@ -80,7 +83,7 @@ else() qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) endif() -target_link_libraries(FemaSoftware PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::SvgWidgets Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::PrintSupport) +target_link_libraries(FemaSoftware PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::SvgWidgets Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::PrintSupport Qt${QT_VERSION_MAJOR}::Positioning Qt${QT_VERSION_MAJOR}::Qml Qt${QT_VERSION_MAJOR}::QuickWidgets Qt${QT_VERSION_MAJOR}::Location) # Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1. diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user index a8aa297..22ba270 100644 --- a/CMakeLists.txt.user +++ b/CMakeLists.txt.user @@ -1,10 +1,10 @@ - + EnvironmentId - {0f80b2dd-ddfc-4d50-9ae5-0a805fa2dbe5} + {13b89f84-ee4a-4465-9e05-91bc83d27758} ProjectExplorer.Project.ActiveTarget @@ -103,21 +103,21 @@ 2 false - -DCMAKE_GENERATOR:STRING=Ninja --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} + -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DCMAKE_BUILD_TYPE:STRING=Debug +-DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} - 0 - D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-Debug +-DCMAKE_BUILD_TYPE:STRING=Debug +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} + 1 + E:\projects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-Debug - FemaSoftware + all false @@ -160,15 +160,15 @@ 2 false - -DCMAKE_GENERATOR:STRING=Ninja --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} + -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DCMAKE_BUILD_TYPE:STRING=Release +-DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} - D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-Release +-DCMAKE_BUILD_TYPE:STRING=Release +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} + E:\projects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-Release @@ -178,7 +178,6 @@ false true - Build CMakeProjectManager.MakeStep 1 @@ -195,7 +194,6 @@ false true - Build CMakeProjectManager.MakeStep 1 @@ -216,15 +214,15 @@ 2 false - -DCMAKE_GENERATOR:STRING=Ninja --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} + -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} - D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-RelWithDebInfo +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} + E:\projects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-RelWithDebInfo @@ -270,16 +268,16 @@ 2 false - -DCMAKE_GENERATOR:STRING=Ninja --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} + -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} 0 - D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-Profile + E:\projects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-Profile @@ -325,724 +323,15 @@ 2 false - -DCMAKE_GENERATOR:STRING=Ninja --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} + -DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DCMAKE_BUILD_TYPE:STRING=MinSizeRel +-DCMAKE_GENERATOR:STRING=Ninja -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} - D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-MinSizeRel - - - - - all - - false - - true - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - - clean - - false - - true - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Minimum Size Release - CMakeProjectManager.CMakeBuildConfiguration - - 5 - - - 0 - Deploy - Deploy - ProjectExplorer.BuildSteps.Deploy - - 1 - - false - ProjectExplorer.DefaultDeployConfiguration - - - - - - - - - false - - true - ApplicationManagerPlugin.Deploy.CMakePackageStep - - - install-package --acknowledge - true - Install Application Manager package - ApplicationManagerPlugin.Deploy.InstallPackageStep - - - - - - - - 2 - Deploy - Deploy - ProjectExplorer.BuildSteps.Deploy - - 1 - - false - ApplicationManagerPlugin.Deploy.Configuration - - 2 - - true - true - 0 - true - - 2 - - false - -e cpu-cycles --call-graph "dwarf,4096" -F 250 - FemaSoftware - CMakeProjectManager.CMakeRunConfiguration. - FemaSoftware - false - true - true - true - D:/Projects/QTProjects/FemaLocalSoftware/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug - - 1 - - - - ProjectExplorer.Project.Target.1 - - Desktop - Desktop Qt 6.8.1 MSVC2022 64bit - Desktop Qt 6.8.1 MSVC2022 64bit - qt.qt6.681.win64_msvc2022_64_kit - 1 - 0 - 0 - - Debug - 2 - false - - -DCMAKE_GENERATOR:STRING=Ninja --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DCMAKE_BUILD_TYPE:STRING=Debug --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} - 0 - D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MSVC2022_64bit-Debug - - - - - all - - false - - true - Build - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - - clean - - false - - true - Build - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Debug - CMakeProjectManager.CMakeBuildConfiguration - - - Release - 2 - false - - -DCMAKE_GENERATOR:STRING=Ninja --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DCMAKE_BUILD_TYPE:STRING=Release --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} - D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MSVC2022_64bit-Release - - - - - all - - false - - true - Build - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - - clean - - false - - true - Build - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Release - CMakeProjectManager.CMakeBuildConfiguration - - - RelWithDebInfo - 2 - false - - -DCMAKE_GENERATOR:STRING=Ninja --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} - D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MSVC2022_64bit-RelWithDebInfo - - - - - all - - false - - true - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - - clean - - false - - true - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Release with Debug Information - CMakeProjectManager.CMakeBuildConfiguration - - - RelWithDebInfo - 2 - false - - -DCMAKE_GENERATOR:STRING=Ninja --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} - 0 - D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MSVC2022_64bit-Profile - - - - - all - - false - - true - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - - clean - - false - - true - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Profile - CMakeProjectManager.CMakeBuildConfiguration - - - MinSizeRel - 2 - false - - -DCMAKE_GENERATOR:STRING=Ninja --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DCMAKE_BUILD_TYPE:STRING=MinSizeRel --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} - D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MSVC2022_64bit-MinSizeRel - - - - - all - - false - - true - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - - clean - - false - - true - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Minimum Size Release - CMakeProjectManager.CMakeBuildConfiguration - - 5 - - - 0 - Deploy - Deploy - ProjectExplorer.BuildSteps.Deploy - - 1 - - false - ProjectExplorer.DefaultDeployConfiguration - - - - - - - - - false - - true - ApplicationManagerPlugin.Deploy.CMakePackageStep - - - install-package --acknowledge - true - Install Application Manager package - ApplicationManagerPlugin.Deploy.InstallPackageStep - - - - - - - - 2 - Deploy - Deploy - ProjectExplorer.BuildSteps.Deploy - - 1 - - false - ApplicationManagerPlugin.Deploy.Configuration - - 2 - - true - true - 0 - true - - 2 - - false - -e cpu-cycles --call-graph "dwarf,4096" -F 250 - FemaSoftware - CMakeProjectManager.CMakeRunConfiguration. - FemaSoftware - false - true - true - true - - 1 - - - - ProjectExplorer.Project.Target.2 - - Desktop - Desktop Qt 6.8.1 llvm-mingw 64-bit - Desktop Qt 6.8.1 llvm-mingw 64-bit - qt.qt6.681.win64_llvm_mingw_kit - 0 - 0 - 0 - - Debug - 2 - false - - -DCMAKE_GENERATOR:STRING=Ninja --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DCMAKE_BUILD_TYPE:STRING=Debug --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} - 0 - D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_llvm_mingw_64_bit-Debug - - - - - all - - false - - true - Build - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - - clean - - false - - true - Build - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Debug - CMakeProjectManager.CMakeBuildConfiguration - - - Release - 2 - false - - -DCMAKE_GENERATOR:STRING=Ninja --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DCMAKE_BUILD_TYPE:STRING=Release --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} - D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_llvm_mingw_64_bit-Release - - - - - all - - false - - true - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - - clean - - false - - true - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Release - CMakeProjectManager.CMakeBuildConfiguration - - - RelWithDebInfo - 2 - false - - -DCMAKE_GENERATOR:STRING=Ninja --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} - D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_llvm_mingw_64_bit-RelWithDebInfo - - - - - all - - false - - true - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - - clean - - false - - true - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Release with Debug Information - CMakeProjectManager.CMakeBuildConfiguration - - - RelWithDebInfo - 2 - false - - -DCMAKE_GENERATOR:STRING=Ninja --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} - 0 - D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_llvm_mingw_64_bit-Profile - - - - - all - - false - - true - CMakeProjectManager.MakeStep - - 1 - Build - Build - ProjectExplorer.BuildSteps.Build - - - - - - clean - - false - - true - CMakeProjectManager.MakeStep - - 1 - Clean - Clean - ProjectExplorer.BuildSteps.Clean - - 2 - false - - false - - Profile - CMakeProjectManager.CMakeBuildConfiguration - - - MinSizeRel - 2 - false - - -DCMAKE_GENERATOR:STRING=Ninja --DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} --DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake --DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} --DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} --DCMAKE_BUILD_TYPE:STRING=MinSizeRel --DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} --DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} - D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_llvm_mingw_64_bit-MinSizeRel +-DCMAKE_BUILD_TYPE:STRING=MinSizeRel +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} + E:\projects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-MinSizeRel @@ -1148,13 +437,14 @@ true true true + E:/projects/FemaLocalSoftware/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug 1 ProjectExplorer.Project.TargetCount - 3 + 1 ProjectExplorer.Project.Updater.FileVersion diff --git a/CMakeLists.txt.user.0f80b2d b/CMakeLists.txt.user.0f80b2d new file mode 100644 index 0000000..a8aa297 --- /dev/null +++ b/CMakeLists.txt.user.0f80b2d @@ -0,0 +1,1167 @@ + + + + + + EnvironmentId + {0f80b2dd-ddfc-4d50-9ae5-0a805fa2dbe5} + + + ProjectExplorer.Project.ActiveTarget + 0 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + 0 + 80 + true + true + 1 + 0 + false + true + false + 2 + true + true + 0 + 8 + true + false + 1 + true + true + true + *.md, *.MD, Makefile + false + true + true + + + + ProjectExplorer.Project.PluginSettings + + + true + false + true + true + true + true + + false + + + 0 + true + + true + true + Builtin.DefaultTidyAndClazy + 6 + true + + + + true + + + + + ProjectExplorer.Project.Target.0 + + Desktop + Desktop Qt 6.8.1 MinGW 64-bit + Desktop Qt 6.8.1 MinGW 64-bit + qt.qt6.681.win64_mingw_kit + 0 + 0 + 0 + + Debug + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_BUILD_TYPE:STRING=Debug +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} + 0 + D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-Debug + + + + + FemaSoftware + + false + + true + Build + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + Build + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Debug + CMakeProjectManager.CMakeBuildConfiguration + + + Release + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_BUILD_TYPE:STRING=Release +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} + D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-Release + + + + + all + + false + + true + Build + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + Build + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release + CMakeProjectManager.CMakeBuildConfiguration + + + RelWithDebInfo + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} + D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-RelWithDebInfo + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release with Debug Information + CMakeProjectManager.CMakeBuildConfiguration + + + RelWithDebInfo + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} + 0 + D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-Profile + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Profile + CMakeProjectManager.CMakeBuildConfiguration + + + MinSizeRel + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_BUILD_TYPE:STRING=MinSizeRel +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} + D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-MinSizeRel + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Minimum Size Release + CMakeProjectManager.CMakeBuildConfiguration + + 5 + + + 0 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + + + + + + + + false + + true + ApplicationManagerPlugin.Deploy.CMakePackageStep + + + install-package --acknowledge + true + Install Application Manager package + ApplicationManagerPlugin.Deploy.InstallPackageStep + + + + + + + + 2 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ApplicationManagerPlugin.Deploy.Configuration + + 2 + + true + true + 0 + true + + 2 + + false + -e cpu-cycles --call-graph "dwarf,4096" -F 250 + FemaSoftware + CMakeProjectManager.CMakeRunConfiguration. + FemaSoftware + false + true + true + true + D:/Projects/QTProjects/FemaLocalSoftware/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug + + 1 + + + + ProjectExplorer.Project.Target.1 + + Desktop + Desktop Qt 6.8.1 MSVC2022 64bit + Desktop Qt 6.8.1 MSVC2022 64bit + qt.qt6.681.win64_msvc2022_64_kit + 1 + 0 + 0 + + Debug + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_BUILD_TYPE:STRING=Debug +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} + 0 + D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MSVC2022_64bit-Debug + + + + + all + + false + + true + Build + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + Build + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Debug + CMakeProjectManager.CMakeBuildConfiguration + + + Release + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_BUILD_TYPE:STRING=Release +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} + D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MSVC2022_64bit-Release + + + + + all + + false + + true + Build + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + Build + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release + CMakeProjectManager.CMakeBuildConfiguration + + + RelWithDebInfo + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} + D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MSVC2022_64bit-RelWithDebInfo + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release with Debug Information + CMakeProjectManager.CMakeBuildConfiguration + + + RelWithDebInfo + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} + 0 + D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MSVC2022_64bit-Profile + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Profile + CMakeProjectManager.CMakeBuildConfiguration + + + MinSizeRel + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_BUILD_TYPE:STRING=MinSizeRel +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} + D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MSVC2022_64bit-MinSizeRel + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Minimum Size Release + CMakeProjectManager.CMakeBuildConfiguration + + 5 + + + 0 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + + + + + + + + false + + true + ApplicationManagerPlugin.Deploy.CMakePackageStep + + + install-package --acknowledge + true + Install Application Manager package + ApplicationManagerPlugin.Deploy.InstallPackageStep + + + + + + + + 2 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ApplicationManagerPlugin.Deploy.Configuration + + 2 + + true + true + 0 + true + + 2 + + false + -e cpu-cycles --call-graph "dwarf,4096" -F 250 + FemaSoftware + CMakeProjectManager.CMakeRunConfiguration. + FemaSoftware + false + true + true + true + + 1 + + + + ProjectExplorer.Project.Target.2 + + Desktop + Desktop Qt 6.8.1 llvm-mingw 64-bit + Desktop Qt 6.8.1 llvm-mingw 64-bit + qt.qt6.681.win64_llvm_mingw_kit + 0 + 0 + 0 + + Debug + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_BUILD_TYPE:STRING=Debug +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} + 0 + D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_llvm_mingw_64_bit-Debug + + + + + all + + false + + true + Build + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + Build + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Debug + CMakeProjectManager.CMakeBuildConfiguration + + + Release + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_BUILD_TYPE:STRING=Release +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} + D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_llvm_mingw_64_bit-Release + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release + CMakeProjectManager.CMakeBuildConfiguration + + + RelWithDebInfo + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} + D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_llvm_mingw_64_bit-RelWithDebInfo + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Release with Debug Information + CMakeProjectManager.CMakeBuildConfiguration + + + RelWithDebInfo + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} + 0 + D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_llvm_mingw_64_bit-Profile + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Profile + CMakeProjectManager.CMakeBuildConfiguration + + + MinSizeRel + 2 + false + + -DCMAKE_GENERATOR:STRING=Ninja +-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable} +-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake +-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} +-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} +-DCMAKE_BUILD_TYPE:STRING=MinSizeRel +-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} +-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C} + D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_llvm_mingw_64_bit-MinSizeRel + + + + + all + + false + + true + CMakeProjectManager.MakeStep + + 1 + Build + Build + ProjectExplorer.BuildSteps.Build + + + + + + clean + + false + + true + CMakeProjectManager.MakeStep + + 1 + Clean + Clean + ProjectExplorer.BuildSteps.Clean + + 2 + false + + false + + Minimum Size Release + CMakeProjectManager.CMakeBuildConfiguration + + 5 + + + 0 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ProjectExplorer.DefaultDeployConfiguration + + + + + + + + + false + + true + ApplicationManagerPlugin.Deploy.CMakePackageStep + + + install-package --acknowledge + true + Install Application Manager package + ApplicationManagerPlugin.Deploy.InstallPackageStep + + + + + + + + 2 + Deploy + Deploy + ProjectExplorer.BuildSteps.Deploy + + 1 + + false + ApplicationManagerPlugin.Deploy.Configuration + + 2 + + true + true + 0 + true + + 2 + + false + -e cpu-cycles --call-graph "dwarf,4096" -F 250 + FemaSoftware + CMakeProjectManager.CMakeRunConfiguration. + FemaSoftware + false + true + true + true + + 1 + + + + ProjectExplorer.Project.TargetCount + 3 + + + ProjectExplorer.Project.Updater.FileVersion + 22 + + + Version + 22 + + diff --git a/alarm_r.h b/alarm_r.h index 0869ef8..b27801b 100644 --- a/alarm_r.h +++ b/alarm_r.h @@ -1,22 +1,44 @@ #ifndef ALARM_R_H #define ALARM_R_H -#include -#include #include +#include +#include -class AlarmR { +class AlarmR +{ public: AlarmR() = default; - AlarmR(const QString& endTime, const QString& mark, const QString& sensorGroup, - const QString& sensorId, const QString& serial, const QString& startTime) - : end_time(endTime), mark(mark), sensor_group(sensorGroup), sensor_id(sensorId), - serial(serial), start_time(startTime) {} + AlarmR(const QString &endTime, + const QString &mark, + const QString &sensorGroup, + const QString &sensorId, + const QString &serial, + const QString &startTime) + : end_time(endTime) + , mark(mark) + , sensor_group(sensorGroup) + , sensor_id(sensorId) + , serial(serial) + , start_time(startTime) + {} - void parseResponse(const QJsonObject& json) { - if (json.contains("end_time") && json["end_time"].isString()) { - end_time = json["end_time"].toString(); + void parseResponse(const QJsonObject &json) + { + if (json["start_time"].isDouble()) { + start_time = QString::number(static_cast(json["start_time"].toDouble())); + qint64 unixTime = static_cast(json["start_time"].toDouble()); + QDateTime dateTime = QDateTime::fromSecsSinceEpoch(unixTime); + start_time = dateTime.toString("dd.MM.yyyy HH:mm"); + } + if (json.contains("end_time") && json["end_time"].isDouble()) { + end_time = QString::number(static_cast(json["end_time"].toDouble())); + qint64 unixTime = static_cast(json["end_time"].toDouble()); + QDateTime dateTime = QDateTime::fromSecsSinceEpoch(unixTime); + end_time = dateTime.toString("dd.MM.yyyy HH:mm"); + } else { + end_time.clear(); } if (json.contains("mark") && json["mark"].isString()) { mark = json["mark"].toString(); @@ -30,9 +52,6 @@ public: if (json.contains("serial") && json["serial"].isString()) { serial = json["serial"].toString(); } - if (json.contains("start_time") && json["start_time"].isString()) { - start_time = json["start_time"].toString(); - } } QString getEndTime() const { return end_time; } diff --git a/alarmdialog.cpp b/alarmdialog.cpp index a1cec91..5825dc1 100644 --- a/alarmdialog.cpp +++ b/alarmdialog.cpp @@ -1,11 +1,88 @@ #include "alarmdialog.h" #include "ui_alarmdialog.h" +#include "qcustomplot.h" -alarmdialog::alarmdialog(QWidget *parent) - : QWidget(parent) +#include +#include +#include + +alarmdialog::alarmdialog(QDialog *parent, + const QString &sensorId, + const QString &sensorName, + const QString &group, + const QString &dateStart, + const QString &dateEnd, + SensorService *sensorService) + : QDialog(parent) , ui(new Ui::alarmdialog) + , _sensorService(sensorService) { ui->setupUi(this); + + ui->nameHead->setText(sensorId); + ui->name->setText("Датчик - " + sensorName); + ui->dateStart->setText("Дата начала - " + dateStart); + if(dateEnd.isEmpty()) { + ui->dateEnd->setText("Дата конца - Инцидент еще не закончился"); + } else { + ui->dateEnd->setText("Дата конца - " + dateEnd); + } + + QCustomPlot *customPlot = new QCustomPlot(this); + + customPlot->setFixedSize(710, 250); + + ui->chartLayout->addWidget(customPlot); + + qint64 start = QDateTime::fromString(dateStart, "dd.MM.yyyy HH:mm").toSecsSinceEpoch(); + qint64 end = QDateTime::fromString(dateEnd, "dd.MM.yyyy HH:mm").toSecsSinceEpoch(); + if(end == 0) { + end = QDateTime::currentMSecsSinceEpoch(); + } + PlotData data = sensorService->getDeviceSensorData(group, sensorId, start, end); + + customPlot->addGraph(); + QPen pen; + pen.setColor(QColor(19, 58, 97)); + pen.setWidth(2); + customPlot->graph(0)->setPen(pen); + customPlot->graph(0)->setData(data.X, data.Y); + + QSharedPointer dateTimeTicker(new QCPAxisTickerDateTime); + dateTimeTicker->setDateTimeFormat("HH:mm:ss dd.MM.yyyy"); + customPlot->xAxis->setTicker(dateTimeTicker); + + customPlot->yAxis->setRange(*std::min_element(data.Y.begin(), data.Y.end()) - 10, + *std::max_element(data.Y.begin(), data.Y.end()) + 10); + + customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); + + customPlot->graph(0)->rescaleAxes(); + customPlot->replot(); + + + QVariantList points = sensorService->getPoints(start, end); + + if(!points.empty()) { + ui->map->rootContext()->setContextProperty("mapCenter", points[0]); + ui->map->rootContext()->setContextProperty("pointsList", points); + } + + ui->map->setSource(QUrl(QStringLiteral("qrc:/qml/map.qml"))); + + connect(ui->cancelButton, &QPushButton::clicked, this, &alarmdialog::onCancelButtonClicked); + connect(ui->statisticButton, &QPushButton::clicked, this, &alarmdialog::onStatisticButtonClicked); +} + +void alarmdialog::onCancelButtonClicked() +{ + this->close(); +} + +void alarmdialog::onStatisticButtonClicked() +{ + emit dialogClosed(); + this->close(); } alarmdialog::~alarmdialog() diff --git a/alarmdialog.h b/alarmdialog.h index ad68a0d..9ead472 100644 --- a/alarmdialog.h +++ b/alarmdialog.h @@ -1,22 +1,41 @@ #ifndef ALARMDIALOG_H #define ALARMDIALOG_H -#include +#include "sensorservice.h" + +#include namespace Ui { class alarmdialog; } -class alarmdialog : public QWidget +class alarmdialog : public QDialog { Q_OBJECT public: - explicit alarmdialog(QWidget *parent = nullptr); + explicit alarmdialog(QDialog *parent = nullptr, + const QString &sensorId = "", + const QString &sensorName = "", + const QString &group = "", + const QString &dateStart = "", + const QString &dateEnd = "", + SensorService *sensorService = nullptr); ~alarmdialog(); private: Ui::alarmdialog *ui; + +signals: + void dialogClosed(); + +private slots: + void onCancelButtonClicked(); + void onStatisticButtonClicked(); + +private: + SensorService *_sensorService; + }; #endif // ALARMDIALOG_H diff --git a/alarmdialog.ui b/alarmdialog.ui index cb5b137..634a589 100644 --- a/alarmdialog.ui +++ b/alarmdialog.ui @@ -31,6 +31,21 @@ background: white; } + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + @@ -65,7 +80,7 @@ background: white; - + 0 @@ -120,75 +135,44 @@ color: #13385F; 0 - 25 - - - 25 - - - 15 - - - - - - 0 - 27 - - - - - 16777215 - 27 - - - - background: transparent; -font-family: Inter; -font-size: 22px; -font-weight: 400; -line-height: 26.63px; -text-align: left; -color: #13385F; - - - - TextLabel - - - - - - - - 0 - - 25 - - 25 + 0 - 15 + 0 - - - - 0 - 27 - + + + 0 - - - 16777215 - 27 - + + 25 - - background: transparent; + + 25 + + + 15 + + + + + + 0 + 27 + + + + + 16777215 + 27 + + + + background: transparent; font-family: Inter; font-size: 22px; font-weight: 400; @@ -196,11 +180,36 @@ line-height: 26.63px; text-align: left; color: #13385F; - - - TextLabel - - + + + TextLabel + + + + + + + + 16777215 + 27 + + + + background: transparent; +font-family: Inter; +font-size: 22px; +font-weight: 400; +line-height: 26.63px; +text-align: left; +color: #13385F; + + + + TextLabel + + + + @@ -219,7 +228,7 @@ color: #13385F; 15 - + 0 @@ -274,24 +283,21 @@ color: #13385F; 25 - + 710 - 318 + 320 710 - 318 + 320 - - background: black; - - - + + QQuickWidget::ResizeMode::SizeRootObjectToView @@ -367,7 +373,7 @@ QPushButton:pressed { - + 266 @@ -410,54 +416,17 @@ QPushButton:pressed { - - - - - 117 - 41 - - - - - 117 - 41 - - - - QPushButton { - border-style: outset; - border-radius: 5px; - border-color: #13385F; - border-width: 1px; - background-color: #13385F; - color: white; - font-family: Inter; - font-size: 22px; - font-weight: 500; - line-height: 26.63px; - text-align: center; -} - -QPushButton:hover { - background-color: #1A4A73; - border-color: #1A4A73; -} - -QPushButton:pressed { - background-color: #102E47; - border-color: #102E47; -} - - - Экспорт - - - + + + QQuickWidget + QWidget +
QtQuickWidgets/QQuickWidget
+
+
diff --git a/alarmsservice.h b/alarmsservice.h index 52c5d8b..461f409 100644 --- a/alarmsservice.h +++ b/alarmsservice.h @@ -1,27 +1,43 @@ #ifndef ALARMSSERVICE_H #define ALARMSSERVICE_H -#include "utils.h" #include "HttpClient.h" #include "alarm_r.h" +#include "utils.h" +#include +#include +#include +#include #include #include -#include -#include -#include #include -#include + +struct AlarmSettings{ + QMap> groupsWithSensors; + qint64 start_time; + qint64 end_time; + AlarmSettings(QMap> a, qint64 b, qint64 c) { + groupsWithSensors = a; + start_time = b; + end_time = c; + } +}; class AlarmsService : public QObject { Q_OBJECT public: - explicit AlarmsService(HttpClient* client, QObject *parent = nullptr) - : QObject(parent), httpClient(client) {} + explicit AlarmsService(HttpClient *client, QObject *parent = nullptr) + : QObject(parent) + , httpClient(client) + {} - int getAlarmsAmount(const QMap>& groupsWithSensors, qint64 start, qint64 end) { + int getAlarmsAmount(const QMap> &groupsWithSensors, + qint64 start, + qint64 end) + { QJsonObject rootObj; rootObj["start_time"] = start; rootObj["end_time"] = end; @@ -37,8 +53,8 @@ public: QJsonDocument doc(rootObj); QByteArray requestData = doc.toJson(); - QJsonObject responseJson = httpClient->post(utils::API_URL + "/alarms/getAlarmsAmount", QJsonDocument::fromJson(requestData).object()); - + QJsonObject responseJson = httpClient->post(utils::API_URL + "/alarms/getAlarmsAmount", + QJsonDocument::fromJson(requestData).object()); if (responseJson.contains("amount")) { return responseJson["amount"].toInt(); @@ -46,57 +62,23 @@ public: return 0; } - QList tmpB(int pageNum, int pageSize, qint64 start = 1734063255, qint64 end = 1735392656) { - QJsonObject rootObj; - rootObj["start_time"] = start; - rootObj["end_time"] = end; - rootObj["page_number"] = pageNum; - rootObj["page_size"] = pageSize; - QJsonDocument doc(rootObj); - QByteArray requestData = doc.toJson(); - - - QJsonObject responseJson = httpClient->post(utils::API_URL + "/alarms/getAlarms", QJsonDocument::fromJson(requestData).object()); - - QList alarmList; - - if (responseJson.contains("alarms") && responseJson["alarms"].isArray()) { - QJsonArray alarmsArray = responseJson["alarms"].toArray(); - - for (const QJsonValue& value : alarmsArray) { - if (value.isObject()) { - AlarmR alarm; - alarm.parseResponse(value.toObject()); - alarmList.append(alarm); - } - } - } - - return alarmList; - } - - int tmpA(qint64 start = 1734063255, qint64 end = 1735392656) { - QJsonObject rootObj; - rootObj["start_time"] = start; - rootObj["end_time"] = end; - QJsonDocument doc(rootObj); - QByteArray requestData = doc.toJson(); - - - QJsonObject responseJson = httpClient->post(utils::API_URL + "/alarms/getAlarmsAmount", QJsonDocument::fromJson(requestData).object()); - - if (responseJson.contains("amount")) { - return responseJson["amount"].toInt(); - } - return 0; - } - - QList getAlarms(const QMap>& groupsWithSensors, qint64 start, qint64 end, int pageNum, int pageSize) { + QList getAlarms(const QMap> &groupsWithSensors, + qint64 start, + qint64 end, + int pageNum, + int pageSize) + { QJsonObject rootObj; rootObj["start_time"] = start; rootObj["end_time"] = end; rootObj["page_number"] = pageNum; rootObj["page_size"] = pageSize; + QJsonArray orderArray; + QJsonArray orderItem; + orderItem.append("start_time"); + orderItem.append("-"); + orderArray.append(orderItem); + rootObj["order"] = orderArray; QJsonObject sensorsObj; for (auto it = groupsWithSensors.constBegin(); it != groupsWithSensors.constEnd(); ++it) { QJsonArray sensorArray; @@ -109,15 +91,15 @@ public: QJsonDocument doc(rootObj); QByteArray requestData = doc.toJson(); - - QJsonObject responseJson = httpClient->post(utils::API_URL + "/alarms/getAlarms", QJsonDocument::fromJson(requestData).object()); + QJsonObject responseJson = httpClient->post(utils::API_URL + "/alarms/getAlarms", + QJsonDocument::fromJson(requestData).object()); QList alarmList; if (responseJson.contains("alarms") && responseJson["alarms"].isArray()) { QJsonArray alarmsArray = responseJson["alarms"].toArray(); - for (const QJsonValue& value : alarmsArray) { + for (const QJsonValue &value : alarmsArray) { if (value.isObject()) { AlarmR alarm; alarm.parseResponse(value.toObject()); @@ -130,7 +112,7 @@ public: } private: - HttpClient* httpClient; + HttpClient *httpClient; }; #endif // ALARMSSERVICE_H diff --git a/alarmwidget.cpp b/alarmwidget.cpp index d642320..c58fdb9 100644 --- a/alarmwidget.cpp +++ b/alarmwidget.cpp @@ -1,11 +1,22 @@ #include "alarmwidget.h" +#include "alarmdialog.h" -AlarmWidget::AlarmWidget(const QString& vehicle, const QString& group, const QString& sensor, - const QString& date, const QString& time, QWidget *parent) +AlarmWidget::AlarmWidget(QMap>> &translate, + const QString &sensorId, + const QString &group, + const QString &date, + const QString &time, + const QString &timeEnd, + SensorService *sensorService, + QWidget *parent) : QWidget(parent) + , _timeEnd(timeEnd) + , _sensorService(sensorService) + , _translate(translate) + , _sensorId(sensorId) { + setAttribute(Qt::WA_StyledBackground); - // Устанавливаем обводку для ВСЕГО виджета setStyleSheet(R"( QWidget { border: 1px solid #E5E7EB; @@ -13,27 +24,23 @@ AlarmWidget::AlarmWidget(const QString& vehicle, const QString& group, const QSt } )"); - // Горизонтальный layout QHBoxLayout *mainLayout = new QHBoxLayout(this); - mainLayout->setSpacing(70); // Отступы между элементами - mainLayout->setContentsMargins(25, 5, 25, 5); // Внутренние отступы + mainLayout->setSpacing(70); + mainLayout->setContentsMargins(25, 5, 25, 5); setLayout(mainLayout); - // Создаем лейблы - vehicleLabel = createLabel(vehicle, 100, 230); - groupLabel = createLabel(group, 100, 250); - sensorLabel = createLabel(sensor, 100, 250); + //groupLabel = createLabel(_groupToLocalgroup[group], 100, 250); + //sensorLabel = createLabel(_sensorToLocalSensor[sensorId], 100, 350); + groupLabel = createLabel(translate[group][sensorId].first, 100, 250); + sensorLabel = createLabel(translate[group][sensorId].second, 100, 350); dateLabel = createLabel(date, 100, 150); timeLabel = createLabel(time, 100, 100); - // Добавляем лейблы в layout - mainLayout->addWidget(vehicleLabel); mainLayout->addWidget(groupLabel); mainLayout->addWidget(sensorLabel); mainLayout->addWidget(dateLabel); mainLayout->addWidget(timeLabel); - // Кнопка "Подробнее" infoButton = new QPushButton("Подробнее"); infoButton->setFixedHeight(40); infoButton->setFixedSize(140, 40); @@ -59,14 +66,30 @@ AlarmWidget::AlarmWidget(const QString& vehicle, const QString& group, const QSt } )"); - // Добавляем кнопку в layout mainLayout->addWidget(infoButton); - - //mainLayout->addStretch(); - + connect(infoButton, &QPushButton::clicked, this, &AlarmWidget::onInfoButtonClicked); } -QLabel* AlarmWidget::createLabel(const QString &text, int minSize, int maxSize) +void AlarmWidget::onInfoButtonClicked() { + alarmdialog *dialog = new alarmdialog(nullptr, _sensorId, sensorLabel->text(), + groupLabel->text(), dateLabel->text() + ' ' + timeLabel->text(), + _timeEnd, _sensorService); + + connect(dialog, &alarmdialog::dialogClosed, this, &AlarmWidget::onDialogClosed); + + dialog->exec(); +} + +void AlarmWidget::onDialogClosed() { + QDateTime start = QDateTime::fromString(dateLabel->text() + ' ' + timeLabel->text(), "dd.MM.yyyy HH:mm"); + QDateTime end = QDateTime::fromString(_timeEnd, "dd.MM.yyyy HH:mm"); + if(end.isNull()) { + end = QDateTime::currentDateTime(); + } + emit dialogClosedFromWidget(groupLabel->text() + '/' + sensorLabel->text(), start, end); +} + +QLabel *AlarmWidget::createLabel(const QString &text, int minSize, int maxSize) { QLabel *label = new QLabel(text); label->setAlignment(Qt::AlignLeft); diff --git a/alarmwidget.h b/alarmwidget.h index 5468b5f..99810c8 100644 --- a/alarmwidget.h +++ b/alarmwidget.h @@ -1,26 +1,44 @@ #ifndef ALARMWIDGET_H #define ALARMWIDGET_H -#include +#include "sensorservice.h" + +#include +#include #include #include #include -#include -#include +#include class AlarmWidget : public QWidget { Q_OBJECT public: - explicit AlarmWidget(const QString& vehicle, const QString& group, const QString& sensor, - const QString& date, const QString& time, QWidget *parent = nullptr); + explicit AlarmWidget(QMap>> &translate, + const QString &sensorId = "", + const QString &group = "", + const QString &date = "", + const QString &time = "", + const QString &timeEnd = "", + SensorService *sensorService = nullptr, + QWidget *parent = nullptr); private: QLabel *createLabel(const QString &text, int minSize = 100, int maxSize = 250); +signals: + void dialogClosedFromWidget(QString groupWithSensor, QDateTime start, QDateTime end); + +private slots: + void onInfoButtonClicked(); + void onDialogClosed(); + private: - QLabel *vehicleLabel; + QMap>> _translate; + const QString _timeEnd; + const QString _sensorId; + SensorService *_sensorService; QLabel *groupLabel; QLabel *sensorLabel; QLabel *dateLabel; diff --git a/apiform.cpp b/apiform.cpp new file mode 100644 index 0000000..83eae96 --- /dev/null +++ b/apiform.cpp @@ -0,0 +1,25 @@ +#include "apiform.h" +#include "ui_apiform.h" +#include "utils.h" + +ApiForm::ApiForm(QDialog *parent) + : QDialog(parent) + , ui(new Ui::ApiForm) +{ + ui->setupUi(this); + + connect(ui->loginButton, &QPushButton::clicked, this, [this]() { + const QString adres = ui->adres->text(); + const QString port = ui->port->text(); + if (!adres.isEmpty() && !port.isEmpty()) { + utils::API_URL = QString("http://%1:%2").arg(adres).arg(port); + this->accept(); + } + this->accept(); + }); +} + +ApiForm::~ApiForm() +{ + delete ui; +} diff --git a/apiform.h b/apiform.h new file mode 100644 index 0000000..49bfebc --- /dev/null +++ b/apiform.h @@ -0,0 +1,22 @@ +#ifndef APIFORM_H +#define APIFORM_H + +#include + +namespace Ui { +class ApiForm; +} + +class ApiForm : public QDialog +{ + Q_OBJECT + +public: + explicit ApiForm(QDialog *parent = nullptr); + ~ApiForm(); + +private: + Ui::ApiForm *ui; +}; + +#endif // APIFORM_H diff --git a/apiform.ui b/apiform.ui new file mode 100644 index 0000000..2f1be2c --- /dev/null +++ b/apiform.ui @@ -0,0 +1,254 @@ + + + ApiForm + + + + 0 + 0 + 800 + 400 + + + + + 800 + 400 + + + + + 800 + 400 + + + + Form + + + #ApiForm{ + image: url(:/visual/res/svg/fema-wing.svg); + background-color: #ffffff; + image-position: bottom right; + border: none; +} + + + + 0 + + + 25 + + + 25 + + + 25 + + + 0 + + + + + + 16777215 + 30 + + + + background: transparent; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 36.31px; +text-align: left; +color: #13385F; + + + + Здравствуйте! Введите пожалуйста адрес и порт устройства + + + + + + + 10 + + + + + + 0 + 40 + + + + + 16777215 + 40 + + + + background: transparent; +font-family: Inter; +font-size: 20px; +font-weight: 500; +line-height: 36.31px; +text-align: left; +color: #13385F; + + + + Адрес: + + + + + + + + 0 + 40 + + + + + 16777215 + 40 + + + + background: transparent; +font-family: Inter; +font-size: 20px; +font-weight: 500; +line-height: 36.31px; +text-align: left; +color: #13385F; + + + + Порт: + + + + + + + + + 10 + + + + + + 0 + 40 + + + + border: 2px solid #DCD174; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 31.47px; +text-align: left; +background: #00000000; +color: #13385F; + + + + + + + + + 0 + 40 + + + + border: 2px solid #DCD174; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 31.47px; +text-align: left; +background: #00000000; +color: #13385F; + + + + + + + + + + Qt::Orientation::Vertical + + + QSizePolicy::Policy::Fixed + + + + 20 + 40 + + + + + + + + QPushButton { + border-style: outset; + border-radius: 5px; + border-color: #13385F; + border-width: 1px; + background-color: #13385F; + color: white; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; +} + +QPushButton:hover { + background-color: #1A4A73; + border-color: #1A4A73; +} + +QPushButton:pressed { + background-color: #102E47; + border-color: #102E47; +} + + + Войти в приложение + + + + + + + Qt::Orientation::Vertical + + + + 20 + 40 + + + + + + + + + diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/CMakeFiles/3.29.3/CMakeCXXCompiler.cmake b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/CMakeFiles/3.29.3/CMakeCXXCompiler.cmake index bc47239..2942567 100644 --- a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/CMakeFiles/3.29.3/CMakeCXXCompiler.cmake +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/CMakeFiles/3.29.3/CMakeCXXCompiler.cmake @@ -1,4 +1,4 @@ -set(CMAKE_CXX_COMPILER "G:/Programs/QT/Tools/mingw1310_64/bin/g++.exe") +set(CMAKE_CXX_COMPILER "E:/qt/Tools/mingw1310_64/bin/g++.exe") set(CMAKE_CXX_COMPILER_ARG1 "") set(CMAKE_CXX_COMPILER_ID "GNU") set(CMAKE_CXX_COMPILER_VERSION "13.1.0") @@ -22,11 +22,11 @@ set(CMAKE_CXX_SIMULATE_VERSION "") -set(CMAKE_AR "G:/Programs/QT/Tools/mingw1310_64/bin/ar.exe") -set(CMAKE_CXX_COMPILER_AR "G:/Programs/QT/Tools/mingw1310_64/bin/gcc-ar.exe") -set(CMAKE_RANLIB "G:/Programs/QT/Tools/mingw1310_64/bin/ranlib.exe") -set(CMAKE_CXX_COMPILER_RANLIB "G:/Programs/QT/Tools/mingw1310_64/bin/gcc-ranlib.exe") -set(CMAKE_LINKER "G:/Programs/QT/Tools/mingw1310_64/bin/ld.exe") +set(CMAKE_AR "E:/qt/Tools/mingw1310_64/bin/ar.exe") +set(CMAKE_CXX_COMPILER_AR "E:/qt/Tools/mingw1310_64/bin/gcc-ar.exe") +set(CMAKE_RANLIB "E:/qt/Tools/mingw1310_64/bin/ranlib.exe") +set(CMAKE_CXX_COMPILER_RANLIB "E:/qt/Tools/mingw1310_64/bin/gcc-ranlib.exe") +set(CMAKE_LINKER "E:/qt/Tools/mingw1310_64/bin/ld.exe") set(CMAKE_LINKER_LINK "") set(CMAKE_LINKER_LLD "") set(CMAKE_CXX_COMPILER_LINKER "../src/gcc-13.1.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64 --enable-host-shared --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --enable-libstdcxx-filesystem-ts=yes --disable-libssp --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-posix-seh-rev1, Built by MinGW-Builds project' --with-bugurl=https:/github.com/niXman/mingw-builds CFLAGS='-O2 -pipe -fno-ident -I/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/lib -L/c/buildroot/prerequisites/x86_64-zlib-static/lib -L/c/buildroot/prerequisites/x86_64-w64-mingw32-static/lib ' LD_FOR_TARGET=/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/bin/ld.exe") @@ -85,8 +85,8 @@ endif() -set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "G:/Programs/QT/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++;G:/Programs/QT/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/x86_64-w64-mingw32;G:/Programs/QT/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/backward;G:/Programs/QT/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include;G:/Programs/QT/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include-fixed;G:/Programs/QT/Tools/mingw1310_64/x86_64-w64-mingw32/include") +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/x86_64-w64-mingw32;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/backward;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include-fixed;E:/qt/Tools/mingw1310_64/x86_64-w64-mingw32/include") set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;mingw32;gcc_s;gcc;moldname;mingwex;kernel32;pthread;advapi32;shell32;user32;kernel32;iconv;mingw32;gcc_s;gcc;moldname;mingwex;kernel32") -set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "G:/Programs/QT/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0;G:/Programs/QT/Tools/mingw1310_64/lib/gcc;G:/Programs/QT/Tools/mingw1310_64/x86_64-w64-mingw32/lib;G:/Programs/QT/Tools/mingw1310_64/lib") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0;E:/qt/Tools/mingw1310_64/lib/gcc;E:/qt/Tools/mingw1310_64/x86_64-w64-mingw32/lib;E:/qt/Tools/mingw1310_64/lib") set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "") diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/CMakeFiles/3.29.3/CMakeRCCompiler.cmake b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/CMakeFiles/3.29.3/CMakeRCCompiler.cmake index e43f037..1554a87 100644 --- a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/CMakeFiles/3.29.3/CMakeRCCompiler.cmake +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/CMakeFiles/3.29.3/CMakeRCCompiler.cmake @@ -1,4 +1,4 @@ -set(CMAKE_RC_COMPILER "G:/Programs/QT/Tools/mingw1310_64/bin/windres.exe") +set(CMAKE_RC_COMPILER "E:/qt/Tools/mingw1310_64/bin/windres.exe") set(CMAKE_RC_COMPILER_ARG1 "") set(CMAKE_RC_COMPILER_LOADED 1) set(CMAKE_RC_SOURCE_FILE_EXTENSIONS rc;RC) diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/CMakeFiles/3.29.3/CMakeSystem.cmake b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/CMakeFiles/3.29.3/CMakeSystem.cmake index 000cf69..909db20 100644 --- a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/CMakeFiles/3.29.3/CMakeSystem.cmake +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/CMakeFiles/3.29.3/CMakeSystem.cmake @@ -1,13 +1,13 @@ -set(CMAKE_HOST_SYSTEM "Windows-10.0.26100") +set(CMAKE_HOST_SYSTEM "Windows-10.0.19045") set(CMAKE_HOST_SYSTEM_NAME "Windows") -set(CMAKE_HOST_SYSTEM_VERSION "10.0.26100") +set(CMAKE_HOST_SYSTEM_VERSION "10.0.19045") set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") -set(CMAKE_SYSTEM "Windows-10.0.26100") +set(CMAKE_SYSTEM "Windows-10.0.19045") set(CMAKE_SYSTEM_NAME "Windows") -set(CMAKE_SYSTEM_VERSION "10.0.26100") +set(CMAKE_SYSTEM_VERSION "10.0.19045") set(CMAKE_SYSTEM_PROCESSOR "AMD64") set(CMAKE_CROSSCOMPILING "FALSE") diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware.exe b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware.exe index 1250eda..e5b533b 100644 Binary files a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware.exe and b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware.exe differ diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/EWIEGA46WW/qrc_resources.cpp b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/EWIEGA46WW/qrc_resources.cpp index f7fe520..6f5bb4e 100644 --- a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/EWIEGA46WW/qrc_resources.cpp +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/EWIEGA46WW/qrc_resources.cpp @@ -99,6 +99,79 @@ static const unsigned char qt_resource_data[] = { 0x7f,0x9a,0x22,0x88,0x8a,0xa5,0x99,0x9d,0x2a,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x48,0xb8,0xbf,0x3d,0xed,0xb2,0xe3,0x7e,0x81,0xad, 0x3e,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // delete.png + 0x0,0x0,0x4,0x5d, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x30,0x0,0x0,0x0,0x36,0x8,0x6,0x0,0x0,0x0,0x81,0x5b,0x1a,0x9a, + 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13, + 0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce, + 0x1c,0xe9,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc, + 0x61,0x5,0x0,0x0,0x3,0xf2,0x49,0x44,0x41,0x54,0x78,0x1,0xd5,0x5a,0x4d,0x56, + 0x13,0x41,0x10,0xae,0xea,0x9,0xca,0x8e,0x78,0x2,0xc7,0x1b,0xc0,0xe,0x70,0x61, + 0x50,0xf1,0xb9,0x13,0x4f,0x20,0x9e,0x40,0x38,0x1,0xe6,0x4,0xe2,0xd,0xe4,0x4, + 0xe0,0xce,0xf7,0xc,0x1a,0x17,0x2,0x3b,0xf1,0x4,0xe,0x27,0x30,0xec,0x90,0x4c, + 0xba,0xec,0x9e,0x68,0xc8,0xf4,0xcf,0x4c,0x77,0xcf,0xc,0x79,0xf9,0x16,0xd0,0xe9, + 0xff,0xaf,0xbb,0xab,0xba,0xaa,0x6b,0x10,0x2a,0x80,0x9e,0xaf,0xc6,0x90,0x46,0x6f, + 0x80,0xd1,0x16,0x10,0xc4,0x1e,0x4d,0x7,0x0,0x78,0xe,0x38,0xfa,0x0,0xc,0xbe, + 0xe1,0xa7,0xb3,0x4,0x2,0x81,0x10,0x8,0xda,0x5c,0xdd,0x6,0x60,0xef,0x44,0xb2, + 0xd,0x55,0x80,0x94,0x88,0x5,0xd8,0x8,0x25,0x11,0x44,0x20,0x5b,0xf9,0x11,0xfb, + 0x5,0x75,0x41,0x92,0xb8,0xbe,0xbb,0x82,0xfd,0xfe,0x0,0x3c,0xd1,0x82,0x10,0x8c, + 0xd8,0x9e,0x96,0x47,0xd4,0x7,0xc2,0x4,0x5c,0xc0,0xa0,0x23,0xfe,0xc6,0x37,0x6d, + 0x31,0x86,0x68,0xf8,0x42,0xa4,0xe,0xc0,0x13,0x61,0x4,0x0,0x97,0xc5,0xa8,0x37, + 0x3f,0x89,0xbf,0xc5,0xde,0x59,0x17,0x3c,0x40,0xcf,0xd6,0xe,0xc5,0xc4,0xb7,0x26, + 0x19,0x8c,0x3a,0x10,0x40,0x80,0x41,0x10,0x28,0x77,0xee,0x7d,0x27,0x9f,0x61,0xd4, + 0xca,0x4f,0x96,0x28,0x48,0x96,0x2,0x9,0xd4,0x0,0x24,0xf5,0xbc,0xcf,0x19,0x81, + 0x9a,0x30,0xf7,0x4,0xf0,0x9f,0x4a,0x14,0x5a,0x5,0x63,0xf7,0x66,0x99,0xc0,0x4d, + 0x77,0xd3,0x7,0x6f,0x64,0x67,0x7e,0x79,0x2a,0x63,0x7c,0xb9,0xb9,0xb7,0x4f,0x20, + 0xe2,0xdd,0x16,0x70,0xf6,0x15,0x32,0x95,0x46,0x10,0xe,0x95,0x50,0x10,0xda,0xde, + 0xfd,0xa4,0xd8,0x66,0x62,0xde,0xd5,0x6e,0xd2,0xd9,0x42,0x10,0x0,0xbe,0x2b,0x12, + 0x9,0xcc,0x1f,0x84,0x2d,0x95,0xee,0x6a,0xa6,0x4,0x6d,0xae,0xcb,0x73,0xf9,0xe3, + 0x26,0x83,0x8e,0xb0,0x77,0xfa,0x12,0x66,0x0,0x31,0x97,0xdc,0xb9,0xc6,0xcf,0x27, + 0xda,0x7c,0x75,0x2d,0x14,0xf1,0x5a,0xf4,0xf3,0x6d,0xa1,0x5c,0x8d,0x22,0xce,0x84, + 0x0,0x75,0x3a,0xea,0xb8,0x89,0xa9,0x9e,0x46,0xc0,0x60,0xd6,0xce,0x66,0x7,0x16, + 0xaf,0x9c,0xc6,0xd,0x34,0xe6,0x26,0x26,0xf5,0x9e,0xd0,0x62,0x9,0xf6,0x4e,0xba, + 0xf6,0x72,0x1c,0x40,0xba,0xd0,0x55,0x4d,0xe5,0x89,0x33,0x24,0x61,0x28,0xd7,0x7, + 0x14,0x7a,0xdf,0x83,0x80,0xec,0xec,0xff,0xa,0x98,0x57,0x22,0x15,0xce,0xc,0xc2, + 0x96,0xf4,0x28,0xe8,0xc9,0xc3,0x4,0x8f,0xbf,0xe7,0x8d,0xb3,0xb1,0xc9,0xbd,0x2d, + 0xae,0x4a,0x80,0x85,0x3f,0x89,0x48,0xbf,0x57,0xda,0xbf,0x12,0x65,0x3b,0x59,0xda, + 0x58,0xde,0x8a,0x1,0x39,0x94,0x81,0x15,0x10,0x80,0x42,0x2,0x8,0xee,0xce,0x7, + 0x19,0xe4,0x88,0x4d,0xe5,0x51,0xb8,0x9c,0xcd,0xce,0x16,0xf2,0x35,0x9f,0xd1,0xec, + 0x2c,0x59,0x8,0xe4,0x2b,0xd3,0xe3,0xf5,0xfb,0x50,0x4,0xc6,0xab,0xfa,0xc5,0xfa, + 0x6e,0x22,0x8f,0xc1,0x1,0xf5,0xec,0x0,0x55,0x54,0xb5,0x9c,0x95,0x1f,0x47,0xa9, + 0xc,0xc,0x30,0x13,0x20,0x65,0x45,0xa2,0xe1,0x3d,0xad,0xe,0xa2,0xb7,0x3,0x9e, + 0x1f,0xa3,0x44,0x3d,0x13,0x28,0xbb,0x4e,0x1e,0x4,0x34,0x1,0x6d,0x2d,0x69,0x75, + 0x38,0x55,0x23,0x50,0xd3,0x5,0xe9,0x76,0x84,0x4a,0x8f,0x8,0xd6,0x2f,0x3,0xfa, + 0x1c,0x12,0x53,0xb6,0xe5,0x8,0x29,0xd7,0x76,0x19,0x1,0xa4,0x6,0x84,0xd8,0xed, + 0xa5,0x6f,0x7e,0x5c,0x4a,0xf4,0x92,0x1,0xa5,0xb2,0x49,0x4d,0x22,0x5c,0x40,0x25, + 0x50,0x5c,0x5c,0xac,0x8,0xb9,0x17,0x1,0xc0,0xcb,0x7c,0x67,0x33,0xb0,0x48,0x1d, + 0x85,0xbc,0xa6,0x7b,0xa0,0x64,0x35,0x4b,0x91,0x5e,0x86,0xd6,0x31,0x13,0xe0,0x51, + 0x7e,0xbb,0x1c,0x5,0x2a,0x18,0xa3,0x85,0xdf,0x86,0xdc,0xb6,0x43,0x1d,0x47,0x19, + 0x30,0x41,0x25,0xe9,0x8f,0xb8,0xb8,0x58,0xd1,0x6c,0xfc,0x8e,0xc7,0xe,0xa0,0xe2, + 0x56,0x9a,0xc,0xaf,0x69,0x92,0xb7,0xe0,0xb5,0xd9,0xfc,0x5,0x33,0x1,0x7f,0xbf, + 0xb8,0xa2,0x2d,0x64,0x5c,0xdd,0x18,0x1c,0xe0,0x26,0xc4,0xd,0xaf,0xb0,0x43,0x60, + 0xc3,0x5a,0x6e,0x26,0x70,0xb5,0x58,0xbe,0x3,0xc8,0x83,0x65,0xc0,0xe0,0xb0,0x97, + 0x95,0xfb,0x11,0x70,0xa,0xf5,0x44,0xe1,0x4,0x4a,0x1d,0x76,0xbd,0xdc,0x73,0x7, + 0xf4,0x46,0x65,0x47,0x28,0x86,0x26,0x41,0xd4,0x38,0x81,0x2a,0x48,0xb4,0x1c,0xe9, + 0xd0,0x3b,0x62,0x5e,0x8c,0xb9,0x90,0x1d,0xc8,0x7b,0x5c,0xaa,0x5f,0x5c,0x25,0x38, + 0xed,0xb3,0xc2,0xe3,0xc1,0xb0,0xf2,0x11,0x2a,0x45,0x99,0x66,0xf1,0x82,0xa3,0x43, + 0x2f,0x61,0x27,0xe0,0xe2,0x17,0xe7,0x7a,0xba,0x5e,0x82,0x10,0x58,0x5e,0xdc,0xf2, + 0x75,0xec,0xcf,0xff,0x76,0x2,0x2e,0x7e,0xb1,0xe7,0x2e,0xb9,0x83,0x9c,0x17,0xc3, + 0x5d,0x88,0x4d,0x3e,0x1,0xf1,0x7d,0x90,0x5a,0x44,0x44,0xe9,0xf1,0xcb,0xc9,0x85, + 0x52,0x76,0x0,0x63,0xd,0x73,0xe,0x29,0xcf,0x3f,0x3b,0xa6,0xad,0xf3,0x2c,0x5f, + 0x2e,0x0,0x29,0x4f,0x8a,0xa6,0xb1,0xa,0x8c,0x4b,0xfb,0xe3,0xae,0x14,0x1c,0x22, + 0x7b,0xa7,0x30,0x9,0x70,0x1b,0x83,0xdc,0xa2,0xac,0x2f,0xfe,0x3d,0x30,0x96,0x8d, + 0x2f,0xca,0x15,0x70,0x45,0xc1,0xbb,0x91,0x7d,0x7,0xaa,0x3e,0x9b,0x54,0x81,0x87, + 0xff,0x51,0x20,0x3,0xaa,0x5f,0x5c,0x4b,0x24,0xd2,0x11,0x18,0xe7,0x7e,0x32,0x9e, + 0xd8,0x6a,0x16,0x69,0xa1,0x9f,0x4a,0xce,0x36,0x3d,0x5d,0xdb,0x81,0x6,0x21,0x55, + 0xb1,0x88,0x8b,0xed,0x6b,0xe1,0xd6,0x21,0x59,0x1f,0x10,0xa,0xbf,0x17,0x12,0x9d, + 0xc9,0x6f,0x82,0x62,0x43,0xab,0x4,0x9a,0x80,0xe9,0xab,0x2f,0xa9,0x20,0x7a,0xa7, + 0x1b,0xb6,0x26,0xc5,0x11,0x1a,0x4e,0xbb,0xe2,0x1d,0xff,0xd0,0x69,0xa0,0x66,0x20, + 0xa2,0x3b,0xf4,0xba,0xa8,0x42,0xa1,0x1a,0xc5,0xe3,0xd3,0x23,0xb1,0x2,0x33,0x8a, + 0x23,0xcb,0xb,0x6e,0xb8,0x81,0xfd,0x62,0x93,0xc5,0xe9,0x93,0x33,0xea,0x88,0x78, + 0x16,0x63,0x1d,0x51,0xfb,0x91,0x10,0xee,0x18,0x9a,0xc3,0x20,0x7b,0x46,0x8f,0xb0, + 0xf,0xd7,0xb,0x1f,0x5d,0xfc,0x92,0xbf,0xab,0x19,0x7d,0xfc,0x73,0x28,0xa2,0xe9, + 0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, // arrowRight.png 0x0,0x0,0x1,0x4c, 0x89, @@ -210,6 +283,23 @@ static const unsigned char qt_resource_data[] = { 0x1b,0x9d,0x6f,0xf2,0x3c,0x5c,0x99,0x74,0xbd,0x8d,0x1a,0xf2,0x77,0x5f,0x26,0x7f, 0x2f,0x6f,0xa8,0x4f,0xa6,0xf3,0xed,0x34,0xae,0x1,0xf5,0x91,0x9c,0xe1,0xe2,0x98, 0xb5,0x4f,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // open.png + 0x0,0x0,0x0,0xde, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0xc,0x0,0x0,0x0,0x8,0x8,0x6,0x0,0x0,0x0,0xcd,0xe4,0x1e,0xf1, + 0x0,0x0,0x0,0x4,0x73,0x42,0x49,0x54,0x8,0x8,0x8,0x8,0x7c,0x8,0x64,0x88, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0, + 0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc4,0x0,0x0,0xe,0xc4,0x1,0x95,0x2b, + 0xe,0x1b,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x53,0x6f,0x66,0x74,0x77,0x61, + 0x72,0x65,0x0,0x77,0x77,0x77,0x2e,0x69,0x6e,0x6b,0x73,0x63,0x61,0x70,0x65,0x2e, + 0x6f,0x72,0x67,0x9b,0xee,0x3c,0x1a,0x0,0x0,0x0,0x3e,0x49,0x44,0x41,0x54,0x28, + 0x53,0x63,0xbc,0x73,0xb1,0xe4,0x3f,0x3,0x9,0x80,0x9,0x4a,0x13,0xd,0x98,0x94, + 0xf5,0xba,0xa1,0x4c,0xc2,0x0,0xa4,0x16,0x6c,0x3,0x31,0x9a,0x60,0x6a,0xe0,0x4e, + 0xc2,0xa7,0x9,0x59,0x8e,0x74,0x3f,0x40,0x69,0x30,0xc0,0x66,0xb,0xba,0x18,0x86, + 0xd,0xc8,0xa,0x30,0xd,0x60,0x60,0x0,0x0,0xe9,0x19,0xb,0xc8,0x7a,0x5a,0xb8, + 0x7c,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, // branch-more.png 0x0,0x0,0x0,0xb0, 0x89, @@ -242,6 +332,25 @@ static const unsigned char qt_resource_data[] = { 0x42,0x44,0x6d,0xea,0x79,0xc5,0x4e,0xfa,0x15,0xc9,0x55,0x3e,0xd6,0x44,0xb,0x4, 0xfe,0x6,0xbd,0x89,0x85,0x37,0xc3,0x8c,0x6d,0x33,0x49,0x87,0x85,0x54,0x0,0x0, 0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // close.png + 0x0,0x0,0x0,0xf9, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x8,0x0,0x0,0x0,0xc,0x8,0x6,0x0,0x0,0x0,0x5f,0x9e,0xfc,0x9d, + 0x0,0x0,0x0,0x4,0x73,0x42,0x49,0x54,0x8,0x8,0x8,0x8,0x7c,0x8,0x64,0x88, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0, + 0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc4,0x0,0x0,0xe,0xc4,0x1,0x95,0x2b, + 0xe,0x1b,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x53,0x6f,0x66,0x74,0x77,0x61, + 0x72,0x65,0x0,0x77,0x77,0x77,0x2e,0x69,0x6e,0x6b,0x73,0x63,0x61,0x70,0x65,0x2e, + 0x6f,0x72,0x67,0x9b,0xee,0x3c,0x1a,0x0,0x0,0x0,0x59,0x49,0x44,0x41,0x54,0x28, + 0x53,0x63,0xbc,0x73,0xb1,0xe4,0x3f,0x3,0x10,0x28,0xeb,0x75,0x83,0x28,0xc,0xc0, + 0x4,0xa5,0x19,0xee,0x5e,0x2a,0x85,0xb2,0x50,0x1,0x5c,0x1,0x8,0x60,0x53,0x84, + 0xa2,0x0,0x4,0x40,0x8a,0x90,0x15,0x62,0x28,0x80,0x1,0x98,0x22,0x9c,0xa,0x40, + 0x0,0xa4,0x8,0xaf,0x2,0x10,0xc0,0xab,0x0,0xe4,0x75,0x9c,0xa,0x60,0xe1,0x82, + 0xa1,0x0,0x24,0x81,0x1c,0x68,0x28,0xa,0xb0,0x85,0x26,0x5c,0x1,0x36,0x49,0x6, + 0x6,0x6,0x6,0x0,0xab,0x61,0x16,0x14,0x83,0x17,0x2c,0x6d,0x0,0x0,0x0,0x0, + 0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, // chevron-down.png 0x0,0x0,0x1,0x4b, 0x89, @@ -267,130 +376,131 @@ static const unsigned char qt_resource_data[] = { 0xc,0xd1,0x82,0x6,0xbd,0x1,0xcd,0x6,0x82,0xb5,0x4d,0xed,0x9,0x91,0x0,0x0, 0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, // settings.svg - 0x0,0x0,0x7,0x9d, + 0x0,0x0,0x7,0xac, 0x3c, 0x73,0x76,0x67,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x33,0x32,0x22,0x20,0x68, 0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x33,0x32,0x22,0x20,0x76,0x69,0x65,0x77,0x42, 0x6f,0x78,0x3d,0x22,0x30,0x20,0x30,0x20,0x33,0x32,0x20,0x33,0x32,0x22,0x20,0x66, 0x69,0x6c,0x6c,0x3d,0x22,0x6e,0x6f,0x6e,0x65,0x22,0x20,0x78,0x6d,0x6c,0x6e,0x73, 0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e, - 0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x30,0x2f,0x73,0x76,0x67,0x22,0x3e,0xa,0x3c, - 0x67,0x20,0x63,0x6c,0x69,0x70,0x2d,0x70,0x61,0x74,0x68,0x3d,0x22,0x75,0x72,0x6c, - 0x28,0x23,0x63,0x6c,0x69,0x70,0x30,0x5f,0x34,0x5f,0x31,0x31,0x32,0x29,0x22,0x3e, - 0xa,0x3c,0x6d,0x61,0x73,0x6b,0x20,0x69,0x64,0x3d,0x22,0x6d,0x61,0x73,0x6b,0x30, - 0x5f,0x34,0x5f,0x31,0x31,0x32,0x22,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x6d, - 0x61,0x73,0x6b,0x2d,0x74,0x79,0x70,0x65,0x3a,0x6c,0x75,0x6d,0x69,0x6e,0x61,0x6e, - 0x63,0x65,0x22,0x20,0x6d,0x61,0x73,0x6b,0x55,0x6e,0x69,0x74,0x73,0x3d,0x22,0x75, - 0x73,0x65,0x72,0x53,0x70,0x61,0x63,0x65,0x4f,0x6e,0x55,0x73,0x65,0x22,0x20,0x78, - 0x3d,0x22,0x30,0x22,0x20,0x79,0x3d,0x22,0x30,0x22,0x20,0x77,0x69,0x64,0x74,0x68, - 0x3d,0x22,0x33,0x32,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x33,0x32, - 0x22,0x3e,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x30,0x20,0x30, - 0x48,0x33,0x32,0x56,0x33,0x32,0x48,0x30,0x56,0x30,0x5a,0x22,0x20,0x66,0x69,0x6c, - 0x6c,0x3d,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x2f,0x3e,0xa,0x3c,0x2f,0x6d,0x61, - 0x73,0x6b,0x3e,0xa,0x3c,0x67,0x20,0x6d,0x61,0x73,0x6b,0x3d,0x22,0x75,0x72,0x6c, - 0x28,0x23,0x6d,0x61,0x73,0x6b,0x30,0x5f,0x34,0x5f,0x31,0x31,0x32,0x29,0x22,0x3e, - 0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x31,0x34,0x2e,0x35,0x39, - 0x31,0x20,0x33,0x31,0x2e,0x39,0x38,0x35,0x48,0x31,0x37,0x2e,0x34,0x30,0x39,0x43, - 0x31,0x38,0x2e,0x32,0x30,0x35,0x20,0x33,0x31,0x2e,0x39,0x38,0x35,0x20,0x31,0x38, - 0x2e,0x37,0x38,0x37,0x20,0x33,0x31,0x2e,0x35,0x31,0x20,0x31,0x38,0x2e,0x39,0x35, - 0x35,0x20,0x33,0x30,0x2e,0x37,0x33,0x4c,0x31,0x39,0x2e,0x37,0x35,0x31,0x20,0x32, - 0x37,0x2e,0x33,0x36,0x33,0x43,0x32,0x30,0x2e,0x33,0x32,0x36,0x20,0x32,0x37,0x2e, - 0x31,0x37,0x34,0x36,0x20,0x32,0x30,0x2e,0x38,0x38,0x38,0x35,0x20,0x32,0x36,0x2e, - 0x39,0x34,0x39,0x38,0x20,0x32,0x31,0x2e,0x34,0x33,0x35,0x20,0x32,0x36,0x2e,0x36, - 0x39,0x4c,0x32,0x34,0x2e,0x33,0x39,0x20,0x32,0x38,0x2e,0x34,0x39,0x35,0x43,0x32, - 0x35,0x2e,0x30,0x34,0x39,0x20,0x32,0x38,0x2e,0x39,0x30,0x39,0x20,0x32,0x35,0x2e, - 0x37,0x39,0x39,0x20,0x32,0x38,0x2e,0x38,0x34,0x37,0x20,0x32,0x36,0x2e,0x33,0x35, - 0x20,0x32,0x38,0x2e,0x32,0x39,0x37,0x4c,0x32,0x38,0x2e,0x33,0x32,0x35,0x20,0x32, - 0x36,0x2e,0x33,0x33,0x37,0x43,0x32,0x38,0x2e,0x38,0x37,0x37,0x20,0x32,0x35,0x2e, - 0x37,0x38,0x37,0x20,0x32,0x38,0x2e,0x39,0x35,0x33,0x20,0x32,0x34,0x2e,0x39,0x39, - 0x31,0x20,0x32,0x38,0x2e,0x35,0x30,0x39,0x20,0x32,0x34,0x2e,0x33,0x33,0x33,0x4c, - 0x32,0x36,0x2e,0x37,0x30,0x32,0x20,0x32,0x31,0x2e,0x34,0x31,0x43,0x32,0x36,0x2e, - 0x39,0x36,0x32,0x20,0x32,0x30,0x2e,0x38,0x37,0x34,0x20,0x32,0x37,0x2e,0x31,0x39, - 0x32,0x20,0x32,0x30,0x2e,0x33,0x32,0x33,0x20,0x32,0x37,0x2e,0x33,0x36,0x31,0x20, - 0x31,0x39,0x2e,0x37,0x37,0x32,0x4c,0x33,0x30,0x2e,0x37,0x36,0x20,0x31,0x38,0x2e, - 0x39,0x36,0x32,0x43,0x33,0x31,0x2e,0x35,0x34,0x20,0x31,0x38,0x2e,0x37,0x39,0x32, - 0x20,0x33,0x32,0x20,0x31,0x38,0x2e,0x32,0x31,0x32,0x20,0x33,0x32,0x20,0x31,0x37, - 0x2e,0x34,0x31,0x36,0x56,0x31,0x34,0x2e,0x36,0x34,0x36,0x43,0x33,0x32,0x20,0x31, - 0x33,0x2e,0x38,0x36,0x36,0x20,0x33,0x31,0x2e,0x35,0x34,0x20,0x31,0x33,0x2e,0x32, - 0x38,0x34,0x20,0x33,0x30,0x2e,0x37,0x36,0x20,0x31,0x33,0x2e,0x31,0x31,0x36,0x4c, - 0x32,0x37,0x2e,0x33,0x39,0x31,0x20,0x31,0x32,0x2e,0x33,0x30,0x34,0x43,0x32,0x37, - 0x2e,0x32,0x30,0x34,0x38,0x20,0x31,0x31,0x2e,0x37,0x33,0x35,0x35,0x20,0x32,0x36, - 0x2e,0x39,0x38,0x35,0x31,0x20,0x31,0x31,0x2e,0x31,0x37,0x38,0x35,0x20,0x32,0x36, - 0x2e,0x37,0x33,0x33,0x20,0x31,0x30,0x2e,0x36,0x33,0x36,0x4c,0x32,0x38,0x2e,0x35, - 0x34,0x20,0x37,0x2e,0x36,0x36,0x37,0x43,0x32,0x38,0x2e,0x39,0x36,0x38,0x20,0x37, - 0x2e,0x30,0x30,0x39,0x20,0x32,0x38,0x2e,0x39,0x32,0x33,0x20,0x36,0x2e,0x32,0x35, - 0x39,0x20,0x32,0x38,0x2e,0x33,0x35,0x36,0x20,0x35,0x2e,0x37,0x30,0x38,0x4c,0x32, - 0x36,0x2e,0x33,0x35,0x20,0x33,0x2e,0x37,0x33,0x34,0x43,0x32,0x35,0x2e,0x37,0x38, - 0x34,0x20,0x33,0x2e,0x32,0x31,0x34,0x20,0x32,0x35,0x2e,0x31,0x31,0x20,0x33,0x2e, - 0x31,0x32,0x32,0x20,0x32,0x34,0x2e,0x34,0x33,0x36,0x20,0x33,0x2e,0x35,0x30,0x34, - 0x4c,0x32,0x31,0x2e,0x34,0x33,0x36,0x20,0x35,0x2e,0x33,0x35,0x36,0x43,0x32,0x30, - 0x2e,0x38,0x39,0x36,0x33,0x20,0x35,0x2e,0x30,0x37,0x36,0x33,0x32,0x20,0x32,0x30, - 0x2e,0x33,0x33,0x32,0x33,0x20,0x34,0x2e,0x38,0x34,0x36,0x30,0x35,0x20,0x31,0x39, - 0x2e,0x37,0x35,0x31,0x20,0x34,0x2e,0x36,0x36,0x38,0x4c,0x31,0x38,0x2e,0x39,0x35, - 0x35,0x20,0x31,0x2e,0x32,0x35,0x35,0x43,0x31,0x38,0x2e,0x37,0x38,0x37,0x20,0x30, - 0x2e,0x34,0x37,0x35,0x20,0x31,0x38,0x2e,0x32,0x30,0x35,0x20,0x30,0x20,0x31,0x37, - 0x2e,0x34,0x30,0x39,0x20,0x30,0x48,0x31,0x34,0x2e,0x35,0x39,0x43,0x31,0x33,0x2e, - 0x37,0x39,0x34,0x20,0x30,0x20,0x31,0x33,0x2e,0x32,0x31,0x32,0x20,0x30,0x2e,0x34, - 0x37,0x34,0x20,0x31,0x33,0x2e,0x30,0x32,0x39,0x20,0x31,0x2e,0x32,0x35,0x35,0x4c, - 0x31,0x32,0x2e,0x32,0x33,0x33,0x20,0x34,0x2e,0x36,0x33,0x37,0x43,0x31,0x31,0x2e, - 0x36,0x33,0x35,0x20,0x34,0x2e,0x38,0x33,0x36,0x20,0x31,0x31,0x2e,0x30,0x35,0x33, - 0x20,0x35,0x2e,0x30,0x36,0x36,0x20,0x31,0x30,0x2e,0x35,0x33,0x33,0x20,0x35,0x2e, - 0x33,0x34,0x31,0x4c,0x37,0x2e,0x35,0x36,0x33,0x30,0x32,0x20,0x33,0x2e,0x35,0x30, - 0x35,0x43,0x36,0x2e,0x38,0x38,0x39,0x30,0x32,0x20,0x33,0x2e,0x31,0x32,0x32,0x20, - 0x36,0x2e,0x32,0x30,0x30,0x30,0x32,0x20,0x33,0x2e,0x31,0x39,0x38,0x20,0x35,0x2e, - 0x36,0x33,0x33,0x30,0x32,0x20,0x33,0x2e,0x37,0x33,0x35,0x4c,0x33,0x2e,0x36,0x34, - 0x33,0x30,0x32,0x20,0x35,0x2e,0x37,0x30,0x38,0x43,0x33,0x2e,0x30,0x37,0x37,0x30, - 0x32,0x20,0x36,0x2e,0x32,0x35,0x39,0x20,0x33,0x2e,0x30,0x31,0x35,0x30,0x32,0x20, - 0x37,0x2e,0x30,0x30,0x39,0x20,0x33,0x2e,0x34,0x35,0x39,0x30,0x32,0x20,0x37,0x2e, - 0x36,0x36,0x38,0x4c,0x35,0x2e,0x32,0x35,0x31,0x30,0x32,0x20,0x31,0x30,0x2e,0x36, - 0x33,0x36,0x43,0x35,0x2e,0x30,0x35,0x31,0x30,0x32,0x20,0x31,0x31,0x2e,0x31,0x31, - 0x31,0x20,0x34,0x2e,0x38,0x30,0x37,0x30,0x32,0x20,0x31,0x31,0x2e,0x36,0x37,0x36, - 0x20,0x34,0x2e,0x36,0x30,0x38,0x30,0x32,0x20,0x31,0x32,0x2e,0x33,0x30,0x34,0x4c, - 0x31,0x2e,0x32,0x33,0x39,0x30,0x32,0x20,0x31,0x33,0x2e,0x31,0x31,0x35,0x43,0x30, - 0x2e,0x34,0x35,0x39,0x30,0x32,0x33,0x20,0x31,0x33,0x2e,0x32,0x38,0x34,0x20,0x2d, - 0x30,0x2e,0x30,0x30,0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x20,0x31,0x33,0x2e,0x38, - 0x36,0x35,0x20,0x2d,0x30,0x2e,0x30,0x30,0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x20, - 0x31,0x34,0x2e,0x36,0x34,0x35,0x56,0x31,0x37,0x2e,0x34,0x31,0x35,0x43,0x2d,0x30, - 0x2e,0x30,0x30,0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x20,0x31,0x38,0x2e,0x32,0x31, - 0x31,0x20,0x30,0x2e,0x34,0x35,0x39,0x30,0x32,0x33,0x20,0x31,0x38,0x2e,0x37,0x39, - 0x33,0x20,0x31,0x2e,0x32,0x33,0x39,0x30,0x32,0x20,0x31,0x38,0x2e,0x39,0x36,0x31, - 0x4c,0x34,0x2e,0x36,0x33,0x39,0x30,0x32,0x20,0x31,0x39,0x2e,0x37,0x37,0x32,0x43, - 0x34,0x2e,0x38,0x30,0x37,0x30,0x32,0x20,0x32,0x30,0x2e,0x33,0x32,0x33,0x20,0x35, - 0x2e,0x30,0x33,0x36,0x30,0x32,0x20,0x32,0x30,0x2e,0x38,0x37,0x34,0x20,0x35,0x2e, - 0x32,0x38,0x31,0x30,0x32,0x20,0x32,0x31,0x2e,0x34,0x31,0x4c,0x33,0x2e,0x34,0x39, - 0x30,0x30,0x32,0x20,0x32,0x34,0x2e,0x33,0x33,0x33,0x43,0x33,0x2e,0x30,0x33,0x30, - 0x30,0x32,0x20,0x32,0x34,0x2e,0x39,0x39,0x31,0x20,0x33,0x2e,0x31,0x32,0x32,0x30, - 0x32,0x20,0x32,0x35,0x2e,0x37,0x38,0x37,0x20,0x33,0x2e,0x36,0x37,0x34,0x30,0x32, - 0x20,0x32,0x36,0x2e,0x33,0x33,0x38,0x4c,0x35,0x2e,0x36,0x33,0x34,0x30,0x32,0x20, - 0x32,0x38,0x2e,0x32,0x39,0x37,0x43,0x36,0x2e,0x31,0x38,0x34,0x30,0x32,0x20,0x32, - 0x38,0x2e,0x38,0x34,0x37,0x20,0x36,0x2e,0x39,0x35,0x30,0x30,0x32,0x20,0x32,0x38, - 0x2e,0x39,0x30,0x39,0x20,0x37,0x2e,0x36,0x30,0x39,0x30,0x32,0x20,0x32,0x38,0x2e, - 0x34,0x39,0x35,0x4c,0x31,0x30,0x2e,0x35,0x34,0x39,0x20,0x32,0x36,0x2e,0x36,0x39, - 0x43,0x31,0x31,0x2e,0x30,0x36,0x39,0x20,0x32,0x36,0x2e,0x39,0x33,0x34,0x20,0x31, - 0x31,0x2e,0x36,0x33,0x35,0x20,0x32,0x37,0x2e,0x31,0x36,0x34,0x20,0x31,0x32,0x2e, - 0x32,0x33,0x32,0x20,0x32,0x37,0x2e,0x33,0x36,0x33,0x4c,0x31,0x33,0x2e,0x30,0x32, - 0x39,0x20,0x33,0x30,0x2e,0x37,0x33,0x43,0x31,0x33,0x2e,0x32,0x31,0x32,0x20,0x33, - 0x31,0x2e,0x35,0x31,0x20,0x31,0x33,0x2e,0x37,0x39,0x35,0x20,0x33,0x31,0x2e,0x39, - 0x38,0x35,0x20,0x31,0x34,0x2e,0x35,0x39,0x31,0x20,0x33,0x31,0x2e,0x39,0x38,0x35, - 0x5a,0x4d,0x31,0x36,0x20,0x32,0x31,0x2e,0x33,0x39,0x35,0x43,0x31,0x33,0x2e,0x30, - 0x33,0x20,0x32,0x31,0x2e,0x33,0x39,0x35,0x20,0x31,0x30,0x2e,0x35,0x39,0x35,0x20, - 0x31,0x38,0x2e,0x39,0x34,0x36,0x20,0x31,0x30,0x2e,0x35,0x39,0x35,0x20,0x31,0x35, - 0x2e,0x39,0x37,0x37,0x43,0x31,0x30,0x2e,0x35,0x39,0x35,0x20,0x31,0x33,0x2e,0x30, - 0x32,0x33,0x20,0x31,0x33,0x2e,0x30,0x33,0x20,0x31,0x30,0x2e,0x35,0x39,0x20,0x31, - 0x36,0x20,0x31,0x30,0x2e,0x35,0x39,0x43,0x31,0x38,0x2e,0x39,0x37,0x20,0x31,0x30, - 0x2e,0x35,0x39,0x20,0x32,0x31,0x2e,0x34,0x30,0x35,0x20,0x31,0x33,0x2e,0x30,0x32, - 0x34,0x20,0x32,0x31,0x2e,0x34,0x30,0x35,0x20,0x31,0x35,0x2e,0x39,0x37,0x37,0x43, - 0x32,0x31,0x2e,0x34,0x30,0x35,0x20,0x31,0x38,0x2e,0x39,0x34,0x36,0x20,0x31,0x38, - 0x2e,0x39,0x37,0x20,0x32,0x31,0x2e,0x33,0x39,0x35,0x20,0x31,0x36,0x20,0x32,0x31, - 0x2e,0x33,0x39,0x35,0x5a,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x31,0x33, - 0x33,0x38,0x35,0x46,0x22,0x2f,0x3e,0xa,0x3c,0x2f,0x67,0x3e,0xa,0x3c,0x2f,0x67, - 0x3e,0xa,0x3c,0x64,0x65,0x66,0x73,0x3e,0xa,0x3c,0x63,0x6c,0x69,0x70,0x50,0x61, - 0x74,0x68,0x20,0x69,0x64,0x3d,0x22,0x63,0x6c,0x69,0x70,0x30,0x5f,0x34,0x5f,0x31, - 0x31,0x32,0x22,0x3e,0xa,0x3c,0x72,0x65,0x63,0x74,0x20,0x77,0x69,0x64,0x74,0x68, - 0x3d,0x22,0x33,0x32,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x33,0x32, - 0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x2f,0x3e, - 0xa,0x3c,0x2f,0x63,0x6c,0x69,0x70,0x50,0x61,0x74,0x68,0x3e,0xa,0x3c,0x2f,0x64, - 0x65,0x66,0x73,0x3e,0xa,0x3c,0x2f,0x73,0x76,0x67,0x3e,0xa, + 0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x30,0x2f,0x73,0x76,0x67,0x22,0x3e,0xd,0xa, + 0x3c,0x67,0x20,0x63,0x6c,0x69,0x70,0x2d,0x70,0x61,0x74,0x68,0x3d,0x22,0x75,0x72, + 0x6c,0x28,0x23,0x63,0x6c,0x69,0x70,0x30,0x5f,0x34,0x5f,0x31,0x31,0x32,0x29,0x22, + 0x3e,0xd,0xa,0x3c,0x6d,0x61,0x73,0x6b,0x20,0x69,0x64,0x3d,0x22,0x6d,0x61,0x73, + 0x6b,0x30,0x5f,0x34,0x5f,0x31,0x31,0x32,0x22,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d, + 0x22,0x6d,0x61,0x73,0x6b,0x2d,0x74,0x79,0x70,0x65,0x3a,0x6c,0x75,0x6d,0x69,0x6e, + 0x61,0x6e,0x63,0x65,0x22,0x20,0x6d,0x61,0x73,0x6b,0x55,0x6e,0x69,0x74,0x73,0x3d, + 0x22,0x75,0x73,0x65,0x72,0x53,0x70,0x61,0x63,0x65,0x4f,0x6e,0x55,0x73,0x65,0x22, + 0x20,0x78,0x3d,0x22,0x30,0x22,0x20,0x79,0x3d,0x22,0x30,0x22,0x20,0x77,0x69,0x64, + 0x74,0x68,0x3d,0x22,0x33,0x32,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22, + 0x33,0x32,0x22,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d, + 0x30,0x20,0x30,0x48,0x33,0x32,0x56,0x33,0x32,0x48,0x30,0x56,0x30,0x5a,0x22,0x20, + 0x66,0x69,0x6c,0x6c,0x3d,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x2f,0x3e,0xd,0xa, + 0x3c,0x2f,0x6d,0x61,0x73,0x6b,0x3e,0xd,0xa,0x3c,0x67,0x20,0x6d,0x61,0x73,0x6b, + 0x3d,0x22,0x75,0x72,0x6c,0x28,0x23,0x6d,0x61,0x73,0x6b,0x30,0x5f,0x34,0x5f,0x31, + 0x31,0x32,0x29,0x22,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22, + 0x4d,0x31,0x34,0x2e,0x35,0x39,0x31,0x20,0x33,0x31,0x2e,0x39,0x38,0x35,0x48,0x31, + 0x37,0x2e,0x34,0x30,0x39,0x43,0x31,0x38,0x2e,0x32,0x30,0x35,0x20,0x33,0x31,0x2e, + 0x39,0x38,0x35,0x20,0x31,0x38,0x2e,0x37,0x38,0x37,0x20,0x33,0x31,0x2e,0x35,0x31, + 0x20,0x31,0x38,0x2e,0x39,0x35,0x35,0x20,0x33,0x30,0x2e,0x37,0x33,0x4c,0x31,0x39, + 0x2e,0x37,0x35,0x31,0x20,0x32,0x37,0x2e,0x33,0x36,0x33,0x43,0x32,0x30,0x2e,0x33, + 0x32,0x36,0x20,0x32,0x37,0x2e,0x31,0x37,0x34,0x36,0x20,0x32,0x30,0x2e,0x38,0x38, + 0x38,0x35,0x20,0x32,0x36,0x2e,0x39,0x34,0x39,0x38,0x20,0x32,0x31,0x2e,0x34,0x33, + 0x35,0x20,0x32,0x36,0x2e,0x36,0x39,0x4c,0x32,0x34,0x2e,0x33,0x39,0x20,0x32,0x38, + 0x2e,0x34,0x39,0x35,0x43,0x32,0x35,0x2e,0x30,0x34,0x39,0x20,0x32,0x38,0x2e,0x39, + 0x30,0x39,0x20,0x32,0x35,0x2e,0x37,0x39,0x39,0x20,0x32,0x38,0x2e,0x38,0x34,0x37, + 0x20,0x32,0x36,0x2e,0x33,0x35,0x20,0x32,0x38,0x2e,0x32,0x39,0x37,0x4c,0x32,0x38, + 0x2e,0x33,0x32,0x35,0x20,0x32,0x36,0x2e,0x33,0x33,0x37,0x43,0x32,0x38,0x2e,0x38, + 0x37,0x37,0x20,0x32,0x35,0x2e,0x37,0x38,0x37,0x20,0x32,0x38,0x2e,0x39,0x35,0x33, + 0x20,0x32,0x34,0x2e,0x39,0x39,0x31,0x20,0x32,0x38,0x2e,0x35,0x30,0x39,0x20,0x32, + 0x34,0x2e,0x33,0x33,0x33,0x4c,0x32,0x36,0x2e,0x37,0x30,0x32,0x20,0x32,0x31,0x2e, + 0x34,0x31,0x43,0x32,0x36,0x2e,0x39,0x36,0x32,0x20,0x32,0x30,0x2e,0x38,0x37,0x34, + 0x20,0x32,0x37,0x2e,0x31,0x39,0x32,0x20,0x32,0x30,0x2e,0x33,0x32,0x33,0x20,0x32, + 0x37,0x2e,0x33,0x36,0x31,0x20,0x31,0x39,0x2e,0x37,0x37,0x32,0x4c,0x33,0x30,0x2e, + 0x37,0x36,0x20,0x31,0x38,0x2e,0x39,0x36,0x32,0x43,0x33,0x31,0x2e,0x35,0x34,0x20, + 0x31,0x38,0x2e,0x37,0x39,0x32,0x20,0x33,0x32,0x20,0x31,0x38,0x2e,0x32,0x31,0x32, + 0x20,0x33,0x32,0x20,0x31,0x37,0x2e,0x34,0x31,0x36,0x56,0x31,0x34,0x2e,0x36,0x34, + 0x36,0x43,0x33,0x32,0x20,0x31,0x33,0x2e,0x38,0x36,0x36,0x20,0x33,0x31,0x2e,0x35, + 0x34,0x20,0x31,0x33,0x2e,0x32,0x38,0x34,0x20,0x33,0x30,0x2e,0x37,0x36,0x20,0x31, + 0x33,0x2e,0x31,0x31,0x36,0x4c,0x32,0x37,0x2e,0x33,0x39,0x31,0x20,0x31,0x32,0x2e, + 0x33,0x30,0x34,0x43,0x32,0x37,0x2e,0x32,0x30,0x34,0x38,0x20,0x31,0x31,0x2e,0x37, + 0x33,0x35,0x35,0x20,0x32,0x36,0x2e,0x39,0x38,0x35,0x31,0x20,0x31,0x31,0x2e,0x31, + 0x37,0x38,0x35,0x20,0x32,0x36,0x2e,0x37,0x33,0x33,0x20,0x31,0x30,0x2e,0x36,0x33, + 0x36,0x4c,0x32,0x38,0x2e,0x35,0x34,0x20,0x37,0x2e,0x36,0x36,0x37,0x43,0x32,0x38, + 0x2e,0x39,0x36,0x38,0x20,0x37,0x2e,0x30,0x30,0x39,0x20,0x32,0x38,0x2e,0x39,0x32, + 0x33,0x20,0x36,0x2e,0x32,0x35,0x39,0x20,0x32,0x38,0x2e,0x33,0x35,0x36,0x20,0x35, + 0x2e,0x37,0x30,0x38,0x4c,0x32,0x36,0x2e,0x33,0x35,0x20,0x33,0x2e,0x37,0x33,0x34, + 0x43,0x32,0x35,0x2e,0x37,0x38,0x34,0x20,0x33,0x2e,0x32,0x31,0x34,0x20,0x32,0x35, + 0x2e,0x31,0x31,0x20,0x33,0x2e,0x31,0x32,0x32,0x20,0x32,0x34,0x2e,0x34,0x33,0x36, + 0x20,0x33,0x2e,0x35,0x30,0x34,0x4c,0x32,0x31,0x2e,0x34,0x33,0x36,0x20,0x35,0x2e, + 0x33,0x35,0x36,0x43,0x32,0x30,0x2e,0x38,0x39,0x36,0x33,0x20,0x35,0x2e,0x30,0x37, + 0x36,0x33,0x32,0x20,0x32,0x30,0x2e,0x33,0x33,0x32,0x33,0x20,0x34,0x2e,0x38,0x34, + 0x36,0x30,0x35,0x20,0x31,0x39,0x2e,0x37,0x35,0x31,0x20,0x34,0x2e,0x36,0x36,0x38, + 0x4c,0x31,0x38,0x2e,0x39,0x35,0x35,0x20,0x31,0x2e,0x32,0x35,0x35,0x43,0x31,0x38, + 0x2e,0x37,0x38,0x37,0x20,0x30,0x2e,0x34,0x37,0x35,0x20,0x31,0x38,0x2e,0x32,0x30, + 0x35,0x20,0x30,0x20,0x31,0x37,0x2e,0x34,0x30,0x39,0x20,0x30,0x48,0x31,0x34,0x2e, + 0x35,0x39,0x43,0x31,0x33,0x2e,0x37,0x39,0x34,0x20,0x30,0x20,0x31,0x33,0x2e,0x32, + 0x31,0x32,0x20,0x30,0x2e,0x34,0x37,0x34,0x20,0x31,0x33,0x2e,0x30,0x32,0x39,0x20, + 0x31,0x2e,0x32,0x35,0x35,0x4c,0x31,0x32,0x2e,0x32,0x33,0x33,0x20,0x34,0x2e,0x36, + 0x33,0x37,0x43,0x31,0x31,0x2e,0x36,0x33,0x35,0x20,0x34,0x2e,0x38,0x33,0x36,0x20, + 0x31,0x31,0x2e,0x30,0x35,0x33,0x20,0x35,0x2e,0x30,0x36,0x36,0x20,0x31,0x30,0x2e, + 0x35,0x33,0x33,0x20,0x35,0x2e,0x33,0x34,0x31,0x4c,0x37,0x2e,0x35,0x36,0x33,0x30, + 0x32,0x20,0x33,0x2e,0x35,0x30,0x35,0x43,0x36,0x2e,0x38,0x38,0x39,0x30,0x32,0x20, + 0x33,0x2e,0x31,0x32,0x32,0x20,0x36,0x2e,0x32,0x30,0x30,0x30,0x32,0x20,0x33,0x2e, + 0x31,0x39,0x38,0x20,0x35,0x2e,0x36,0x33,0x33,0x30,0x32,0x20,0x33,0x2e,0x37,0x33, + 0x35,0x4c,0x33,0x2e,0x36,0x34,0x33,0x30,0x32,0x20,0x35,0x2e,0x37,0x30,0x38,0x43, + 0x33,0x2e,0x30,0x37,0x37,0x30,0x32,0x20,0x36,0x2e,0x32,0x35,0x39,0x20,0x33,0x2e, + 0x30,0x31,0x35,0x30,0x32,0x20,0x37,0x2e,0x30,0x30,0x39,0x20,0x33,0x2e,0x34,0x35, + 0x39,0x30,0x32,0x20,0x37,0x2e,0x36,0x36,0x38,0x4c,0x35,0x2e,0x32,0x35,0x31,0x30, + 0x32,0x20,0x31,0x30,0x2e,0x36,0x33,0x36,0x43,0x35,0x2e,0x30,0x35,0x31,0x30,0x32, + 0x20,0x31,0x31,0x2e,0x31,0x31,0x31,0x20,0x34,0x2e,0x38,0x30,0x37,0x30,0x32,0x20, + 0x31,0x31,0x2e,0x36,0x37,0x36,0x20,0x34,0x2e,0x36,0x30,0x38,0x30,0x32,0x20,0x31, + 0x32,0x2e,0x33,0x30,0x34,0x4c,0x31,0x2e,0x32,0x33,0x39,0x30,0x32,0x20,0x31,0x33, + 0x2e,0x31,0x31,0x35,0x43,0x30,0x2e,0x34,0x35,0x39,0x30,0x32,0x33,0x20,0x31,0x33, + 0x2e,0x32,0x38,0x34,0x20,0x2d,0x30,0x2e,0x30,0x30,0x30,0x39,0x37,0x36,0x35,0x36, + 0x32,0x20,0x31,0x33,0x2e,0x38,0x36,0x35,0x20,0x2d,0x30,0x2e,0x30,0x30,0x30,0x39, + 0x37,0x36,0x35,0x36,0x32,0x20,0x31,0x34,0x2e,0x36,0x34,0x35,0x56,0x31,0x37,0x2e, + 0x34,0x31,0x35,0x43,0x2d,0x30,0x2e,0x30,0x30,0x30,0x39,0x37,0x36,0x35,0x36,0x32, + 0x20,0x31,0x38,0x2e,0x32,0x31,0x31,0x20,0x30,0x2e,0x34,0x35,0x39,0x30,0x32,0x33, + 0x20,0x31,0x38,0x2e,0x37,0x39,0x33,0x20,0x31,0x2e,0x32,0x33,0x39,0x30,0x32,0x20, + 0x31,0x38,0x2e,0x39,0x36,0x31,0x4c,0x34,0x2e,0x36,0x33,0x39,0x30,0x32,0x20,0x31, + 0x39,0x2e,0x37,0x37,0x32,0x43,0x34,0x2e,0x38,0x30,0x37,0x30,0x32,0x20,0x32,0x30, + 0x2e,0x33,0x32,0x33,0x20,0x35,0x2e,0x30,0x33,0x36,0x30,0x32,0x20,0x32,0x30,0x2e, + 0x38,0x37,0x34,0x20,0x35,0x2e,0x32,0x38,0x31,0x30,0x32,0x20,0x32,0x31,0x2e,0x34, + 0x31,0x4c,0x33,0x2e,0x34,0x39,0x30,0x30,0x32,0x20,0x32,0x34,0x2e,0x33,0x33,0x33, + 0x43,0x33,0x2e,0x30,0x33,0x30,0x30,0x32,0x20,0x32,0x34,0x2e,0x39,0x39,0x31,0x20, + 0x33,0x2e,0x31,0x32,0x32,0x30,0x32,0x20,0x32,0x35,0x2e,0x37,0x38,0x37,0x20,0x33, + 0x2e,0x36,0x37,0x34,0x30,0x32,0x20,0x32,0x36,0x2e,0x33,0x33,0x38,0x4c,0x35,0x2e, + 0x36,0x33,0x34,0x30,0x32,0x20,0x32,0x38,0x2e,0x32,0x39,0x37,0x43,0x36,0x2e,0x31, + 0x38,0x34,0x30,0x32,0x20,0x32,0x38,0x2e,0x38,0x34,0x37,0x20,0x36,0x2e,0x39,0x35, + 0x30,0x30,0x32,0x20,0x32,0x38,0x2e,0x39,0x30,0x39,0x20,0x37,0x2e,0x36,0x30,0x39, + 0x30,0x32,0x20,0x32,0x38,0x2e,0x34,0x39,0x35,0x4c,0x31,0x30,0x2e,0x35,0x34,0x39, + 0x20,0x32,0x36,0x2e,0x36,0x39,0x43,0x31,0x31,0x2e,0x30,0x36,0x39,0x20,0x32,0x36, + 0x2e,0x39,0x33,0x34,0x20,0x31,0x31,0x2e,0x36,0x33,0x35,0x20,0x32,0x37,0x2e,0x31, + 0x36,0x34,0x20,0x31,0x32,0x2e,0x32,0x33,0x32,0x20,0x32,0x37,0x2e,0x33,0x36,0x33, + 0x4c,0x31,0x33,0x2e,0x30,0x32,0x39,0x20,0x33,0x30,0x2e,0x37,0x33,0x43,0x31,0x33, + 0x2e,0x32,0x31,0x32,0x20,0x33,0x31,0x2e,0x35,0x31,0x20,0x31,0x33,0x2e,0x37,0x39, + 0x35,0x20,0x33,0x31,0x2e,0x39,0x38,0x35,0x20,0x31,0x34,0x2e,0x35,0x39,0x31,0x20, + 0x33,0x31,0x2e,0x39,0x38,0x35,0x5a,0x4d,0x31,0x36,0x20,0x32,0x31,0x2e,0x33,0x39, + 0x35,0x43,0x31,0x33,0x2e,0x30,0x33,0x20,0x32,0x31,0x2e,0x33,0x39,0x35,0x20,0x31, + 0x30,0x2e,0x35,0x39,0x35,0x20,0x31,0x38,0x2e,0x39,0x34,0x36,0x20,0x31,0x30,0x2e, + 0x35,0x39,0x35,0x20,0x31,0x35,0x2e,0x39,0x37,0x37,0x43,0x31,0x30,0x2e,0x35,0x39, + 0x35,0x20,0x31,0x33,0x2e,0x30,0x32,0x33,0x20,0x31,0x33,0x2e,0x30,0x33,0x20,0x31, + 0x30,0x2e,0x35,0x39,0x20,0x31,0x36,0x20,0x31,0x30,0x2e,0x35,0x39,0x43,0x31,0x38, + 0x2e,0x39,0x37,0x20,0x31,0x30,0x2e,0x35,0x39,0x20,0x32,0x31,0x2e,0x34,0x30,0x35, + 0x20,0x31,0x33,0x2e,0x30,0x32,0x34,0x20,0x32,0x31,0x2e,0x34,0x30,0x35,0x20,0x31, + 0x35,0x2e,0x39,0x37,0x37,0x43,0x32,0x31,0x2e,0x34,0x30,0x35,0x20,0x31,0x38,0x2e, + 0x39,0x34,0x36,0x20,0x31,0x38,0x2e,0x39,0x37,0x20,0x32,0x31,0x2e,0x33,0x39,0x35, + 0x20,0x31,0x36,0x20,0x32,0x31,0x2e,0x33,0x39,0x35,0x5a,0x22,0x20,0x66,0x69,0x6c, + 0x6c,0x3d,0x22,0x23,0x31,0x33,0x33,0x38,0x35,0x46,0x22,0x2f,0x3e,0xd,0xa,0x3c, + 0x2f,0x67,0x3e,0xd,0xa,0x3c,0x2f,0x67,0x3e,0xd,0xa,0x3c,0x64,0x65,0x66,0x73, + 0x3e,0xd,0xa,0x3c,0x63,0x6c,0x69,0x70,0x50,0x61,0x74,0x68,0x20,0x69,0x64,0x3d, + 0x22,0x63,0x6c,0x69,0x70,0x30,0x5f,0x34,0x5f,0x31,0x31,0x32,0x22,0x3e,0xd,0xa, + 0x3c,0x72,0x65,0x63,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x33,0x32,0x22, + 0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x33,0x32,0x22,0x20,0x66,0x69,0x6c, + 0x6c,0x3d,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x2f,0x63, + 0x6c,0x69,0x70,0x50,0x61,0x74,0x68,0x3e,0xd,0xa,0x3c,0x2f,0x64,0x65,0x66,0x73, + 0x3e,0xd,0xa,0x3c,0x2f,0x73,0x76,0x67,0x3e,0xd,0xa, // fema-wing.svg 0x0,0x0,0x34,0x55, 0x3c, @@ -1232,11 +1342,118 @@ static const unsigned char qt_resource_data[] = { 0x65,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x2f,0x63,0x6c,0x69,0x70,0x50,0x61,0x74,0x68, 0x3e,0xd,0xa,0x3c,0x2f,0x64,0x65,0x66,0x73,0x3e,0xd,0xa,0x3c,0x2f,0x73,0x76, 0x67,0x3e,0xd,0xa, + // map.qml + 0x0,0x0,0x2,0xf5, + 0x0, + 0x0,0xa,0x7,0x78,0xda,0xad,0x55,0x4d,0x6b,0xdb,0x40,0x10,0xbd,0x7,0xf2,0x1f, + 0x16,0x9f,0xec,0x7c,0x6c,0xec,0x80,0xa1,0x28,0xd,0x25,0x38,0x94,0x16,0x1c,0x70, + 0xda,0x43,0xe3,0xe3,0x56,0x9a,0x48,0x4b,0xa5,0xdd,0x65,0x77,0x64,0xc7,0x2d,0xfd, + 0xef,0x9d,0x95,0x2c,0x5b,0xb2,0x64,0x39,0x87,0x2e,0x6,0xcb,0x3b,0xef,0x8d,0xe7, + 0xe3,0xcd,0x48,0x66,0x46,0x5b,0x64,0xcf,0xf8,0x9c,0xcb,0xf0,0x17,0xbb,0xe5,0x93, + 0xe9,0xf9,0x99,0xac,0x2e,0xe7,0x3a,0x14,0x28,0xb5,0x62,0xd3,0xe6,0xfd,0x42,0x3b, + 0xe9,0xef,0xa5,0x8a,0xb7,0xa6,0xf3,0xb3,0xaf,0x8,0x19,0xfb,0x73,0x7e,0xc6,0xe8, + 0x8,0x15,0x26,0xda,0x3a,0xfe,0x2a,0xd3,0x34,0x60,0x46,0x58,0x50,0xe8,0x31,0xde, + 0xf6,0x24,0x4c,0x5,0xf3,0x47,0x46,0x1,0xcb,0x84,0xd9,0x5f,0x74,0x73,0x2b,0xab, + 0x49,0xf3,0x58,0xaa,0x80,0x2d,0x8a,0xef,0xba,0x23,0x7f,0x94,0xc8,0x20,0x60,0x3, + 0xed,0xb2,0x41,0xd3,0x50,0xc2,0x17,0xc2,0x12,0x0,0xc1,0x1e,0xf2,0x9a,0x5c,0x4e, + 0xf1,0x18,0x4a,0x8d,0x87,0xb9,0x43,0x9d,0xf1,0x44,0x3b,0x1c,0xb4,0x9,0x2b,0x91, + 0xe6,0x9e,0x91,0x20,0x1a,0x17,0xdc,0xdc,0xa0,0x4c,0x81,0x6b,0x3,0xca,0xa1,0x5, + 0x40,0x72,0xc2,0xb5,0x8d,0x6f,0xe,0x98,0x7f,0xff,0x47,0x60,0xc6,0xea,0x95,0x8c, + 0xc0,0x3a,0xb,0xc6,0xb7,0x42,0xdb,0xd,0x8f,0xa4,0x13,0x3f,0x53,0x88,0x7a,0x22, + 0x45,0x9b,0xc3,0xf1,0x70,0x6a,0x8f,0x21,0xd5,0x1c,0x6c,0xd0,0xec,0x34,0xf,0xb5, + 0xb6,0x91,0x54,0x2,0x61,0x48,0x81,0xcc,0xa,0xc,0x4f,0x49,0x20,0x98,0x47,0x70, + 0xc5,0x6a,0x77,0x5a,0xc5,0xc5,0xe5,0x68,0xef,0xf2,0xb7,0xd6,0xd9,0x1c,0x56,0x40, + 0x3d,0xf5,0x7a,0xa9,0xae,0xbf,0x81,0x1,0xd1,0x4e,0x3c,0xd3,0x91,0x47,0x1a,0x2d, + 0x15,0xba,0xb9,0x74,0xd8,0x8c,0x9a,0x34,0x54,0xe8,0xb5,0xae,0xb9,0xfa,0xf1,0xa2, + 0x2a,0xb8,0x6d,0xd3,0x3e,0x89,0xa0,0xfc,0x97,0x47,0x81,0xa2,0xd,0x2b,0x55,0xb8, + 0xf0,0x3e,0xf8,0x1b,0x85,0x3c,0xee,0x87,0x6c,0x4a,0x48,0x1b,0xe4,0x74,0x6e,0x43, + 0xf0,0x71,0x6,0x94,0x6b,0x88,0x42,0xc5,0x29,0x74,0x85,0xec,0xcf,0x5a,0x46,0x98, + 0x4,0xec,0x76,0xdc,0x6d,0x4e,0x40,0xc6,0x9,0x1e,0xb7,0x87,0x3a,0xd5,0xd4,0xb4, + 0x81,0xed,0x14,0x81,0x3f,0x56,0x44,0x32,0x77,0xdd,0xe9,0xfc,0xed,0x13,0xc6,0xfe, + 0xc7,0x93,0xce,0x1d,0x3c,0x58,0x10,0x87,0x49,0x14,0x83,0x5c,0x19,0x9b,0xa6,0xfe, + 0x91,0xf6,0x27,0xb2,0x22,0xe6,0x28,0x6c,0xc,0xb8,0x5d,0x7,0x4d,0x3b,0x9,0xde, + 0x80,0xc5,0xd,0x23,0xdf,0x29,0x73,0x84,0xc4,0xb9,0x28,0xa1,0x3c,0x6c,0xa,0xf1, + 0x34,0x51,0xab,0x26,0xb1,0x52,0xeb,0x49,0xe6,0x4b,0xc0,0xc6,0x27,0x41,0xcb,0x2, + 0xd4,0x7,0xf3,0xa3,0xf0,0x59,0x84,0xe8,0x9b,0xf5,0x24,0x30,0xe1,0x46,0xaf,0x87, + 0xb7,0xc5,0x0,0xf1,0xdd,0x98,0xb0,0x6b,0x9a,0x93,0xd1,0xa1,0xa3,0x30,0xb7,0x4e, + 0xdb,0xef,0x89,0x30,0xe0,0xa7,0x93,0x3f,0x58,0xab,0xd7,0xb3,0xe2,0xf2,0x10,0xaa, + 0xd5,0xc2,0x82,0x73,0x40,0x6d,0xe9,0x90,0x5b,0x55,0x42,0x76,0x7f,0xba,0x86,0x7b, + 0x3c,0xbd,0x9,0xee,0xdf,0x51,0xba,0x1d,0xe1,0xc5,0xc3,0x2b,0x4d,0xf0,0xe2,0xe9, + 0xe5,0x8,0x74,0xd9,0x86,0x2e,0x5b,0x8a,0x6c,0x65,0xb8,0xdd,0x4e,0xb3,0x84,0xe6, + 0xea,0x48,0xa6,0x2b,0x61,0x59,0xf4,0xd6,0x11,0x8,0x55,0xb8,0xc,0xf2,0x8,0x67, + 0xd3,0x11,0x51,0xc5,0x59,0x76,0xcd,0xba,0x67,0xbd,0x16,0x7d,0x25,0x66,0xbd,0xb1, + 0x93,0x29,0xf1,0x1a,0xdd,0x1d,0xb1,0xb,0x36,0xe6,0x63,0x3a,0xd3,0xbb,0x2e,0x57, + 0xfb,0x1a,0x93,0xab,0xa3,0x5b,0xb8,0x7b,0xc8,0x77,0xad,0xbd,0xf6,0x39,0x5c,0xb0, + 0xeb,0x32,0xa6,0xab,0x3e,0x34,0x35,0xf6,0xd2,0x57,0x69,0x87,0x6e,0x83,0x47,0x27, + 0xbb,0xf1,0x23,0x1,0xbf,0xb4,0xbb,0xf6,0xf1,0x2b,0x1b,0xae,0xbd,0x95,0x17,0xfb, + 0xef,0x11,0x52,0x14,0x7c,0xc3,0x3e,0xb2,0xf1,0xe8,0xd8,0x2e,0x3c,0x18,0x86,0x7b, + 0x36,0xe9,0x58,0x59,0xc,0x52,0x7,0xef,0xf3,0x70,0xd9,0xed,0xa1,0xbb,0xf4,0x7b, + 0xda,0xb6,0x91,0x99,0x78,0x1b,0x4e,0xae,0xb6,0xcf,0x52,0xd,0x1b,0x20,0x6a,0xf0, + 0x87,0xd1,0xe8,0xee,0x64,0x7d,0x66,0x5a,0xa1,0x90,0xca,0x15,0x2b,0xb4,0x4f,0xb2, + 0xb5,0x29,0x6f,0x68,0x30,0xac,0x3b,0x60,0x9f,0xfc,0x2,0x98,0xa5,0x9a,0x46,0xfc, + 0x8b,0x50,0x51,0xb9,0x5,0x58,0x7b,0x2d,0xf4,0xbf,0xee,0xe9,0x8b,0x3e,0xff,0x0, + 0x94,0xce,0x8c,0xed, + // map.qml + 0x0,0x0,0x2,0xf5, + 0x0, + 0x0,0xa,0x7,0x78,0xda,0xad,0x55,0x4d,0x6b,0xdb,0x40,0x10,0xbd,0x7,0xf2,0x1f, + 0x16,0x9f,0xec,0x7c,0x6c,0xec,0x80,0xa1,0x28,0xd,0x25,0x38,0x94,0x16,0x1c,0x70, + 0xda,0x43,0xe3,0xe3,0x56,0x9a,0x48,0x4b,0xa5,0xdd,0x65,0x77,0x64,0xc7,0x2d,0xfd, + 0xef,0x9d,0x95,0x2c,0x5b,0xb2,0x64,0x39,0x87,0x2e,0x6,0xcb,0x3b,0xef,0x8d,0xe7, + 0xe3,0xcd,0x48,0x66,0x46,0x5b,0x64,0xcf,0xf8,0x9c,0xcb,0xf0,0x17,0xbb,0xe5,0x93, + 0xe9,0xf9,0x99,0xac,0x2e,0xe7,0x3a,0x14,0x28,0xb5,0x62,0xd3,0xe6,0xfd,0x42,0x3b, + 0xe9,0xef,0xa5,0x8a,0xb7,0xa6,0xf3,0xb3,0xaf,0x8,0x19,0xfb,0x73,0x7e,0xc6,0xe8, + 0x8,0x15,0x26,0xda,0x3a,0xfe,0x2a,0xd3,0x34,0x60,0x46,0x58,0x50,0xe8,0x31,0xde, + 0xf6,0x24,0x4c,0x5,0xf3,0x47,0x46,0x1,0xcb,0x84,0xd9,0x5f,0x74,0x73,0x2b,0xab, + 0x49,0xf3,0x58,0xaa,0x80,0x2d,0x8a,0xef,0xba,0x23,0x7f,0x94,0xc8,0x20,0x60,0x3, + 0xed,0xb2,0x41,0xd3,0x50,0xc2,0x17,0xc2,0x12,0x0,0xc1,0x1e,0xf2,0x9a,0x5c,0x4e, + 0xf1,0x18,0x4a,0x8d,0x87,0xb9,0x43,0x9d,0xf1,0x44,0x3b,0x1c,0xb4,0x9,0x2b,0x91, + 0xe6,0x9e,0x91,0x20,0x1a,0x17,0xdc,0xdc,0xa0,0x4c,0x81,0x6b,0x3,0xca,0xa1,0x5, + 0x40,0x72,0xc2,0xb5,0x8d,0x6f,0xe,0x98,0x7f,0xff,0x47,0x60,0xc6,0xea,0x95,0x8c, + 0xc0,0x3a,0xb,0xc6,0xb7,0x42,0xdb,0xd,0x8f,0xa4,0x13,0x3f,0x53,0x88,0x7a,0x22, + 0x45,0x9b,0xc3,0xf1,0x70,0x6a,0x8f,0x21,0xd5,0x1c,0x6c,0xd0,0xec,0x34,0xf,0xb5, + 0xb6,0x91,0x54,0x2,0x61,0x48,0x81,0xcc,0xa,0xc,0x4f,0x49,0x20,0x98,0x47,0x70, + 0xc5,0x6a,0x77,0x5a,0xc5,0xc5,0xe5,0x68,0xef,0xf2,0xb7,0xd6,0xd9,0x1c,0x56,0x40, + 0x3d,0xf5,0x7a,0xa9,0xae,0xbf,0x81,0x1,0xd1,0x4e,0x3c,0xd3,0x91,0x47,0x1a,0x2d, + 0x15,0xba,0xb9,0x74,0xd8,0x8c,0x9a,0x34,0x54,0xe8,0xb5,0xae,0xb9,0xfa,0xf1,0xa2, + 0x2a,0xb8,0x6d,0xd3,0x3e,0x89,0xa0,0xfc,0x97,0x47,0x81,0xa2,0xd,0x2b,0x55,0xb8, + 0xf0,0x3e,0xf8,0x1b,0x85,0x3c,0xee,0x87,0x6c,0x4a,0x48,0x1b,0xe4,0x74,0x6e,0x43, + 0xf0,0x71,0x6,0x94,0x6b,0x88,0x42,0xc5,0x29,0x74,0x85,0xec,0xcf,0x5a,0x46,0x98, + 0x4,0xec,0x76,0xdc,0x6d,0x4e,0x40,0xc6,0x9,0x1e,0xb7,0x87,0x3a,0xd5,0xd4,0xb4, + 0x81,0xed,0x14,0x81,0x3f,0x56,0x44,0x32,0x77,0xdd,0xe9,0xfc,0xed,0x13,0xc6,0xfe, + 0xc7,0x93,0xce,0x1d,0x3c,0x58,0x10,0x87,0x49,0x14,0x83,0x5c,0x19,0x9b,0xa6,0xfe, + 0x91,0xf6,0x27,0xb2,0x22,0xe6,0x28,0x6c,0xc,0xb8,0x5d,0x7,0x4d,0x3b,0x9,0xde, + 0x80,0xc5,0xd,0x23,0xdf,0x29,0x73,0x84,0xc4,0xb9,0x28,0xa1,0x3c,0x6c,0xa,0xf1, + 0x34,0x51,0xab,0x26,0xb1,0x52,0xeb,0x49,0xe6,0x4b,0xc0,0xc6,0x27,0x41,0xcb,0x2, + 0xd4,0x7,0xf3,0xa3,0xf0,0x59,0x84,0xe8,0x9b,0xf5,0x24,0x30,0xe1,0x46,0xaf,0x87, + 0xb7,0xc5,0x0,0xf1,0xdd,0x98,0xb0,0x6b,0x9a,0x93,0xd1,0xa1,0xa3,0x30,0xb7,0x4e, + 0xdb,0xef,0x89,0x30,0xe0,0xa7,0x93,0x3f,0x58,0xab,0xd7,0xb3,0xe2,0xf2,0x10,0xaa, + 0xd5,0xc2,0x82,0x73,0x40,0x6d,0xe9,0x90,0x5b,0x55,0x42,0x76,0x7f,0xba,0x86,0x7b, + 0x3c,0xbd,0x9,0xee,0xdf,0x51,0xba,0x1d,0xe1,0xc5,0xc3,0x2b,0x4d,0xf0,0xe2,0xe9, + 0xe5,0x8,0x74,0xd9,0x86,0x2e,0x5b,0x8a,0x6c,0x65,0xb8,0xdd,0x4e,0xb3,0x84,0xe6, + 0xea,0x48,0xa6,0x2b,0x61,0x59,0xf4,0xd6,0x11,0x8,0x55,0xb8,0xc,0xf2,0x8,0x67, + 0xd3,0x11,0x51,0xc5,0x59,0x76,0xcd,0xba,0x67,0xbd,0x16,0x7d,0x25,0x66,0xbd,0xb1, + 0x93,0x29,0xf1,0x1a,0xdd,0x1d,0xb1,0xb,0x36,0xe6,0x63,0x3a,0xd3,0xbb,0x2e,0x57, + 0xfb,0x1a,0x93,0xab,0xa3,0x5b,0xb8,0x7b,0xc8,0x77,0xad,0xbd,0xf6,0x39,0x5c,0xb0, + 0xeb,0x32,0xa6,0xab,0x3e,0x34,0x35,0xf6,0xd2,0x57,0x69,0x87,0x6e,0x83,0x47,0x27, + 0xbb,0xf1,0x23,0x1,0xbf,0xb4,0xbb,0xf6,0xf1,0x2b,0x1b,0xae,0xbd,0x95,0x17,0xfb, + 0xef,0x11,0x52,0x14,0x7c,0xc3,0x3e,0xb2,0xf1,0xe8,0xd8,0x2e,0x3c,0x18,0x86,0x7b, + 0x36,0xe9,0x58,0x59,0xc,0x52,0x7,0xef,0xf3,0x70,0xd9,0xed,0xa1,0xbb,0xf4,0x7b, + 0xda,0xb6,0x91,0x99,0x78,0x1b,0x4e,0xae,0xb6,0xcf,0x52,0xd,0x1b,0x20,0x6a,0xf0, + 0x87,0xd1,0xe8,0xee,0x64,0x7d,0x66,0x5a,0xa1,0x90,0xca,0x15,0x2b,0xb4,0x4f,0xb2, + 0xb5,0x29,0x6f,0x68,0x30,0xac,0x3b,0x60,0x9f,0xfc,0x2,0x98,0xa5,0x9a,0x46,0xfc, + 0x8b,0x50,0x51,0xb9,0x5,0x58,0x7b,0x2d,0xf4,0xbf,0xee,0xe9,0x8b,0x3e,0xff,0x0, + 0x94,0xce,0x8c,0xed, }; static const unsigned char qt_resource_name[] = { - // visual + // qml + 0x0,0x3, + 0x0,0x0,0x78,0x3c, + 0x0,0x71, + 0x0,0x6d,0x0,0x6c, + // visual 0x0,0x6, 0x7,0xd0,0xab,0x7c, 0x0,0x76, @@ -1261,6 +1478,11 @@ static const unsigned char qt_resource_name[] = { 0xd,0x4e,0x7b,0x47, 0x0,0x62, 0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x63,0x0,0x68,0x0,0x2d,0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // delete.png + 0x0,0xa, + 0xc,0xad,0xf,0x7, + 0x0,0x64, + 0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x74,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, // arrowRight.png 0x0,0xe, 0xe,0xda,0xdc,0x87, @@ -1281,6 +1503,11 @@ static const unsigned char qt_resource_name[] = { 0xc,0x2f,0x5a,0x47, 0x0,0x62, 0x0,0x65,0x0,0x6c,0x0,0x6c,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // open.png + 0x0,0x8, + 0x6,0xc1,0x59,0x87, + 0x0,0x6f, + 0x0,0x70,0x0,0x65,0x0,0x6e,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, // branch-more.png 0x0,0xf, 0x6,0x16,0x91,0xe7, @@ -1291,6 +1518,11 @@ static const unsigned char qt_resource_name[] = { 0x1,0x64,0x80,0x7, 0x0,0x63, 0x0,0x68,0x0,0x65,0x0,0x63,0x0,0x6b,0x0,0x65,0x0,0x64,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // close.png + 0x0,0x9, + 0x6,0x98,0x83,0x27, + 0x0,0x63, + 0x0,0x6c,0x0,0x6f,0x0,0x73,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, // svg 0x0,0x3, 0x0,0x0,0x7a,0xc7, @@ -1311,64 +1543,93 @@ static const unsigned char qt_resource_name[] = { 0x9,0xd0,0xd2,0xc7, 0x0,0x66, 0x0,0x65,0x0,0x6d,0x0,0x61,0x0,0x2d,0x0,0x77,0x0,0x69,0x0,0x6e,0x0,0x67,0x0,0x2e,0x0,0x73,0x0,0x76,0x0,0x67, + // map.qml + 0x0,0x7, + 0x3,0x83,0x58,0xdc, + 0x0,0x6d, + 0x0,0x61,0x0,0x70,0x0,0x2e,0x0,0x71,0x0,0x6d,0x0,0x6c, }; static const unsigned char qt_resource_struct[] = { // : - 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1, + 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, // :/png - 0x0,0x0,0x0,0x12,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x8, + 0x0,0x0,0x0,0x1e,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xd, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + // :/qml + 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x9, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, // :/visual - 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3, + 0x0,0x0,0x0,0xc,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, // :/visual/res - 0x0,0x0,0x0,0x1e,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4, + 0x0,0x0,0x0,0x2a,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x5, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, // :/visual/res/svg - 0x0,0x0,0x1,0x22,0x0,0x2,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x5, + 0x0,0x0,0x1,0x76,0x0,0x2,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x6, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, // :/visual/res/svg/fema-wing.svg - 0x0,0x0,0x1,0x72,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x15,0xcd, -0x0,0x0,0x1,0x93,0xaa,0x2d,0x2b,0xfe, + 0x0,0x0,0x1,0xc6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x1c,0x1c, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x17, // :/visual/res/svg/settings.svg - 0x0,0x0,0x1,0x54,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xe,0x2c, -0x0,0x0,0x1,0x93,0xb1,0x33,0x6,0x6e, + 0x0,0x0,0x1,0xa8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x14,0x6c, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x17, // :/visual/res/svg/chevron-down.png - 0x0,0x0,0x1,0x2e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xc,0xdd, -0x0,0x0,0x1,0x93,0xaa,0x2d,0x2b,0xfe, + 0x0,0x0,0x1,0x82,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x13,0x1d, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x16, + // :/qml/res + 0x0,0x0,0x0,0x2a,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xb, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + // :/qml/map.qml + 0x0,0x0,0x1,0xe6,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x50,0x75, +0x0,0x0,0x1,0x94,0x22,0x1f,0xb5,0xe9, + // :/qml/res/qml + 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + // :/qml/res/qml/map.qml + 0x0,0x0,0x1,0xe6,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x53,0x6e, +0x0,0x0,0x1,0x94,0x22,0x1f,0xb5,0xe9, // :/png/res - 0x0,0x0,0x0,0x1e,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x9, + 0x0,0x0,0x0,0x2a,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xe, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, // :/png/res/png - 0x0,0x0,0x0,0x12,0x0,0x2,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0xa, + 0x0,0x0,0x0,0x1e,0x0,0x2,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0xf, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, // :/png/res/png/vline.png - 0x0,0x0,0x0,0xb4,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x7,0xb2, -0x0,0x0,0x1,0x93,0xcb,0x7c,0xe2,0x72, + 0x0,0x0,0x0,0xda,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xc,0x13, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x15, // :/png/res/png/checked.png - 0x0,0x0,0x1,0x6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xb,0xee, -0x0,0x0,0x1,0x93,0xcb,0xab,0xe6,0x16, + 0x0,0x0,0x1,0x42,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x11,0x31, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x14, // :/png/res/png/branch-more.png - 0x0,0x0,0x0,0xe2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xb,0x3a, -0x0,0x0,0x1,0x93,0xcb,0x93,0x3a,0x4c, + 0x0,0x0,0x1,0x1e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x10,0x7d, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x14, + // :/png/res/png/close.png + 0x0,0x0,0x1,0x5e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x12,0x20, +0x0,0x0,0x1,0x94,0x32,0x40,0x4e,0x90, + // :/png/res/png/open.png + 0x0,0x0,0x1,0x8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xf,0x9b, +0x0,0x0,0x1,0x94,0x32,0x41,0x97,0x64, // :/png/res/png/arrowLeft.png - 0x0,0x0,0x0,0x94,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x6,0x62, -0x0,0x0,0x1,0x93,0xcb,0xed,0xe4,0x54, + 0x0,0x0,0x0,0xba,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xa,0xc3, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x13, // :/png/res/png/bell.png - 0x0,0x0,0x0,0xcc,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x8,0xc7, -0x0,0x0,0x1,0x93,0xd6,0x85,0xb7,0x62, + 0x0,0x0,0x0,0xf2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xd,0x28, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x13, + // :/png/res/png/delete.png + 0x0,0x0,0x0,0x7e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x5,0x12, +0x0,0x0,0x1,0x94,0x42,0x8d,0x10,0x79, // :/png/res/png/branch-end.png - 0x0,0x0,0x0,0x50,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x2,0x20, -0x0,0x0,0x1,0x93,0xcb,0x98,0x21,0xc5, + 0x0,0x0,0x0,0x5c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x2,0x20, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x14, // :/png/res/png/arrowRight.png - 0x0,0x0,0x0,0x72,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x5,0x12, -0x0,0x0,0x1,0x93,0xcb,0xee,0xf,0x3c, + 0x0,0x0,0x0,0x98,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x9,0x73, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x13, // :/png/res/png/branch-close.png - 0x0,0x0,0x0,0x2a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, -0x0,0x0,0x1,0x93,0xcb,0x9e,0x47,0x33, + 0x0,0x0,0x0,0x36,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x13, }; @@ -1393,6 +1654,16 @@ namespace QT_NAMESPACE { bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); +#if defined(__ELF__) || defined(__APPLE__) +static inline unsigned char qResourceFeatureZlib() +{ + extern const unsigned char qt_resourceFeatureZlib; + return qt_resourceFeatureZlib; +} +#else +unsigned char qResourceFeatureZlib(); +#endif + #ifdef QT_NAMESPACE } #endif @@ -1410,6 +1681,7 @@ int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_resources)(); int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_resources)() { int version = 3; + version += QT_RCC_PREPEND_NAMESPACE(qResourceFeatureZlib()); QT_RCC_PREPEND_NAMESPACE(qUnregisterResourceData) (version, qt_resource_struct, qt_resource_name, qt_resource_data); return 1; diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/include/ui_alarmdialog.h b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/include/ui_alarmdialog.h index 03f060f..4f9a644 100644 --- a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/include/ui_alarmdialog.h +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/include/ui_alarmdialog.h @@ -10,6 +10,7 @@ #define UI_ALARMDIALOG_H #include +#include #include #include #include @@ -26,22 +27,21 @@ public: QVBoxLayout *verticalLayout; QHBoxLayout *horizontalLayout_7; QLabel *label_2; - QLabel *label; + QLabel *nameHead; QSpacerItem *horizontalSpacer; QHBoxLayout *horizontalLayout_6; - QLabel *label_3; - QHBoxLayout *horizontalLayout_4; - QLabel *label_4; + QVBoxLayout *verticalLayout_2; + QLabel *dateStart; + QLabel *dateEnd; QHBoxLayout *horizontalLayout; - QLabel *label_5; + QLabel *name; QHBoxLayout *chartLayout; QHBoxLayout *horizontalLayout_2; - QLabel *label_6; + QQuickWidget *map; QHBoxLayout *horizontalLayout_5; QSpacerItem *horizontalSpacer_2; QPushButton *cancelButton; - QPushButton *pushButton_2; - QPushButton *pushButton; + QPushButton *statisticButton; void setupUi(QWidget *alarmdialog) { @@ -54,7 +54,9 @@ public: "background: white;\n" "}")); verticalLayout = new QVBoxLayout(alarmdialog); + verticalLayout->setSpacing(0); verticalLayout->setObjectName("verticalLayout"); + verticalLayout->setContentsMargins(0, 0, 0, 0); horizontalLayout_7 = new QHBoxLayout(); horizontalLayout_7->setSpacing(20); horizontalLayout_7->setObjectName("horizontalLayout_7"); @@ -67,16 +69,16 @@ public: horizontalLayout_7->addWidget(label_2); - label = new QLabel(alarmdialog); - label->setObjectName("label"); + nameHead = new QLabel(alarmdialog); + nameHead->setObjectName("nameHead"); QSizePolicy sizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Preferred); sizePolicy.setHorizontalStretch(0); sizePolicy.setVerticalStretch(29); - sizePolicy.setHeightForWidth(label->sizePolicy().hasHeightForWidth()); - label->setSizePolicy(sizePolicy); - label->setMinimumSize(QSize(0, 29)); - label->setMaximumSize(QSize(16777215, 29)); - label->setStyleSheet(QString::fromUtf8("background: transparent;\n" + sizePolicy.setHeightForWidth(nameHead->sizePolicy().hasHeightForWidth()); + nameHead->setSizePolicy(sizePolicy); + nameHead->setMinimumSize(QSize(0, 29)); + nameHead->setMaximumSize(QSize(16777215, 29)); + nameHead->setStyleSheet(QString::fromUtf8("background: transparent;\n" "font-family: Inter;\n" "font-size: 24px;\n" "font-weight: 400;\n" @@ -85,7 +87,7 @@ public: "color: #13385F;\n" "")); - horizontalLayout_7->addWidget(label); + horizontalLayout_7->addWidget(nameHead); horizontalSpacer = new QSpacerItem(40, 29, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); @@ -97,12 +99,16 @@ public: horizontalLayout_6 = new QHBoxLayout(); horizontalLayout_6->setSpacing(0); horizontalLayout_6->setObjectName("horizontalLayout_6"); - horizontalLayout_6->setContentsMargins(25, -1, 25, 15); - label_3 = new QLabel(alarmdialog); - label_3->setObjectName("label_3"); - label_3->setMinimumSize(QSize(0, 27)); - label_3->setMaximumSize(QSize(16777215, 27)); - label_3->setStyleSheet(QString::fromUtf8("background: transparent;\n" + horizontalLayout_6->setContentsMargins(0, -1, 0, 0); + verticalLayout_2 = new QVBoxLayout(); + verticalLayout_2->setSpacing(0); + verticalLayout_2->setObjectName("verticalLayout_2"); + verticalLayout_2->setContentsMargins(25, -1, 25, 15); + dateStart = new QLabel(alarmdialog); + dateStart->setObjectName("dateStart"); + dateStart->setMinimumSize(QSize(0, 27)); + dateStart->setMaximumSize(QSize(16777215, 27)); + dateStart->setStyleSheet(QString::fromUtf8("background: transparent;\n" "font-family: Inter;\n" "font-size: 22px;\n" "font-weight: 400;\n" @@ -111,42 +117,37 @@ public: "color: #13385F;\n" "")); - horizontalLayout_6->addWidget(label_3); + verticalLayout_2->addWidget(dateStart); + + dateEnd = new QLabel(alarmdialog); + dateEnd->setObjectName("dateEnd"); + dateEnd->setMaximumSize(QSize(16777215, 27)); + dateEnd->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + verticalLayout_2->addWidget(dateEnd); + + + horizontalLayout_6->addLayout(verticalLayout_2); verticalLayout->addLayout(horizontalLayout_6); - horizontalLayout_4 = new QHBoxLayout(); - horizontalLayout_4->setSpacing(0); - horizontalLayout_4->setObjectName("horizontalLayout_4"); - horizontalLayout_4->setContentsMargins(25, -1, 25, 15); - label_4 = new QLabel(alarmdialog); - label_4->setObjectName("label_4"); - label_4->setMinimumSize(QSize(0, 27)); - label_4->setMaximumSize(QSize(16777215, 27)); - label_4->setStyleSheet(QString::fromUtf8("background: transparent;\n" -"font-family: Inter;\n" -"font-size: 22px;\n" -"font-weight: 400;\n" -"line-height: 26.63px;\n" -"text-align: left;\n" -"color: #13385F;\n" -"")); - - horizontalLayout_4->addWidget(label_4); - - - verticalLayout->addLayout(horizontalLayout_4); - horizontalLayout = new QHBoxLayout(); horizontalLayout->setSpacing(0); horizontalLayout->setObjectName("horizontalLayout"); horizontalLayout->setContentsMargins(25, -1, 25, 15); - label_5 = new QLabel(alarmdialog); - label_5->setObjectName("label_5"); - label_5->setMinimumSize(QSize(0, 27)); - label_5->setMaximumSize(QSize(16777215, 27)); - label_5->setStyleSheet(QString::fromUtf8("background: transparent;\n" + name = new QLabel(alarmdialog); + name->setObjectName("name"); + name->setMinimumSize(QSize(0, 27)); + name->setMaximumSize(QSize(16777215, 27)); + name->setStyleSheet(QString::fromUtf8("background: transparent;\n" "font-family: Inter;\n" "font-size: 22px;\n" "font-weight: 400;\n" @@ -155,7 +156,7 @@ public: "color: #13385F;\n" "")); - horizontalLayout->addWidget(label_5); + horizontalLayout->addWidget(name); verticalLayout->addLayout(horizontalLayout); @@ -171,13 +172,13 @@ public: horizontalLayout_2->setSpacing(0); horizontalLayout_2->setObjectName("horizontalLayout_2"); horizontalLayout_2->setContentsMargins(25, -1, 25, -1); - label_6 = new QLabel(alarmdialog); - label_6->setObjectName("label_6"); - label_6->setMinimumSize(QSize(710, 318)); - label_6->setMaximumSize(QSize(710, 318)); - label_6->setStyleSheet(QString::fromUtf8("background: black;")); + map = new QQuickWidget(alarmdialog); + map->setObjectName("map"); + map->setMinimumSize(QSize(710, 320)); + map->setMaximumSize(QSize(710, 320)); + map->setResizeMode(QQuickWidget::ResizeMode::SizeRootObjectToView); - horizontalLayout_2->addWidget(label_6); + horizontalLayout_2->addWidget(map); verticalLayout->addLayout(horizontalLayout_2); @@ -221,11 +222,11 @@ public: horizontalLayout_5->addWidget(cancelButton); - pushButton_2 = new QPushButton(alarmdialog); - pushButton_2->setObjectName("pushButton_2"); - pushButton_2->setMinimumSize(QSize(266, 41)); - pushButton_2->setMaximumSize(QSize(266, 41)); - pushButton_2->setStyleSheet(QString::fromUtf8("QPushButton {\n" + statisticButton = new QPushButton(alarmdialog); + statisticButton->setObjectName("statisticButton"); + statisticButton->setMinimumSize(QSize(266, 41)); + statisticButton->setMaximumSize(QSize(266, 41)); + statisticButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" " border-style: outset;\n" " border-radius: 5px;\n" " border-color: #13385F;\n" @@ -249,37 +250,7 @@ public: " border-color: #102E47;\n" "}")); - horizontalLayout_5->addWidget(pushButton_2); - - pushButton = new QPushButton(alarmdialog); - pushButton->setObjectName("pushButton"); - pushButton->setMinimumSize(QSize(117, 41)); - pushButton->setMaximumSize(QSize(117, 41)); - pushButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" -" border-style: outset;\n" -" border-radius: 5px;\n" -" border-color: #13385F;\n" -" border-width: 1px;\n" -" background-color: #13385F;\n" -" color: white;\n" -" font-family: Inter;\n" -" font-size: 22px;\n" -" font-weight: 500;\n" -" line-height: 26.63px;\n" -" text-align: center;\n" -"}\n" -"\n" -"QPushButton:hover {\n" -" background-color: #1A4A73;\n" -" border-color: #1A4A73;\n" -"}\n" -"\n" -"QPushButton:pressed {\n" -" background-color: #102E47;\n" -" border-color: #102E47;\n" -"}")); - - horizontalLayout_5->addWidget(pushButton); + horizontalLayout_5->addWidget(statisticButton); verticalLayout->addLayout(horizontalLayout_5); @@ -294,14 +265,12 @@ public: { alarmdialog->setWindowTitle(QCoreApplication::translate("alarmdialog", "Form", nullptr)); label_2->setText(QString()); - label->setText(QCoreApplication::translate("alarmdialog", "\320\235\320\260\320\267\320\262\320\260\320\275\320\270\320\265 \320\264\320\260\321\202\321\207\320\270\320\272\320\260", nullptr)); - label_3->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr)); - label_4->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr)); - label_5->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr)); - label_6->setText(QString()); + nameHead->setText(QCoreApplication::translate("alarmdialog", "\320\235\320\260\320\267\320\262\320\260\320\275\320\270\320\265 \320\264\320\260\321\202\321\207\320\270\320\272\320\260", nullptr)); + dateStart->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr)); + dateEnd->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr)); + name->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr)); cancelButton->setText(QCoreApplication::translate("alarmdialog", "\320\236\321\202\320\274\320\265\320\275\320\260", nullptr)); - pushButton_2->setText(QCoreApplication::translate("alarmdialog", "\320\237\320\265\321\200\320\265\320\271\321\202\320\270 \320\272 \321\201\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\265", nullptr)); - pushButton->setText(QCoreApplication::translate("alarmdialog", "\320\255\320\272\321\201\320\277\320\276\321\200\321\202", nullptr)); + statisticButton->setText(QCoreApplication::translate("alarmdialog", "\320\237\320\265\321\200\320\265\320\271\321\202\320\270 \320\272 \321\201\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\265", nullptr)); } // retranslateUi }; diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/include/ui_mainwindow.h b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/include/ui_mainwindow.h index b270266..5c87b6e 100644 --- a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/include/ui_mainwindow.h +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/include/ui_mainwindow.h @@ -12,12 +12,15 @@ #include #include #include +#include +#include #include #include #include #include #include #include +#include #include #include #include @@ -53,6 +56,10 @@ public: QVBoxLayout *IncidentsSearchLayout; QHBoxLayout *IncidentsSearchTextLayout; QLabel *TimeIntrval; + QPushButton *updateTreeButtonIncident; + QSpacerItem *horizontalSpacer_10; + QPushButton *searchIncidents; + QSpacerItem *horizontalSpacer_8; QHBoxLayout *horizontalLayout_6; QComboBox *timeIntervalIncedents; QLineEdit *searchIncedents; @@ -67,10 +74,10 @@ public: QVBoxLayout *paginationLayout; QWidget *titleBarIncidents; QHBoxLayout *horizontalLayout; - QLabel *label_7; QLabel *label; QLabel *label_5; QLabel *label_6; + QSpacerItem *horizontalSpacer_5; QLabel *label_8; QLabel *label_9; QScrollArea *scrollAreaIncidents; @@ -78,7 +85,26 @@ public: QVBoxLayout *scrollLayoutIncidents; QHBoxLayout *paginationBarIncedentsLayout; QWidget *statisticsTab; - QGridLayout *gridLayout_5; + QVBoxLayout *verticalLayout_4; + QHBoxLayout *horizontalLayout_3; + QLabel *label_7; + QComboBox *sensorSelectStatistic; + QSpacerItem *horizontalSpacer_11; + QHBoxLayout *chartNButtonsLayout; + QVBoxLayout *verticalLayout_8; + QHBoxLayout *horizontalLayout_5; + QPushButton *realTimeButtonStatistic; + QPushButton *archiveButtonStatistic; + QVBoxLayout *verticalLayout_12; + QLabel *label_14; + QDateTimeEdit *startSelectStatistic; + QVBoxLayout *verticalLayout_13; + QLabel *label_16; + QDateTimeEdit *endSelectStatistic; + QVBoxLayout *verticalLayout_14; + QPushButton *showStatisticButton; + QSpacerItem *verticalSpacer_2; + QWidget *pseudoChart; QWidget *journalTab; QVBoxLayout *verticalLayout_3; QVBoxLayout *JournalSearchLayout; @@ -86,6 +112,9 @@ public: QLabel *label_4; QLabel *label_3; QLabel *label_2; + QPushButton *updateTreeButtonJournal; + QSpacerItem *horizontalSpacer_9; + QPushButton *searchLogs; QSpacerItem *horizontalSpacer_6; QHBoxLayout *horizontalLayout_7; QComboBox *timeIntervalJournal; @@ -113,20 +142,87 @@ public: QVBoxLayout *scrollLayoutJournal; QHBoxLayout *paginationBarJournalLayout; QWidget *settingsTab; - QGridLayout *gridLayout_6; + QVBoxLayout *verticalLayout_15; + QPushButton *serverButtonSettings; + QWidget *widget; + QVBoxLayout *verticalLayout_16; + QScrollArea *scrollAreaServers; + QWidget *scrollAreaWidgetContents; + QVBoxLayout *scrollAreaServersLayout; + QFrame *line; + QHBoxLayout *horizontalLayout_16; + QLabel *label_17; + QLabel *label_26; + QSpacerItem *horizontalSpacer_24; + QHBoxLayout *horizontalLayout_14; + QLabel *label_18; + QLineEdit *serialLineEdit; + QSpacerItem *horizontalSpacer_25; + QLabel *label_27; + QLineEdit *adresLineEdit; + QSpacerItem *horizontalSpacer_12; + QHBoxLayout *horizontalLayout_13; + QLabel *label_19; + QLineEdit *factoryLineEdit; + QSpacerItem *horizontalSpacer_26; + QLabel *label_28; + QLineEdit *userNameLineEdit; + QSpacerItem *horizontalSpacer_13; + QHBoxLayout *horizontalLayout_12; + QLabel *label_20; + QLineEdit *exhuyantLineEdit; + QSpacerItem *horizontalSpacer_27; + QLabel *label_29; + QLineEdit *userPasswordLineEdit; + QSpacerItem *horizontalSpacer_14; + QHBoxLayout *horizontalLayout_11; + QLabel *label_21; + QLineEdit *fleetLineEdit; + QSpacerItem *horizontalSpacer_28; + QLabel *label_30; + QLineEdit *argusSerialLineEdit; + QSpacerItem *horizontalSpacer_15; + QHBoxLayout *horizontalLayout_10; + QLabel *label_22; + QLineEdit *sideLineEdit; + QSpacerItem *horizontalSpacer_21; + QLabel *label_31; + QSpacerItem *horizontalSpacer_23; + QPushButton *exportButtonSettings; + QSpacerItem *horizontalSpacer_29; + QPushButton *importButtonSettings; + QSpacerItem *horizontalSpacer_16; + QHBoxLayout *horizontalLayout_9; + QLabel *label_23; + QLineEdit *gosNumberLineEdit; + QSpacerItem *horizontalSpacer_17; + QHBoxLayout *horizontalLayout_4; + QLabel *label_24; + QLineEdit *factoryNumberLineEdit; + QSpacerItem *horizontalSpacer_18; + QHBoxLayout *horizontalLayout_18; + QLabel *label_32; + QLineEdit *groupLineEdit; + QSpacerItem *horizontalSpacer_30; + QHBoxLayout *horizontalLayout_17; + QSpacerItem *horizontalSpacer_22; + QPushButton *cancelButtonSettings; + QPushButton *saveButtonSettings; + QSpacerItem *horizontalSpacer_20; + QSpacerItem *verticalSpacer; QStatusBar *statusbar; void setupUi(QMainWindow *MainWindow) { if (MainWindow->objectName().isEmpty()) MainWindow->setObjectName("MainWindow"); - MainWindow->resize(1632, 896); + MainWindow->resize(1580, 750); QSizePolicy sizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Preferred); sizePolicy.setHorizontalStretch(0); sizePolicy.setVerticalStretch(0); sizePolicy.setHeightForWidth(MainWindow->sizePolicy().hasHeightForWidth()); MainWindow->setSizePolicy(sizePolicy); - MainWindow->setMinimumSize(QSize(1400, 750)); + MainWindow->setMinimumSize(QSize(1580, 750)); MainWindow->setMaximumSize(QSize(16777215, 16777215)); MainWindow->setBaseSize(QSize(0, 0)); MainWindow->setStyleSheet(QString::fromUtf8("")); @@ -164,7 +260,6 @@ public: " padding: 18px 0px;\n" " color: white; \n" " font-family: Inter;\n" -" font-family: Inter;\n" " font-size: 36px;\n" " font-weight: 500;\n" " line-height: 43.57px;\n" @@ -423,12 +518,13 @@ public: IncidentsSearchLayout = new QVBoxLayout(); IncidentsSearchLayout->setObjectName("IncidentsSearchLayout"); IncidentsSearchTextLayout = new QHBoxLayout(); - IncidentsSearchTextLayout->setSpacing(0); + IncidentsSearchTextLayout->setSpacing(10); IncidentsSearchTextLayout->setObjectName("IncidentsSearchTextLayout"); IncidentsSearchTextLayout->setContentsMargins(25, 25, -1, 0); TimeIntrval = new QLabel(incidentsTab); TimeIntrval->setObjectName("TimeIntrval"); - TimeIntrval->setMinimumSize(QSize(0, 60)); + TimeIntrval->setMinimumSize(QSize(488, 60)); + TimeIntrval->setMaximumSize(QSize(488, 16777215)); TimeIntrval->setStyleSheet(QString::fromUtf8("width: 488px;\n" "height: 36px;\n" "background: transparent;\n" @@ -442,6 +538,74 @@ public: IncidentsSearchTextLayout->addWidget(TimeIntrval); + updateTreeButtonIncident = new QPushButton(incidentsTab); + updateTreeButtonIncident->setObjectName("updateTreeButtonIncident"); + updateTreeButtonIncident->setMinimumSize(QSize(200, 35)); + updateTreeButtonIncident->setMaximumSize(QSize(200, 35)); + updateTreeButtonIncident->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + IncidentsSearchTextLayout->addWidget(updateTreeButtonIncident); + + horizontalSpacer_10 = new QSpacerItem(68, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + IncidentsSearchTextLayout->addItem(horizontalSpacer_10); + + searchIncidents = new QPushButton(incidentsTab); + searchIncidents->setObjectName("searchIncidents"); + searchIncidents->setMinimumSize(QSize(200, 35)); + searchIncidents->setMaximumSize(QSize(200, 35)); + searchIncidents->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + IncidentsSearchTextLayout->addWidget(searchIncidents); + + horizontalSpacer_8 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + IncidentsSearchTextLayout->addItem(horizontalSpacer_8); + IncidentsSearchLayout->addLayout(IncidentsSearchTextLayout); @@ -568,11 +732,13 @@ public: " }\n" " QTreeView::branch:has-children:!has-siblings:closed,\n" " QTreeView::branch:closed:has-children:has-siblings {\n" -" border-image: url(:/png/res/png/branch-more.png);\n" +" border-image: none;\n" +" image: url(:/png/res/png/close.png);\n" " }\n" " QTreeView::branch:open:has-children:!has-siblings,\n" " QTreeView::branch:open:has-children:has-siblings {\n" -" border-image: url(:/png/res/png/branch-more.png);\n" +" border-image: none;\n" +" image: url(:/png/res/png/open.png);\n" " }\n" "\n" "QHeaderView {\n" @@ -580,14 +746,14 @@ public: " max-height: 0px;\n" "}\n" "\n" -" QTreeWidget {\n" +" QTreeView {\n" " background: transparent;\n" " border: none;\n" -" font-family: 'Inter';\n" +" font-family: Inter;\n" " font-size: 16px;\n" -" font-weight: 500;\n" -" line-he" - "ight: 19.36px;\n" +" font-weight:" + " 500;\n" +" line-height: 19.36px;\n" " text-align: left;\n" " }\n" "\n" @@ -662,23 +828,6 @@ public: horizontalLayout->setSpacing(70); horizontalLayout->setObjectName("horizontalLayout"); horizontalLayout->setContentsMargins(25, 0, 25, 0); - label_7 = new QLabel(titleBarIncidents); - label_7->setObjectName("label_7"); - label_7->setMinimumSize(QSize(100, 30)); - label_7->setMaximumSize(QSize(230, 27)); - label_7->setStyleSheet(QString::fromUtf8("width: 488px;\n" -"height: 36px;\n" -"background: transparent;\n" -"font-family: Inter;\n" -"font-size: 22px;\n" -"font-weight: 400;\n" -"line-height: 36.31px;\n" -"text-align: left;\n" -"color: #13385F;\n" -"")); - - horizontalLayout->addWidget(label_7); - label = new QLabel(titleBarIncidents); label->setObjectName("label"); label->setMinimumSize(QSize(100, 27)); @@ -699,7 +848,7 @@ public: label_5 = new QLabel(titleBarIncidents); label_5->setObjectName("label_5"); label_5->setMinimumSize(QSize(100, 27)); - label_5->setMaximumSize(QSize(250, 27)); + label_5->setMaximumSize(QSize(350, 27)); label_5->setStyleSheet(QString::fromUtf8("width: 488px;\n" "height: 36px;\n" "background: transparent;\n" @@ -730,6 +879,10 @@ public: horizontalLayout->addWidget(label_6); + horizontalSpacer_5 = new QSpacerItem(5, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout->addItem(horizontalSpacer_5); + label_8 = new QLabel(titleBarIncidents); label_8->setObjectName("label_8"); QSizePolicy sizePolicy4(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Preferred); @@ -767,6 +920,7 @@ public: scrollAreaIncidents->setMinimumSize(QSize(1000, 0)); scrollAreaIncidents->setStyleSheet(QString::fromUtf8("QScrollArea#scrollAreaIncidents {\n" " background: transparent; \n" +" border: none;\n" "}\n" " \n" "QScrollBar:vertical { \n" @@ -797,7 +951,7 @@ public: scrollAreaIncidents->setWidgetResizable(true); scrollWidgetIncidents = new QWidget(); scrollWidgetIncidents->setObjectName("scrollWidgetIncidents"); - scrollWidgetIncidents->setGeometry(QRect(0, 0, 1284, 514)); + scrollWidgetIncidents->setGeometry(QRect(0, 0, 1232, 369)); scrollWidgetIncidents->setMinimumSize(QSize(1000, 0)); scrollWidgetIncidents->setStyleSheet(QString::fromUtf8("QWidget#scrollWidgetIncidents{\n" " background: transparent\n" @@ -836,8 +990,287 @@ public: " background-color: #ffffff; \n" " image-position: bottom right;\n" "}")); - gridLayout_5 = new QGridLayout(statisticsTab); - gridLayout_5->setObjectName("gridLayout_5"); + verticalLayout_4 = new QVBoxLayout(statisticsTab); + verticalLayout_4->setSpacing(0); + verticalLayout_4->setObjectName("verticalLayout_4"); + verticalLayout_4->setContentsMargins(0, 0, 0, 0); + horizontalLayout_3 = new QHBoxLayout(); + horizontalLayout_3->setSpacing(20); + horizontalLayout_3->setObjectName("horizontalLayout_3"); + horizontalLayout_3->setContentsMargins(30, 25, -1, 15); + label_7 = new QLabel(statisticsTab); + label_7->setObjectName("label_7"); + label_7->setMinimumSize(QSize(113, 35)); + label_7->setMaximumSize(QSize(113, 35)); + label_7->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 30px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_3->addWidget(label_7); + + sensorSelectStatistic = new QComboBox(statisticsTab); + sensorSelectStatistic->setObjectName("sensorSelectStatistic"); + sensorSelectStatistic->setMinimumSize(QSize(579, 50)); + sensorSelectStatistic->setMaximumSize(QSize(579, 50)); + sensorSelectStatistic->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n" +" border: 0px;\n" +"}\n" +"\n" +"QComboBox::down-arrow {\n" +" image: url(:/visual/res/svg/chevron-down.png);\n" +"}\n" +"\n" +"QComboBox {\n" +" border: 2px solid #DCD174;\n" +" background: transparent;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 24px;\n" +" font-weight: 400;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView {\n" +" border: 2px solid #DCD174; \n" +" background: white; \n" +" selection-color: red;\n" +" selection-background-color: blue;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item {\n" +" font-family: Inter;\n" +" font-size: 50px;\n" +" font-weight: 400;\n" +" text-align: left;\n" +" padding: 5px;\n" +" color: #13385F;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item:hover {\n" +" background-color: #13385F; \n" +" selection-color: white;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"\n" +"")); + + horizontalLayout_3->addWidget(sensorSelectStatistic); + + horizontalSpacer_11 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_3->addItem(horizontalSpacer_11); + + + verticalLayout_4->addLayout(horizontalLayout_3); + + chartNButtonsLayout = new QHBoxLayout(); + chartNButtonsLayout->setSpacing(30); + chartNButtonsLayout->setObjectName("chartNButtonsLayout"); + chartNButtonsLayout->setContentsMargins(25, -1, -1, -1); + verticalLayout_8 = new QVBoxLayout(); + verticalLayout_8->setSpacing(10); + verticalLayout_8->setObjectName("verticalLayout_8"); + horizontalLayout_5 = new QHBoxLayout(); + horizontalLayout_5->setSpacing(0); + horizontalLayout_5->setObjectName("horizontalLayout_5"); + realTimeButtonStatistic = new QPushButton(statisticsTab); + realTimeButtonStatistic->setObjectName("realTimeButtonStatistic"); + realTimeButtonStatistic->setMinimumSize(QSize(300, 0)); + realTimeButtonStatistic->setMaximumSize(QSize(300, 16777215)); + realTimeButtonStatistic->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: solid;\n" +" border-color: #d5cb7a;\n" +" border-width: 2px;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +" border-top-left-radius: 5px; \n" +" border-bottom-left-radius: 5px;\n" +"}")); + + horizontalLayout_5->addWidget(realTimeButtonStatistic); + + archiveButtonStatistic = new QPushButton(statisticsTab); + archiveButtonStatistic->setObjectName("archiveButtonStatistic"); + archiveButtonStatistic->setMinimumSize(QSize(300, 0)); + archiveButtonStatistic->setMaximumSize(QSize(300, 16777215)); + archiveButtonStatistic->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: solid;\n" +" border-color: #d5cb7a;\n" +" border-width: 2px;\n" +" background-color: #d5cb7a;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +" border-top-right-radius: 5px; \n" +" border-bottom-right-radius: 5px;\n" +"}")); + + horizontalLayout_5->addWidget(archiveButtonStatistic); + + + verticalLayout_8->addLayout(horizontalLayout_5); + + verticalLayout_12 = new QVBoxLayout(); + verticalLayout_12->setObjectName("verticalLayout_12"); + label_14 = new QLabel(statisticsTab); + label_14->setObjectName("label_14"); + label_14->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 24px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + verticalLayout_12->addWidget(label_14); + + startSelectStatistic = new QDateTimeEdit(statisticsTab); + startSelectStatistic->setObjectName("startSelectStatistic"); + startSelectStatistic->setMinimumSize(QSize(600, 60)); + startSelectStatistic->setMaximumSize(QSize(600, 60)); + startSelectStatistic->setStyleSheet(QString::fromUtf8("QDateTimeEdit {\n" +" border: 2px solid #d5cb7a;\n" +" border-radius: 5px;\n" +" font-family: Inter;\n" +" color: #a6a6a6;\n" +" font-size: 26px;\n" +" font-weight: 400;\n" +" line-height: 31.47px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QDateTimeEdit::drop-down {\n" +" border: none;\n" +" width: 0px;\n" +"}\n" +"\n" +"QDateTimeEdit::up-button, QDateTimeEdit::down-button {\n" +" border: none;\n" +" width: 0px;\n" +" height: 0px;\n" +"}")); + + verticalLayout_12->addWidget(startSelectStatistic); + + + verticalLayout_8->addLayout(verticalLayout_12); + + verticalLayout_13 = new QVBoxLayout(); + verticalLayout_13->setObjectName("verticalLayout_13"); + label_16 = new QLabel(statisticsTab); + label_16->setObjectName("label_16"); + label_16->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 24px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + verticalLayout_13->addWidget(label_16); + + endSelectStatistic = new QDateTimeEdit(statisticsTab); + endSelectStatistic->setObjectName("endSelectStatistic"); + endSelectStatistic->setMinimumSize(QSize(600, 60)); + endSelectStatistic->setMaximumSize(QSize(600, 60)); + endSelectStatistic->setStyleSheet(QString::fromUtf8("QDateTimeEdit {\n" +" border: 2px solid #d5cb7a;\n" +" border-radius: 5px;\n" +" font-family: Inter;\n" +" color: #a6a6a6;\n" +" font-size: 26px;\n" +" font-weight: 400;\n" +" line-height: 31.47px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QDateTimeEdit::drop-down {\n" +" border: none;\n" +" width: 0px;\n" +"}\n" +"\n" +"QDateTimeEdit::up-button, QDateTimeEdit::down-button {\n" +" border: none;\n" +" width: 0px;\n" +" height: 0px;\n" +"}")); + + verticalLayout_13->addWidget(endSelectStatistic); + + + verticalLayout_8->addLayout(verticalLayout_13); + + verticalLayout_14 = new QVBoxLayout(); + verticalLayout_14->setSpacing(10); + verticalLayout_14->setObjectName("verticalLayout_14"); + showStatisticButton = new QPushButton(statisticsTab); + showStatisticButton->setObjectName("showStatisticButton"); + showStatisticButton->setMinimumSize(QSize(600, 50)); + showStatisticButton->setMaximumSize(QSize(600, 50)); + showStatisticButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + verticalLayout_14->addWidget(showStatisticButton); + + + verticalLayout_8->addLayout(verticalLayout_14); + + verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Expanding); + + verticalLayout_8->addItem(verticalSpacer_2); + + + chartNButtonsLayout->addLayout(verticalLayout_8); + + pseudoChart = new QWidget(statisticsTab); + pseudoChart->setObjectName("pseudoChart"); + sizePolicy2.setHeightForWidth(pseudoChart->sizePolicy().hasHeightForWidth()); + pseudoChart->setSizePolicy(sizePolicy2); + + chartNButtonsLayout->addWidget(pseudoChart); + + + verticalLayout_4->addLayout(chartNButtonsLayout); + tabWidget->addTab(statisticsTab, QString()); journalTab = new QWidget(); journalTab->setObjectName("journalTab"); @@ -916,6 +1349,70 @@ public: horizontalLayout_8->addWidget(label_2); + updateTreeButtonJournal = new QPushButton(journalTab); + updateTreeButtonJournal->setObjectName("updateTreeButtonJournal"); + updateTreeButtonJournal->setMinimumSize(QSize(200, 35)); + updateTreeButtonJournal->setMaximumSize(QSize(200, 35)); + updateTreeButtonJournal->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + horizontalLayout_8->addWidget(updateTreeButtonJournal); + + horizontalSpacer_9 = new QSpacerItem(58, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_8->addItem(horizontalSpacer_9); + + searchLogs = new QPushButton(journalTab); + searchLogs->setObjectName("searchLogs"); + searchLogs->setMinimumSize(QSize(200, 35)); + searchLogs->setMaximumSize(QSize(200, 35)); + searchLogs->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + horizontalLayout_8->addWidget(searchLogs); + horizontalSpacer_6 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); horizontalLayout_8->addItem(horizontalSpacer_6); @@ -1155,11 +1652,13 @@ public: " }\n" " QTreeView::branch:has-children:!has-siblings:closed,\n" " QTreeView::branch:closed:has-children:has-siblings {\n" -" border-image: url(:/png/res/png/branch-more.png);\n" +" border-image: none;\n" +" image: url(:/png/res/png/close.png);\n" " }\n" " QTreeView::branch:open:has-children:!has-siblings,\n" " QTreeView::branch:open:has-children:has-siblings {\n" -" border-image: url(:/png/res/png/branch-more.png);\n" +" border-image: none;\n" +" image: url(:/png/res/png/open.png);\n" " }\n" "\n" "QHeaderView {\n" @@ -1167,14 +1666,14 @@ public: " max-height: 0px;\n" "}\n" "\n" -" QTreeWidget {\n" +" QTreeView {\n" " background: transparent;\n" " border: none;\n" -" font-family: 'Inter';\n" +" font-family: Inter;\n" " font-size: 16px;\n" -" font-weight: 500;\n" -" line-he" - "ight: 19.36px;\n" +" font-weight:" + " 500;\n" +" line-height: 19.36px;\n" " text-align: left;\n" " }\n" "\n" @@ -1306,7 +1805,7 @@ public: label_12 = new QLabel(titleBarJournal); label_12->setObjectName("label_12"); - label_12->setMinimumSize(QSize(100, 27)); + label_12->setMinimumSize(QSize(150, 27)); label_12->setMaximumSize(QSize(100, 27)); label_12->setStyleSheet(QString::fromUtf8("width: 488px;\n" "height: 36px;\n" @@ -1323,7 +1822,7 @@ public: label_11 = new QLabel(titleBarJournal); label_11->setObjectName("label_11"); - label_11->setMinimumSize(QSize(100, 27)); + label_11->setMinimumSize(QSize(150, 27)); label_11->setMaximumSize(QSize(120, 27)); label_11->setStyleSheet(QString::fromUtf8("width: 488px;\n" "height: 36px;\n" @@ -1345,6 +1844,7 @@ public: scrollAreaJournal->setObjectName("scrollAreaJournal"); scrollAreaJournal->setStyleSheet(QString::fromUtf8("QScrollArea#scrollAreaJournal {\n" " background: transparent; \n" +" border: none;\n" "}\n" " \n" "QScrollBar:vertical { \n" @@ -1375,7 +1875,7 @@ public: scrollAreaJournal->setWidgetResizable(true); scrollWidgetJournal = new QWidget(); scrollWidgetJournal->setObjectName("scrollWidgetJournal"); - scrollWidgetJournal->setGeometry(QRect(0, 0, 1290, 520)); + scrollWidgetJournal->setGeometry(QRect(0, 0, 1238, 375)); scrollWidgetJournal->setStyleSheet(QString::fromUtf8("QWidget#scrollWidgetJournal{\n" " background: transparent\n" "}")); @@ -1412,8 +1912,792 @@ public: " background-color: #ffffff; \n" " image-position: bottom right;\n" "}")); - gridLayout_6 = new QGridLayout(settingsTab); - gridLayout_6->setObjectName("gridLayout_6"); + verticalLayout_15 = new QVBoxLayout(settingsTab); + verticalLayout_15->setSpacing(0); + verticalLayout_15->setObjectName("verticalLayout_15"); + verticalLayout_15->setContentsMargins(25, 30, 0, 0); + serverButtonSettings = new QPushButton(settingsTab); + serverButtonSettings->setObjectName("serverButtonSettings"); + serverButtonSettings->setMinimumSize(QSize(600, 40)); + serverButtonSettings->setMaximumSize(QSize(600, 40)); + serverButtonSettings->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #e0f2f7;\n" +" border-color: #1A4A73;\n" +" color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +" color: white; \n" +"}")); + + verticalLayout_15->addWidget(serverButtonSettings); + + widget = new QWidget(settingsTab); + widget->setObjectName("widget"); + QSizePolicy sizePolicy6(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Fixed); + sizePolicy6.setHorizontalStretch(0); + sizePolicy6.setVerticalStretch(0); + sizePolicy6.setHeightForWidth(widget->sizePolicy().hasHeightForWidth()); + widget->setSizePolicy(sizePolicy6); + widget->setMinimumSize(QSize(600, 80)); + widget->setMaximumSize(QSize(600, 16777215)); + verticalLayout_16 = new QVBoxLayout(widget); + verticalLayout_16->setObjectName("verticalLayout_16"); + scrollAreaServers = new QScrollArea(widget); + scrollAreaServers->setObjectName("scrollAreaServers"); + scrollAreaServers->setStyleSheet(QString::fromUtf8("QScrollArea#scrollAreaServers {\n" +" background: transparent; \n" +" border: none;\n" +"}\n" +" \n" +"QScrollBar:vertical { \n" +" background: #ebebeb; width: 10px; border-radius: 5px; \n" +"}\n" +" \n" +"QScrollBar::handle:vertical { \n" +" background: #6d6d6d; \n" +" border-radius: 5px; \n" +" min-height: 20px; \n" +"}\n" +" \n" +"QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { \n" +" border: none; \n" +" background: none; \n" +" color: none; \n" +"} \n" +"\n" +"QScrollBar::sub-line:vertical, QScrollBar::add-line:vertical { \n" +" background: transparent; \n" +" border: none; \n" +"} \n" +"\n" +"QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { \n" +" background: transparent; \n" +"}\n" +"")); + scrollAreaServers->setWidgetResizable(true); + scrollAreaWidgetContents = new QWidget(); + scrollAreaWidgetContents->setObjectName("scrollAreaWidgetContents"); + scrollAreaWidgetContents->setGeometry(QRect(0, 0, 582, 62)); + scrollAreaWidgetContents->setStyleSheet(QString::fromUtf8("background: transparent; ")); + scrollAreaServersLayout = new QVBoxLayout(scrollAreaWidgetContents); + scrollAreaServersLayout->setSpacing(5); + scrollAreaServersLayout->setObjectName("scrollAreaServersLayout"); + scrollAreaServersLayout->setContentsMargins(0, 0, 0, 0); + scrollAreaServers->setWidget(scrollAreaWidgetContents); + + verticalLayout_16->addWidget(scrollAreaServers); + + + verticalLayout_15->addWidget(widget); + + line = new QFrame(settingsTab); + line->setObjectName("line"); + line->setMinimumSize(QSize(1250, 0)); + line->setMaximumSize(QSize(922, 16777215)); + line->setFrameShape(QFrame::Shape::HLine); + line->setFrameShadow(QFrame::Shadow::Sunken); + + verticalLayout_15->addWidget(line); + + horizontalLayout_16 = new QHBoxLayout(); + horizontalLayout_16->setSpacing(50); + horizontalLayout_16->setObjectName("horizontalLayout_16"); + label_17 = new QLabel(settingsTab); + label_17->setObjectName("label_17"); + label_17->setMinimumSize(QSize(600, 40)); + label_17->setMaximumSize(QSize(520, 40)); + label_17->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 30px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_16->addWidget(label_17); + + label_26 = new QLabel(settingsTab); + label_26->setObjectName("label_26"); + QSizePolicy sizePolicy7(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Preferred); + sizePolicy7.setHorizontalStretch(0); + sizePolicy7.setVerticalStretch(40); + sizePolicy7.setHeightForWidth(label_26->sizePolicy().hasHeightForWidth()); + label_26->setSizePolicy(sizePolicy7); + label_26->setMinimumSize(QSize(520, 40)); + label_26->setMaximumSize(QSize(520, 40)); + label_26->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 30px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_16->addWidget(label_26); + + horizontalSpacer_24 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_16->addItem(horizontalSpacer_24); + + + verticalLayout_15->addLayout(horizontalLayout_16); + + horizontalLayout_14 = new QHBoxLayout(); + horizontalLayout_14->setObjectName("horizontalLayout_14"); + horizontalLayout_14->setContentsMargins(-1, 10, -1, 10); + label_18 = new QLabel(settingsTab); + label_18->setObjectName("label_18"); + label_18->setMinimumSize(QSize(200, 0)); + label_18->setMaximumSize(QSize(200, 16777215)); + label_18->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_14->addWidget(label_18); + + serialLineEdit = new QLineEdit(settingsTab); + serialLineEdit->setObjectName("serialLineEdit"); + serialLineEdit->setMinimumSize(QSize(394, 0)); + serialLineEdit->setMaximumSize(QSize(394, 16777215)); + serialLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_14->addWidget(serialLineEdit); + + horizontalSpacer_25 = new QSpacerItem(38, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_14->addItem(horizontalSpacer_25); + + label_27 = new QLabel(settingsTab); + label_27->setObjectName("label_27"); + label_27->setMinimumSize(QSize(200, 0)); + label_27->setMaximumSize(QSize(200, 16777215)); + label_27->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_14->addWidget(label_27); + + adresLineEdit = new QLineEdit(settingsTab); + adresLineEdit->setObjectName("adresLineEdit"); + adresLineEdit->setMinimumSize(QSize(394, 0)); + adresLineEdit->setMaximumSize(QSize(394, 16777215)); + adresLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_14->addWidget(adresLineEdit); + + horizontalSpacer_12 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_14->addItem(horizontalSpacer_12); + + + verticalLayout_15->addLayout(horizontalLayout_14); + + horizontalLayout_13 = new QHBoxLayout(); + horizontalLayout_13->setObjectName("horizontalLayout_13"); + horizontalLayout_13->setContentsMargins(-1, -1, -1, 10); + label_19 = new QLabel(settingsTab); + label_19->setObjectName("label_19"); + label_19->setMinimumSize(QSize(200, 0)); + label_19->setMaximumSize(QSize(200, 16777215)); + label_19->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_13->addWidget(label_19); + + factoryLineEdit = new QLineEdit(settingsTab); + factoryLineEdit->setObjectName("factoryLineEdit"); + factoryLineEdit->setMinimumSize(QSize(394, 0)); + factoryLineEdit->setMaximumSize(QSize(394, 16777215)); + factoryLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_13->addWidget(factoryLineEdit); + + horizontalSpacer_26 = new QSpacerItem(38, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_13->addItem(horizontalSpacer_26); + + label_28 = new QLabel(settingsTab); + label_28->setObjectName("label_28"); + label_28->setMinimumSize(QSize(200, 0)); + label_28->setMaximumSize(QSize(200, 16777215)); + label_28->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_13->addWidget(label_28); + + userNameLineEdit = new QLineEdit(settingsTab); + userNameLineEdit->setObjectName("userNameLineEdit"); + userNameLineEdit->setMinimumSize(QSize(394, 0)); + userNameLineEdit->setMaximumSize(QSize(394, 16777215)); + userNameLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_13->addWidget(userNameLineEdit); + + horizontalSpacer_13 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_13->addItem(horizontalSpacer_13); + + + verticalLayout_15->addLayout(horizontalLayout_13); + + horizontalLayout_12 = new QHBoxLayout(); + horizontalLayout_12->setObjectName("horizontalLayout_12"); + horizontalLayout_12->setContentsMargins(-1, -1, -1, 10); + label_20 = new QLabel(settingsTab); + label_20->setObjectName("label_20"); + label_20->setMinimumSize(QSize(200, 0)); + label_20->setMaximumSize(QSize(200, 16777215)); + label_20->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_12->addWidget(label_20); + + exhuyantLineEdit = new QLineEdit(settingsTab); + exhuyantLineEdit->setObjectName("exhuyantLineEdit"); + exhuyantLineEdit->setMinimumSize(QSize(394, 0)); + exhuyantLineEdit->setMaximumSize(QSize(394, 16777215)); + exhuyantLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_12->addWidget(exhuyantLineEdit); + + horizontalSpacer_27 = new QSpacerItem(38, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_12->addItem(horizontalSpacer_27); + + label_29 = new QLabel(settingsTab); + label_29->setObjectName("label_29"); + label_29->setMinimumSize(QSize(200, 0)); + label_29->setMaximumSize(QSize(200, 16777215)); + label_29->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_12->addWidget(label_29); + + userPasswordLineEdit = new QLineEdit(settingsTab); + userPasswordLineEdit->setObjectName("userPasswordLineEdit"); + userPasswordLineEdit->setMinimumSize(QSize(394, 0)); + userPasswordLineEdit->setMaximumSize(QSize(394, 16777215)); + userPasswordLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_12->addWidget(userPasswordLineEdit); + + horizontalSpacer_14 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_12->addItem(horizontalSpacer_14); + + + verticalLayout_15->addLayout(horizontalLayout_12); + + horizontalLayout_11 = new QHBoxLayout(); + horizontalLayout_11->setObjectName("horizontalLayout_11"); + horizontalLayout_11->setContentsMargins(-1, -1, -1, 10); + label_21 = new QLabel(settingsTab); + label_21->setObjectName("label_21"); + label_21->setMinimumSize(QSize(200, 0)); + label_21->setMaximumSize(QSize(200, 16777215)); + label_21->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_11->addWidget(label_21); + + fleetLineEdit = new QLineEdit(settingsTab); + fleetLineEdit->setObjectName("fleetLineEdit"); + fleetLineEdit->setMinimumSize(QSize(394, 0)); + fleetLineEdit->setMaximumSize(QSize(394, 16777215)); + fleetLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_11->addWidget(fleetLineEdit); + + horizontalSpacer_28 = new QSpacerItem(38, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_11->addItem(horizontalSpacer_28); + + label_30 = new QLabel(settingsTab); + label_30->setObjectName("label_30"); + label_30->setMinimumSize(QSize(200, 0)); + label_30->setMaximumSize(QSize(200, 16777215)); + label_30->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_11->addWidget(label_30); + + argusSerialLineEdit = new QLineEdit(settingsTab); + argusSerialLineEdit->setObjectName("argusSerialLineEdit"); + argusSerialLineEdit->setMinimumSize(QSize(394, 0)); + argusSerialLineEdit->setMaximumSize(QSize(394, 16777215)); + argusSerialLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_11->addWidget(argusSerialLineEdit); + + horizontalSpacer_15 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_11->addItem(horizontalSpacer_15); + + + verticalLayout_15->addLayout(horizontalLayout_11); + + horizontalLayout_10 = new QHBoxLayout(); + horizontalLayout_10->setObjectName("horizontalLayout_10"); + horizontalLayout_10->setContentsMargins(-1, -1, -1, 10); + label_22 = new QLabel(settingsTab); + label_22->setObjectName("label_22"); + label_22->setMinimumSize(QSize(200, 0)); + label_22->setMaximumSize(QSize(200, 16777215)); + label_22->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_10->addWidget(label_22); + + sideLineEdit = new QLineEdit(settingsTab); + sideLineEdit->setObjectName("sideLineEdit"); + sideLineEdit->setMinimumSize(QSize(394, 0)); + sideLineEdit->setMaximumSize(QSize(394, 16777215)); + sideLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_10->addWidget(sideLineEdit); + + horizontalSpacer_21 = new QSpacerItem(38, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_10->addItem(horizontalSpacer_21); + + label_31 = new QLabel(settingsTab); + label_31->setObjectName("label_31"); + label_31->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 30px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_10->addWidget(label_31); + + horizontalSpacer_23 = new QSpacerItem(3, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_10->addItem(horizontalSpacer_23); + + exportButtonSettings = new QPushButton(settingsTab); + exportButtonSettings->setObjectName("exportButtonSettings"); + exportButtonSettings->setMinimumSize(QSize(235, 40)); + exportButtonSettings->setMaximumSize(QSize(235, 40)); + exportButtonSettings->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #e0f2f7;\n" +" border-color: #1A4A73;\n" +" color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +" color: white; \n" +"}")); + + horizontalLayout_10->addWidget(exportButtonSettings); + + horizontalSpacer_29 = new QSpacerItem(3, 0, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_10->addItem(horizontalSpacer_29); + + importButtonSettings = new QPushButton(settingsTab); + importButtonSettings->setObjectName("importButtonSettings"); + importButtonSettings->setMinimumSize(QSize(235, 40)); + importButtonSettings->setMaximumSize(QSize(235, 40)); + importButtonSettings->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + horizontalLayout_10->addWidget(importButtonSettings); + + horizontalSpacer_16 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_10->addItem(horizontalSpacer_16); + + + verticalLayout_15->addLayout(horizontalLayout_10); + + horizontalLayout_9 = new QHBoxLayout(); + horizontalLayout_9->setObjectName("horizontalLayout_9"); + horizontalLayout_9->setContentsMargins(-1, -1, -1, 10); + label_23 = new QLabel(settingsTab); + label_23->setObjectName("label_23"); + label_23->setMinimumSize(QSize(200, 0)); + label_23->setMaximumSize(QSize(200, 16777215)); + label_23->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_9->addWidget(label_23); + + gosNumberLineEdit = new QLineEdit(settingsTab); + gosNumberLineEdit->setObjectName("gosNumberLineEdit"); + gosNumberLineEdit->setMinimumSize(QSize(394, 0)); + gosNumberLineEdit->setMaximumSize(QSize(394, 16777215)); + gosNumberLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_9->addWidget(gosNumberLineEdit); + + horizontalSpacer_17 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_9->addItem(horizontalSpacer_17); + + + verticalLayout_15->addLayout(horizontalLayout_9); + + horizontalLayout_4 = new QHBoxLayout(); + horizontalLayout_4->setObjectName("horizontalLayout_4"); + horizontalLayout_4->setContentsMargins(-1, -1, -1, 10); + label_24 = new QLabel(settingsTab); + label_24->setObjectName("label_24"); + label_24->setMinimumSize(QSize(200, 0)); + label_24->setMaximumSize(QSize(200, 16777215)); + label_24->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_4->addWidget(label_24); + + factoryNumberLineEdit = new QLineEdit(settingsTab); + factoryNumberLineEdit->setObjectName("factoryNumberLineEdit"); + factoryNumberLineEdit->setMinimumSize(QSize(394, 0)); + factoryNumberLineEdit->setMaximumSize(QSize(394, 16777215)); + factoryNumberLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_4->addWidget(factoryNumberLineEdit); + + horizontalSpacer_18 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_4->addItem(horizontalSpacer_18); + + + verticalLayout_15->addLayout(horizontalLayout_4); + + horizontalLayout_18 = new QHBoxLayout(); + horizontalLayout_18->setObjectName("horizontalLayout_18"); + horizontalLayout_18->setContentsMargins(-1, -1, -1, 10); + label_32 = new QLabel(settingsTab); + label_32->setObjectName("label_32"); + label_32->setMinimumSize(QSize(200, 0)); + label_32->setMaximumSize(QSize(200, 16777215)); + label_32->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_18->addWidget(label_32); + + groupLineEdit = new QLineEdit(settingsTab); + groupLineEdit->setObjectName("groupLineEdit"); + groupLineEdit->setMinimumSize(QSize(394, 0)); + groupLineEdit->setMaximumSize(QSize(394, 16777215)); + groupLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_18->addWidget(groupLineEdit); + + horizontalSpacer_30 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_18->addItem(horizontalSpacer_30); + + + verticalLayout_15->addLayout(horizontalLayout_18); + + horizontalLayout_17 = new QHBoxLayout(); + horizontalLayout_17->setSpacing(15); + horizontalLayout_17->setObjectName("horizontalLayout_17"); + horizontalLayout_17->setContentsMargins(-1, -1, -1, 10); + horizontalSpacer_22 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_17->addItem(horizontalSpacer_22); + + cancelButtonSettings = new QPushButton(settingsTab); + cancelButtonSettings->setObjectName("cancelButtonSettings"); + cancelButtonSettings->setMinimumSize(QSize(235, 40)); + cancelButtonSettings->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #e0f2f7;\n" +" border-color: #1A4A73;\n" +" color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +" color: white; \n" +"}")); + + horizontalLayout_17->addWidget(cancelButtonSettings); + + saveButtonSettings = new QPushButton(settingsTab); + saveButtonSettings->setObjectName("saveButtonSettings"); + saveButtonSettings->setMinimumSize(QSize(235, 40)); + saveButtonSettings->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + horizontalLayout_17->addWidget(saveButtonSettings); + + horizontalSpacer_20 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_17->addItem(horizontalSpacer_20); + + + verticalLayout_15->addLayout(horizontalLayout_17); + + verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Expanding); + + verticalLayout_15->addItem(verticalSpacer); + tabWidget->addTab(settingsTab, QString()); gridLayout_4->addWidget(tabWidget, 0, 0, 1, 1); @@ -1425,7 +2709,7 @@ public: retranslateUi(MainWindow); - tabWidget->setCurrentIndex(0); + tabWidget->setCurrentIndex(4); QMetaObject::connectSlotsByName(MainWindow); @@ -1440,18 +2724,27 @@ public: search->setPlaceholderText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\270\321\201\320\272...", nullptr)); tabWidget->setTabText(tabWidget->indexOf(sensorsTab), QCoreApplication::translate("MainWindow", "\320\224\320\260\321\202\321\207\320\270\320\272\320\270", nullptr)); TimeIntrval->setText(QCoreApplication::translate("MainWindow", "\320\222\321\200\320\265\320\274\320\265\320\275\320\275\320\276\320\271 \320\277\321\200\320\276\320\274\320\265\320\266\321\203\321\202\320\276\320\272:", nullptr)); + updateTreeButtonIncident->setText(QCoreApplication::translate("MainWindow", "\320\236\320\261\320\275\320\276\320\262\320\270\321\202\321\214 \320\264\320\265\321\200\320\265\320\262\320\276", nullptr)); + searchIncidents->setText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\270\321\201\320\272", nullptr)); searchIncedents->setPlaceholderText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\270\321\201\320\272...", nullptr)); - label_7->setText(QCoreApplication::translate("MainWindow", "\320\242\320\241", nullptr)); label->setText(QCoreApplication::translate("MainWindow", "\320\223\321\200\321\203\320\277\320\277\320\260", nullptr)); label_5->setText(QCoreApplication::translate("MainWindow", "\320\224\320\260\321\202\321\207\320\270\320\272", nullptr)); label_6->setText(QCoreApplication::translate("MainWindow", "\320\224\320\260\321\202\320\260", nullptr)); label_8->setText(QCoreApplication::translate("MainWindow", "\320\222\321\200\320\265\320\274\321\217", nullptr)); label_9->setText(QString()); tabWidget->setTabText(tabWidget->indexOf(incidentsTab), QCoreApplication::translate("MainWindow", "\320\230\320\275\321\206\320\270\320\264\320\265\320\275\321\202\321\213", nullptr)); + label_7->setText(QCoreApplication::translate("MainWindow", "\320\224\320\260\321\202\321\207\320\270\320\272:", nullptr)); + realTimeButtonStatistic->setText(QCoreApplication::translate("MainWindow", "\320\222 \321\200\320\265\320\260\320\273\321\214\320\275\320\276\320\274 \320\262\321\200\320\265\320\274\320\265\320\275\320\270", nullptr)); + archiveButtonStatistic->setText(QCoreApplication::translate("MainWindow", "\320\230\320\267 \320\260\321\200\321\205\320\270\320\262\320\260", nullptr)); + label_14->setText(QCoreApplication::translate("MainWindow", "\320\235\320\260\321\207\320\260\320\273\320\276 \320\277\321\200\320\276\320\274\320\265\320\266\321\203\321\202\320\272\320\260:", nullptr)); + label_16->setText(QCoreApplication::translate("MainWindow", "\320\232\320\276\320\275\320\265\321\206 \320\277\321\200\320\276\320\274\320\265\320\266\321\203\321\202\320\272\320\260:", nullptr)); + showStatisticButton->setText(QCoreApplication::translate("MainWindow", "\320\236\321\202\320\276\320\261\321\200\320\260\320\267\320\270\321\202\321\214 \320\264\320\260\320\275\320\275\321\213\320\265", nullptr)); tabWidget->setTabText(tabWidget->indexOf(statisticsTab), QCoreApplication::translate("MainWindow", "\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260", nullptr)); label_4->setText(QCoreApplication::translate("MainWindow", "\320\222\321\200\320\265\320\274\320\265\320\275\320\275\320\276\320\271 \320\277\321\200\320\276\320\274\320\265\320\266\321\203\321\202\320\276\320\272:", nullptr)); label_3->setText(QCoreApplication::translate("MainWindow", "\320\241\321\202\320\260\321\202\321\203\321\201:", nullptr)); label_2->setText(QCoreApplication::translate("MainWindow", "\320\241\320\276\321\200\321\202\320\270\321\200\320\276\320\262\320\272\320\260", nullptr)); + updateTreeButtonJournal->setText(QCoreApplication::translate("MainWindow", "\320\236\320\261\320\275\320\276\320\262\320\270\321\202\321\214 \320\264\320\265\321\200\320\265\320\262\320\276", nullptr)); + searchLogs->setText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\270\321\201\320\272", nullptr)); searchJournal->setPlaceholderText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\270\321\201\320\272...", nullptr)); label_10->setText(QCoreApplication::translate("MainWindow", "\320\222\321\200\320\265\320\274\321\217", nullptr)); label_15->setText(QCoreApplication::translate("MainWindow", "\320\233\320\276\320\263", nullptr)); @@ -1459,6 +2752,26 @@ public: label_12->setText(QCoreApplication::translate("MainWindow", "\320\240\320\260\320\267\320\264\320\265\320\273", nullptr)); label_11->setText(QCoreApplication::translate("MainWindow", "\320\241\321\202\320\260\321\202\321\203\321\201", nullptr)); tabWidget->setTabText(tabWidget->indexOf(journalTab), QCoreApplication::translate("MainWindow", "\320\226\321\203\321\200\320\275\320\260\320\273", nullptr)); + serverButtonSettings->setText(QCoreApplication::translate("MainWindow", "\320\224\320\276\320\261\320\260\320\262\320\270\321\202\321\214 \321\201\320\265\321\200\320\262\320\265\321\200", nullptr)); + label_17->setText(QCoreApplication::translate("MainWindow", "\320\241\320\265\321\200\320\262\320\265\321\200\321\213", nullptr)); + label_26->setText(QCoreApplication::translate("MainWindow", "\320\220\321\200\320\263\321\203\321\201", nullptr)); + label_18->setText(QCoreApplication::translate("MainWindow", "\320\241\320\265\321\200\320\270\320\271\320\275\321\213\320\271 \320\275\320\276\320\274\320\265\321\200", nullptr)); + label_27->setText(QCoreApplication::translate("MainWindow", "\320\220\320\264\321\200\320\265\321\201 \321\201\320\265\321\200\320\262\320\265\321\200\320\260", nullptr)); + label_19->setText(QCoreApplication::translate("MainWindow", "\320\227\320\260\320\262\320\276\320\264 \320\270\320\267\320\263\320\276\321\202\320\276\320\262\320\270\321\202\320\265\320\273\321\214", nullptr)); + label_28->setText(QCoreApplication::translate("MainWindow", "\320\230\320\274\321\217 \320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217", nullptr)); + label_20->setText(QCoreApplication::translate("MainWindow", "\320\255\320\272\321\201\320\277\320\273\321\203\320\260\321\202\320\260\320\275\321\202", nullptr)); + label_29->setText(QCoreApplication::translate("MainWindow", "\320\237\320\260\321\200\320\276\320\273\321\214 \320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217", nullptr)); + label_21->setText(QCoreApplication::translate("MainWindow", "\320\242\321\200\320\260\320\275\321\201\320\277\320\276\321\200\321\202\320\275\321\213\320\271 \320\277\320\260\321\200\320\272", nullptr)); + label_30->setText(QCoreApplication::translate("MainWindow", "\320\241\320\265\321\200\320\270\320\271\320\275\321\213\320\271 \320\275\320\276\320\274\320\265\321\200", nullptr)); + label_22->setText(QCoreApplication::translate("MainWindow", "\320\221\320\276\321\200\321\202\320\276\320\262\320\276\320\271 \320\275\320\276\320\274\320\265\321\200", nullptr)); + label_31->setText(QCoreApplication::translate("MainWindow", "\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\217", nullptr)); + exportButtonSettings->setText(QCoreApplication::translate("MainWindow", "\320\255\320\272\321\201\320\277\320\276\321\200\321\202", nullptr)); + importButtonSettings->setText(QCoreApplication::translate("MainWindow", "\320\230\320\274\320\277\320\276\321\200\321\202", nullptr)); + label_23->setText(QCoreApplication::translate("MainWindow", "\320\223\320\276\321\201.\320\275\320\276\320\274\320\265\321\200", nullptr)); + label_24->setText(QCoreApplication::translate("MainWindow", "\320\227\320\260\320\262\320\276\320\264\321\201\320\272\320\276\320\271 \320\275\320\276\320\274\320\265\321\200", nullptr)); + label_32->setText(QCoreApplication::translate("MainWindow", "\320\223\321\200\321\203\320\277\320\277\320\260", nullptr)); + cancelButtonSettings->setText(QCoreApplication::translate("MainWindow", "\320\236\321\202\320\274\320\265\320\275\320\260", nullptr)); + saveButtonSettings->setText(QCoreApplication::translate("MainWindow", "\320\241\320\276\321\205\321\200\320\260\320\275\320\270\321\202\321\214", nullptr)); tabWidget->setTabText(tabWidget->indexOf(settingsTab), QCoreApplication::translate("MainWindow", "\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270", nullptr)); } // retranslateUi diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/mocs_compilation.cpp b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/mocs_compilation.cpp index cde50c2..d7328ca 100644 --- a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/mocs_compilation.cpp +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug/FemaSoftware_autogen/mocs_compilation.cpp @@ -2,14 +2,18 @@ #include "EWIEGA46WW/moc_alarmdialog.cpp" #include "EWIEGA46WW/moc_alarmsservice.cpp" #include "EWIEGA46WW/moc_alarmwidget.cpp" +#include "EWIEGA46WW/moc_apiform.cpp" #include "EWIEGA46WW/moc_httpclient.cpp" #include "EWIEGA46WW/moc_incedentwidget.cpp" #include "EWIEGA46WW/moc_journalservice.cpp" +#include "EWIEGA46WW/moc_logwidget.cpp" #include "EWIEGA46WW/moc_mainwindow.cpp" #include "EWIEGA46WW/moc_paginationbar.cpp" +#include "EWIEGA46WW/moc_plotservice.cpp" #include "EWIEGA46WW/moc_qcustomplot.cpp" #include "EWIEGA46WW/moc_savesensorservice.cpp" #include "EWIEGA46WW/moc_sensordialog.cpp" #include "EWIEGA46WW/moc_sensorlogervice.cpp" #include "EWIEGA46WW/moc_sensorservice.cpp" #include "EWIEGA46WW/moc_sensorwidget.cpp" +#include "EWIEGA46WW/moc_serverwidget.cpp" diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release.zip b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release.zip deleted file mode 100644 index 49c3bee..0000000 Binary files a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release.zip and /dev/null differ diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/.qt/qml_imports/FemaSoftware_conf.cmake b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/.qt/qml_imports/FemaSoftware_conf.cmake new file mode 100644 index 0000000..c891cb1 --- /dev/null +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/.qt/qml_imports/FemaSoftware_conf.cmake @@ -0,0 +1,10 @@ +set(qml_import_scanner_imports_count 8) +set(qml_import_scanner_import_0 "CLASSNAME;QtQuick2Plugin;LINKTARGET;Qt6::qtquick2plugin;NAME;QtQuick;PATH;E:/qt/6.8.1/mingw_64/qml/QtQuick;PLUGIN;qtquick2plugin;PLUGINISOPTIONAL;;PREFER;:/qt-project.org/imports/QtQuick/;RELATIVEPATH;QtQuick;TYPE;module;") +set(qml_import_scanner_import_1 "CLASSNAME;QtQmlPlugin;LINKTARGET;Qt6::qmlplugin;NAME;QtQml;PATH;E:/qt/6.8.1/mingw_64/qml/QtQml;PLUGIN;qmlplugin;PLUGINISOPTIONAL;;PREFER;:/qt-project.org/imports/QtQml/;RELATIVEPATH;QtQml;TYPE;module;") +set(qml_import_scanner_import_2 "NAME;QML;PATH;E:/qt/6.8.1/mingw_64/qml/QML;PREFER;:/qt-project.org/imports/QML/;RELATIVEPATH;QML;TYPE;module;") +set(qml_import_scanner_import_3 "CLASSNAME;QtQmlModelsPlugin;LINKTARGET;Qt6::modelsplugin;NAME;QtQml.Models;PATH;E:/qt/6.8.1/mingw_64/qml/QtQml/Models;PLUGIN;modelsplugin;PLUGINISOPTIONAL;;PREFER;:/qt-project.org/imports/QtQml/Models/;RELATIVEPATH;QtQml/Models;TYPE;module;") +set(qml_import_scanner_import_4 "CLASSNAME;QtQmlWorkerScriptPlugin;LINKTARGET;Qt6::workerscriptplugin;NAME;QtQml.WorkerScript;PATH;E:/qt/6.8.1/mingw_64/qml/QtQml/WorkerScript;PLUGIN;workerscriptplugin;PLUGINISOPTIONAL;;PREFER;:/qt-project.org/imports/QtQml/WorkerScript/;RELATIVEPATH;QtQml/WorkerScript;TYPE;module;") +set(qml_import_scanner_import_5 "CLASSNAME;QtLocationDeclarativeModule;COMPONENTS;E:/qt/6.8.1/mingw_64/qml/QtLocation/MapView.qml;LINKTARGET;Qt6::declarative_location;NAME;QtLocation;PATH;E:/qt/6.8.1/mingw_64/qml/QtLocation;PLUGIN;declarative_locationplugin;PREFER;:/qt-project.org/imports/QtLocation/;RELATIVEPATH;QtLocation;TYPE;module;") +set(qml_import_scanner_import_6 "CLASSNAME;QtPositioningDeclarativeModule;LINKTARGET;Qt6::positioningquickplugin;NAME;QtPositioning;PATH;E:/qt/6.8.1/mingw_64/qml/QtPositioning;PLUGIN;positioningquickplugin;PREFER;:/qt-project.org/imports/QtPositioning/;RELATIVEPATH;QtPositioning;TYPE;module;") +set(qml_import_scanner_import_7 "CLASSNAME;QtLabsAnimationPlugin;LINKTARGET;Qt6::labsanimationplugin;NAME;Qt.labs.animation;PATH;E:/qt/6.8.1/mingw_64/qml/Qt/labs/animation;PLUGIN;labsanimationplugin;PLUGINISOPTIONAL;;PREFER;:/qt-project.org/imports/Qt/labs/animation/;RELATIVEPATH;Qt/labs/animation;TYPE;module;") + diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/.qtc/package-manager/auto-setup.cmake b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/.qtc/package-manager/auto-setup.cmake new file mode 100644 index 0000000..867b7f4 --- /dev/null +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/.qtc/package-manager/auto-setup.cmake @@ -0,0 +1,314 @@ +# +# Internal Qt Creator variable reference +# +foreach(qtcreator_var + QT_QMAKE_EXECUTABLE CMAKE_PREFIX_PATH CMAKE_C_COMPILER CMAKE_CXX_COMPILER + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELWITHDEBINFO) + set(__just_reference_${qtcreator_var} ${${qtcreator_var}}) +endforeach() + +option(QT_CREATOR_SOURCE_GROUPS "Qt Creator source groups extensions" ON) +if (QT_CREATOR_SOURCE_GROUPS) + source_group("Resources" REGULAR_EXPRESSION "\\.(pdf|plist|png|jpeg|jpg|storyboard|xcassets|qrc|svg|gif|ico|webp)$") + source_group("Forms" REGULAR_EXPRESSION "\\.(ui)$") + source_group("State charts" REGULAR_EXPRESSION "\\.(scxml)$") +endif() + +if (EXISTS "${CMAKE_SOURCE_DIR}/QtCreatorPackageManager.cmake") + include("${CMAKE_SOURCE_DIR}/QtCreatorPackageManager.cmake") +endif() + +if (QT_CREATOR_SKIP_PACKAGE_MANAGER_SETUP) + return() +endif() +option(QT_CREATOR_SKIP_PACKAGE_MANAGER_SETUP "Skip Qt Creator's package manager auto-setup" OFF) + +# Store the C/C++ object output extension +if (CMAKE_VERSION GREATER_EQUAL "3.19") + cmake_language(DEFER CALL set CMAKE_C_OUTPUT_EXTENSION "${CMAKE_C_OUTPUT_EXTENSION}" CACHE STRING "" FORCE) + cmake_language(DEFER CALL set CMAKE_CXX_OUTPUT_EXTENSION "${CMAKE_CXX_OUTPUT_EXTENSION}" CACHE STRING "" FORCE) +endif() + +macro(qtc_auto_setup_compiler_standard toolchainFile) + foreach(lang_var C CXX CUDA OBJC OBJCXX) + foreach(prop_var STANDARD STANDARD_REQUIRED EXTENSIONS) + if (CMAKE_${lang_var}_${prop_var}) + file(APPEND "${toolchainFile}" + "set(CMAKE_${lang_var}_${prop_var} ${CMAKE_${lang_var}_${prop_var}})\n") + endif() + endforeach() + endforeach() + + # Forward important CMake variables to the package manager in the toolchain file + foreach(fwd_var CMAKE_MSVC_RUNTIME_LIBRARY CMAKE_SYSROOT CMAKE_OSX_SYSROOT CMAKE_OSX_ARCHITECTURES) + if (${fwd_var}) + file(APPEND "${toolchainFile}" + "set(${fwd_var} ${${fwd_var}})\n") + endif() + endforeach() +endmacro() + +# +# conan +# +macro(qtc_auto_setup_conan) + foreach(file conanfile.txt conanfile.py) + if (EXISTS "${CMAKE_SOURCE_DIR}/${file}") + set(conanfile_txt "${CMAKE_SOURCE_DIR}/${file}") + break() + endif() + endforeach() + + if (conanfile_txt AND NOT QT_CREATOR_SKIP_CONAN_SETUP) + option(QT_CREATOR_SKIP_CONAN_SETUP "Skip Qt Creator's conan package manager auto-setup" OFF) + set(QT_CREATOR_CONAN_BUILD_POLICY "missing" CACHE STRING "Qt Creator's conan package manager auto-setup build policy. This is used for the BUILD property of cmake_conan_run") + + set_property( + DIRECTORY "${CMAKE_SOURCE_DIR}" + APPEND + PROPERTY CMAKE_CONFIGURE_DEPENDS "${conanfile_txt}") + + find_program(conan_program conan) + if (NOT conan_program) + message(WARNING "Qt Creator: conan executable not found. " + "Package manager auto-setup will be skipped. " + "To disable this warning set QT_CREATOR_SKIP_CONAN_SETUP to ON.") + return() + endif() + execute_process(COMMAND ${conan_program} --version + RESULT_VARIABLE result_code + OUTPUT_VARIABLE conan_version_output + ERROR_VARIABLE conan_version_output) + if (NOT result_code EQUAL 0) + message(FATAL_ERROR "conan --version failed='${result_code}: ${conan_version_output}") + endif() + + string(REGEX REPLACE ".*Conan version ([0-9].[0-9]).*" "\\1" conan_version "${conan_version_output}") + + set(conanfile_timestamp_file "${CMAKE_BINARY_DIR}/conan-dependencies/conanfile.timestamp") + file(TIMESTAMP "${conanfile_txt}" conanfile_timestamp) + + set(do_conan_installation ON) + if (EXISTS "${conanfile_timestamp_file}") + file(READ "${conanfile_timestamp_file}" old_conanfile_timestamp) + if ("${conanfile_timestamp}" STREQUAL "${old_conanfile_timestamp}") + set(do_conan_installation OFF) + endif() + endif() + + set(conanfile_build_policy_file "${CMAKE_BINARY_DIR}/conan-dependencies/conanfile.buildpolicy") + if (EXISTS "${conanfile_build_policy_file}") + file(READ "${conanfile_build_policy_file}" build_policy) + if (NOT "${build_policy}" STREQUAL "${QT_CREATOR_CONAN_BUILD_POLICY}") + set(do_conan_installation ON) + endif() + endif() + + if (do_conan_installation) + message(STATUS "Qt Creator: conan package manager auto-setup. " + "Skip this step by setting QT_CREATOR_SKIP_CONAN_SETUP to ON.") + + file(COPY "${conanfile_txt}" DESTINATION "${CMAKE_BINARY_DIR}/conan-dependencies/") + + file(WRITE "${CMAKE_BINARY_DIR}/conan-dependencies/toolchain.cmake" " + set(CMAKE_C_COMPILER \"${CMAKE_C_COMPILER}\") + set(CMAKE_CXX_COMPILER \"${CMAKE_CXX_COMPILER}\") + ") + qtc_auto_setup_compiler_standard("${CMAKE_BINARY_DIR}/conan-dependencies/toolchain.cmake") + + if (CMAKE_TOOLCHAIN_FILE) + file(APPEND "${CMAKE_BINARY_DIR}/conan-dependencies/toolchain.cmake" + "include(\"${CMAKE_TOOLCHAIN_FILE}\")\n") + endif() + + file(WRITE "${CMAKE_BINARY_DIR}/conan-dependencies/CMakeLists.txt" " + cmake_minimum_required(VERSION 3.15) + + unset(CMAKE_PROJECT_INCLUDE_BEFORE CACHE) + project(conan-setup) + + if (${conan_version} VERSION_GREATER_EQUAL 2.0) + set(CONAN_COMMAND \"${conan_program}\") + include(\"${CMAKE_CURRENT_LIST_DIR}/conan_provider.cmake\") + conan_profile_detect_default() + detect_host_profile(\"${CMAKE_BINARY_DIR}/conan-dependencies/conan_host_profile\") + + set(build_types \${CMAKE_BUILD_TYPE}) + if (CMAKE_CONFIGURATION_TYPES) + set(build_types \${CMAKE_CONFIGURATION_TYPES}) + endif() + + foreach(type \${build_types}) + conan_install( + -pr \"${CMAKE_BINARY_DIR}/conan-dependencies/conan_host_profile\" + --build=${QT_CREATOR_CONAN_BUILD_POLICY} + -s build_type=\${type} + -g CMakeDeps) + endforeach() + + get_property(CONAN_INSTALL_SUCCESS GLOBAL PROPERTY CONAN_INSTALL_SUCCESS) + if (CONAN_INSTALL_SUCCESS) + get_property(CONAN_GENERATORS_FOLDER GLOBAL PROPERTY CONAN_GENERATORS_FOLDER) + file(TO_CMAKE_PATH \"\${CONAN_GENERATORS_FOLDER}\" CONAN_GENERATORS_FOLDER) + file(WRITE \"${CMAKE_BINARY_DIR}/conan-dependencies/conan_paths.cmake\" \" + list(PREPEND CMAKE_PREFIX_PATH \\\"\${CONAN_GENERATORS_FOLDER}\\\") + list(PREPEND CMAKE_MODULE_PATH \\\"\${CONAN_GENERATORS_FOLDER}\\\") + list(PREPEND CMAKE_FIND_ROOT_PATH \\\"\${CONAN_GENERATORS_FOLDER}\\\") + list(REMOVE_DUPLICATES CMAKE_PREFIX_PATH) + list(REMOVE_DUPLICATES CMAKE_MODULE_PATH) + list(REMOVE_DUPLICATES CMAKE_FIND_ROOT_PATH) + set(CMAKE_PREFIX_PATH \\\"\\\${CMAKE_PREFIX_PATH}\\\" CACHE STRING \\\"\\\" FORCE) + set(CMAKE_MODULE_PATH \\\"\\\${CMAKE_MODULE_PATH}\\\" CACHE STRING \\\"\\\" FORCE) + set(CMAKE_FIND_ROOT_PATH \\\"\\\${CMAKE_FIND_ROOT_PATH}\\\" CACHE STRING \\\"\\\" FORCE) + \") + endif() + else() + include(\"${CMAKE_CURRENT_LIST_DIR}/conan.cmake\") + conan_cmake_run( + CONANFILE \"${conanfile_txt}\" + INSTALL_FOLDER \"${CMAKE_BINARY_DIR}/conan-dependencies\" + GENERATORS cmake_paths cmake_find_package json + BUILD ${QT_CREATOR_CONAN_BUILD_POLICY} + ENV CONAN_CMAKE_TOOLCHAIN_FILE=\"${CMAKE_BINARY_DIR}/conan-dependencies/toolchain.cmake\" + ) + endif() + ") + + if (NOT DEFINED CMAKE_BUILD_TYPE AND NOT DEFINED CMAKE_CONFIGURATION_TYPES) + set(CMAKE_CONFIGURATION_TYPES "Debug;Release") + endif() + + execute_process(COMMAND ${CMAKE_COMMAND} + -S "${CMAKE_BINARY_DIR}/conan-dependencies/" + -B "${CMAKE_BINARY_DIR}/conan-dependencies/build" + -C "${CMAKE_BINARY_DIR}/qtcsettings.cmake" + -D "CMAKE_TOOLCHAIN_FILE=${CMAKE_BINARY_DIR}/conan-dependencies/toolchain.cmake" + -G ${CMAKE_GENERATOR} + -D CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -D "CMAKE_CONFIGURATION_TYPES=${CMAKE_CONFIGURATION_TYPES}" + RESULT_VARIABLE result + ) + if (result EQUAL 0) + file(WRITE "${conanfile_timestamp_file}" "${conanfile_timestamp}") + file(WRITE "${conanfile_build_policy_file}" ${QT_CREATOR_CONAN_BUILD_POLICY}) + else() + message(WARNING "Qt Creator's conan package manager auto-setup failed. Consider setting " + "QT_CREATOR_SKIP_CONAN_SETUP to ON and reconfigure to skip this step.") + return() + endif() + endif() + + include("${CMAKE_BINARY_DIR}/conan-dependencies/conan_paths.cmake") + endif() + unset(conanfile_txt) +endmacro() +qtc_auto_setup_conan() + +# +# vcpkg +# +macro(qtc_auto_setup_vcpkg) + if (EXISTS "${CMAKE_SOURCE_DIR}/vcpkg.json" AND NOT QT_CREATOR_SKIP_VCPKG_SETUP) + option(QT_CREATOR_SKIP_VCPKG_SETUP "Skip Qt Creator's vcpkg package manager auto-setup" OFF) + + set_property( + DIRECTORY "${CMAKE_SOURCE_DIR}" + APPEND + PROPERTY CMAKE_CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/vcpkg.json") + + find_program(vcpkg_program vcpkg + PATHS $ENV{VCPKG_ROOT} ${CMAKE_SOURCE_DIR}/vcpkg ${CMAKE_SOURCE_DIR}/3rdparty/vcpkg + NO_DEFAULT_PATH + ) + if (NOT vcpkg_program) + message(WARNING "Qt Creator: vcpkg executable not found. " + "Package manager auto-setup will be skipped. " + "To disable this warning set QT_CREATOR_SKIP_VCPKG_SETUP to ON.") + return() + endif() + execute_process(COMMAND ${vcpkg_program} version + RESULT_VARIABLE result_code + OUTPUT_VARIABLE vcpkg_version_output + ERROR_VARIABLE vcpkg_version_output) + if (NOT result_code EQUAL 0) + message(FATAL_ERROR "vcpkg version failed='${result_code}: ${vcpkg_version_output}") + endif() + + # Resolve any symlinks + get_filename_component(vpkg_program_real_path ${vcpkg_program} REALPATH) + get_filename_component(vpkg_root ${vpkg_program_real_path} DIRECTORY) + + if (NOT EXISTS "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake") + message(STATUS "Qt Creator: vcpkg package manager auto-setup. " + "Skip this step by setting QT_CREATOR_SKIP_VCPKG_SETUP to ON.") + + file(WRITE "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake" " + set(CMAKE_C_COMPILER \"${CMAKE_C_COMPILER}\") + set(CMAKE_CXX_COMPILER \"${CMAKE_CXX_COMPILER}\") + ") + qtc_auto_setup_compiler_standard("${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake") + + if (CMAKE_TOOLCHAIN_FILE AND NOT + CMAKE_TOOLCHAIN_FILE STREQUAL "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake") + file(APPEND "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake" + "include(\"${CMAKE_TOOLCHAIN_FILE}\")\n") + endif() + + if (VCPKG_TARGET_TRIPLET) + set(vcpkg_triplet ${VCPKG_TARGET_TRIPLET}) + else() + if (ANDROID_ABI) + if (ANDROID_ABI STREQUAL "armeabi-v7a") + set(vcpkg_triplet arm-neon-android) + elseif (ANDROID_ABI STREQUAL "arm64-v8a") + set(vcpkg_triplet arm64-android) + elseif (ANDROID_ABI STREQUAL "x86") + set(vcpkg_triplet x86-android) + elseif (ANDROID_ABI STREQUAL "x86_64") + set(vcpkg_triplet x64-android) + else() + message(FATAL_ERROR "Unsupported Android ABI: ${ANDROID_ABI}") + endif() + # Needed by vcpkg/scripts/toolchains/android.cmake + file(APPEND "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake" " + set(ENV{ANDROID_NDK_HOME} \"${ANDROID_NDK}\") + ") + elseif (WIN32) + set(vcpkg_triplet x64-mingw-static) + if (CMAKE_CXX_COMPILER MATCHES ".*/(.*)/cl.exe") + set(vcpkg_triplet ${CMAKE_MATCH_1}-windows) + endif() + elseif(APPLE) + # We're too early to use CMAKE_HOST_SYSTEM_PROCESSOR + execute_process( + COMMAND uname -m + OUTPUT_VARIABLE __apple_host_system_processor + OUTPUT_STRIP_TRAILING_WHITESPACE) + if (__apple_host_system_processor MATCHES "arm64") + set(vcpkg_triplet arm64-osx) + else() + set(vcpkg_triplet x64-osx) + endif() + else() + set(vcpkg_triplet x64-linux) + endif() + endif() + + file(APPEND "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake" " + set(VCPKG_TARGET_TRIPLET ${vcpkg_triplet}) + include(\"${vpkg_root}/scripts/buildsystems/vcpkg.cmake\") + ") + endif() + + set(CMAKE_TOOLCHAIN_FILE "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake" CACHE PATH "" FORCE) + + # Save CMAKE_PREFIX_PATH and CMAKE_MODULE_PATH as cache variables + if (CMAKE_VERSION GREATER_EQUAL "3.19") + cmake_language(DEFER CALL list REMOVE_DUPLICATES CMAKE_PREFIX_PATH) + cmake_language(DEFER CALL list REMOVE_DUPLICATES CMAKE_MODULE_PATH) + cmake_language(DEFER CALL set CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH}" CACHE STRING "" FORCE) + cmake_language(DEFER CALL set CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" CACHE STRING "" FORCE) + endif() + endif() +endmacro() +qtc_auto_setup_vcpkg() diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/CMakeFiles/3.29.3/CMakeCXXCompiler.cmake b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/CMakeFiles/3.29.3/CMakeCXXCompiler.cmake new file mode 100644 index 0000000..2942567 --- /dev/null +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/CMakeFiles/3.29.3/CMakeCXXCompiler.cmake @@ -0,0 +1,92 @@ +set(CMAKE_CXX_COMPILER "E:/qt/Tools/mingw1310_64/bin/g++.exe") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "GNU") +set(CMAKE_CXX_COMPILER_VERSION "13.1.0") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") + +set(CMAKE_CXX_PLATFORM_ID "MinGW") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "E:/qt/Tools/mingw1310_64/bin/ar.exe") +set(CMAKE_CXX_COMPILER_AR "E:/qt/Tools/mingw1310_64/bin/gcc-ar.exe") +set(CMAKE_RANLIB "E:/qt/Tools/mingw1310_64/bin/ranlib.exe") +set(CMAKE_CXX_COMPILER_RANLIB "E:/qt/Tools/mingw1310_64/bin/gcc-ranlib.exe") +set(CMAKE_LINKER "E:/qt/Tools/mingw1310_64/bin/ld.exe") +set(CMAKE_LINKER_LINK "") +set(CMAKE_LINKER_LLD "") +set(CMAKE_CXX_COMPILER_LINKER "../src/gcc-13.1.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64 --enable-host-shared --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --enable-libstdcxx-filesystem-ts=yes --disable-libssp --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-posix-seh-rev1, Built by MinGW-Builds project' --with-bugurl=https:/github.com/niXman/mingw-builds CFLAGS='-O2 -pipe -fno-ident -I/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/lib -L/c/buildroot/prerequisites/x86_64-zlib-static/lib -L/c/buildroot/prerequisites/x86_64-w64-mingw32-static/lib ' LD_FOR_TARGET=/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/bin/ld.exe") +set(CMAKE_CXX_COMPILER_LINKER_ID "") +set(CMAKE_CXX_COMPILER_LINKER_VERSION ) +set(CMAKE_CXX_COMPILER_LINKER_FRONTEND_VARIANT ) +set(CMAKE_MT "") +set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND") +set(CMAKE_COMPILER_IS_GNUCXX 1) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm;ccm;cxxm;c++m) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang IN ITEMS C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) +set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED FALSE) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/x86_64-w64-mingw32;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/backward;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include-fixed;E:/qt/Tools/mingw1310_64/x86_64-w64-mingw32/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;mingw32;gcc_s;gcc;moldname;mingwex;kernel32;pthread;advapi32;shell32;user32;kernel32;iconv;mingw32;gcc_s;gcc;moldname;mingwex;kernel32") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0;E:/qt/Tools/mingw1310_64/lib/gcc;E:/qt/Tools/mingw1310_64/x86_64-w64-mingw32/lib;E:/qt/Tools/mingw1310_64/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") +set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "") diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/CMakeFiles/3.29.3/CMakeRCCompiler.cmake b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/CMakeFiles/3.29.3/CMakeRCCompiler.cmake new file mode 100644 index 0000000..1554a87 --- /dev/null +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/CMakeFiles/3.29.3/CMakeRCCompiler.cmake @@ -0,0 +1,6 @@ +set(CMAKE_RC_COMPILER "E:/qt/Tools/mingw1310_64/bin/windres.exe") +set(CMAKE_RC_COMPILER_ARG1 "") +set(CMAKE_RC_COMPILER_LOADED 1) +set(CMAKE_RC_SOURCE_FILE_EXTENSIONS rc;RC) +set(CMAKE_RC_OUTPUT_EXTENSION .obj) +set(CMAKE_RC_COMPILER_ENV_VAR "RC") diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/CMakeFiles/3.29.3/CMakeSystem.cmake b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/CMakeFiles/3.29.3/CMakeSystem.cmake new file mode 100644 index 0000000..909db20 --- /dev/null +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/CMakeFiles/3.29.3/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Windows-10.0.19045") +set(CMAKE_HOST_SYSTEM_NAME "Windows") +set(CMAKE_HOST_SYSTEM_VERSION "10.0.19045") +set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") + + + +set(CMAKE_SYSTEM "Windows-10.0.19045") +set(CMAKE_SYSTEM_NAME "Windows") +set(CMAKE_SYSTEM_VERSION "10.0.19045") +set(CMAKE_SYSTEM_PROCESSOR "AMD64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware.exe b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware.exe new file mode 100644 index 0000000..02055f1 Binary files /dev/null and b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware.exe differ diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/EWIEGA46WW/qrc_resources.cpp b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/EWIEGA46WW/qrc_resources.cpp new file mode 100644 index 0000000..6f5bb4e --- /dev/null +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/EWIEGA46WW/qrc_resources.cpp @@ -0,0 +1,1704 @@ +/**************************************************************************** +** Resource object code +** +** Created by: The Resource Compiler for Qt version 6.8.1 +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#ifdef _MSC_VER +// disable informational message "function ... selected for automatic inline expansion" +#pragma warning (disable: 4711) +#endif + +static const unsigned char qt_resource_data[] = { + // branch-close.png + 0x0,0x0,0x2,0x1c, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x51,0x0,0x0,0x0,0x47,0x8,0x6,0x0,0x0,0x0,0x7f,0x0,0xab,0xb0, + 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13, + 0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce, + 0x1c,0xe9,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc, + 0x61,0x5,0x0,0x0,0x1,0xb1,0x49,0x44,0x41,0x54,0x78,0x1,0xed,0xdc,0x3d,0x4e, + 0x2,0x61,0x10,0x87,0xf1,0x77,0xd1,0xd5,0xf5,0x83,0x20,0xd1,0x86,0x8e,0x62,0x7b, + 0xb,0x2e,0xc0,0x25,0xb8,0x89,0x3d,0xa1,0xf7,0x50,0x5c,0xc1,0xde,0x4b,0x18,0x40, + 0x64,0xf9,0x78,0x9d,0x1,0x49,0x88,0x89,0x36,0xfe,0x13,0xa7,0x78,0x9e,0x64,0x2, + 0x2c,0xcd,0xe6,0xb7,0xb3,0x5b,0x6e,0x91,0x82,0xf6,0xfa,0xf2,0x94,0xbf,0x1f,0xab, + 0x1f,0x9f,0x8b,0x14,0xb0,0x56,0xa2,0x3f,0x7,0xa2,0x20,0x10,0x5,0x81,0x28,0x8, + 0x44,0x41,0x20,0xa,0x2,0x51,0x10,0x88,0x82,0x40,0x14,0x4,0xa2,0x20,0x10,0x5, + 0x81,0x28,0x8,0x44,0x41,0x20,0xa,0x2,0x51,0x10,0x88,0x82,0x40,0x14,0x4,0xa2, + 0x20,0x10,0x5,0x81,0x28,0x8,0x44,0x41,0x20,0xa,0x2,0x51,0x10,0x88,0x82,0x40, + 0x14,0x4,0xa2,0x20,0x10,0x5,0x81,0x28,0x8,0x44,0x41,0x20,0xa,0x2,0x51,0x10, + 0x88,0x82,0x40,0x14,0x4,0xa2,0x20,0x10,0x5,0x81,0x28,0x8,0x44,0x41,0x20,0xa, + 0x2,0x51,0x10,0x88,0x82,0x40,0x14,0x4,0xa2,0x20,0x10,0x5,0x81,0x28,0x8,0x44, + 0x41,0x20,0xa,0x2,0x51,0x10,0x88,0x82,0x40,0x14,0x4,0xa2,0x20,0x10,0x5,0x81, + 0x28,0x8,0x44,0x41,0x20,0xa,0x2,0x51,0x10,0x88,0x82,0x40,0x14,0x4,0xa2,0x20, + 0x10,0x5,0x81,0x28,0x8,0x44,0x41,0x20,0xa,0x8a,0xf4,0x2a,0x3d,0x3f,0x97,0x73, + 0x9b,0xea,0xc6,0x5a,0xaf,0xd7,0x77,0x4d,0xd3,0x5c,0xdb,0xef,0x33,0x9b,0x8d,0xcd, + 0xbb,0xcd,0x9b,0xcd,0x7c,0x38,0x1c,0x7e,0x4c,0xa7,0xd3,0xad,0x7d,0xcf,0x29,0x40, + 0x11,0x37,0x31,0x2f,0x16,0x8b,0x6c,0x80,0xe,0xb7,0x2d,0xcb,0xd2,0xb1,0xf6,0x63, + 0xb6,0xa7,0x68,0x21,0x0,0xbd,0x68,0x9b,0xe8,0x5b,0x77,0x61,0x73,0x65,0x73,0x6b, + 0xe3,0x9b,0xe8,0x17,0xda,0x11,0x97,0xed,0x76,0x7b,0x3e,0x9b,0xcd,0x96,0xf6,0xbd, + 0x49,0x87,0xed,0xc,0x51,0xb4,0x4d,0xcc,0xfd,0x7e,0x7f,0x97,0xe,0x68,0xab,0xaa, + 0xaa,0xfc,0x16,0x3e,0xce,0xca,0x0,0x37,0xfe,0xff,0x68,0x34,0xa,0xb3,0x85,0x11, + 0xf3,0x8b,0xea,0xcf,0x45,0xdf,0xc4,0x8e,0x6d,0xde,0x83,0x7d,0xfa,0xdc,0x77,0xbb, + 0xdd,0x8e,0x1f,0xb7,0xe7,0xa1,0xff,0x1f,0xf2,0xb5,0xa8,0xff,0x5e,0xce,0xd9,0x61, + 0x7c,0x5a,0x83,0xc1,0xa0,0xac,0xeb,0xfa,0xb2,0xd7,0xeb,0xf9,0xed,0x7c,0x9c,0xca, + 0x8f,0xa7,0x3,0x74,0x28,0xc4,0x88,0x57,0xb4,0x18,0x8f,0xc7,0xfb,0xf3,0x9a,0x4c, + 0x26,0xe,0x76,0x7a,0xeb,0xee,0x8e,0xbf,0x1d,0xdd,0xe2,0xb6,0xfe,0xa1,0xdf,0x2e, + 0x6c,0xf1,0xb5,0xb1,0xa1,0xfa,0x4,0xad,0x32,0x4f,0x99,0xff,0x1,0xe9,0xac,0x0, + 0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // branch-end.png + 0x0,0x0,0x2,0xee, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x55,0x0,0x0,0x0,0x3a,0x8,0x6,0x0,0x0,0x0,0xc1,0x57,0x15,0xd5, + 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13, + 0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce, + 0x1c,0xe9,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc, + 0x61,0x5,0x0,0x0,0x2,0x83,0x49,0x44,0x41,0x54,0x78,0x1,0xed,0xd9,0xcf,0x4e, + 0x13,0x51,0x14,0x6,0xf0,0x73,0xa7,0xad,0x1a,0x35,0x95,0x36,0x69,0x62,0xd9,0x38, + 0x4,0x62,0x62,0x13,0xd3,0xf2,0x4,0xf6,0x4d,0x80,0x37,0xa8,0xb1,0xea,0xb2,0xe0, + 0xba,0x24,0xb8,0x75,0xc5,0x9b,0x58,0x9f,0x0,0xaa,0x49,0x17,0x46,0xd2,0xba,0x71, + 0xd9,0xcc,0x86,0x20,0x76,0x7a,0x8f,0x67,0x6c,0x4b,0x1b,0x43,0x3a,0x5,0x66,0xe0, + 0xc,0x7c,0xbf,0x64,0x32,0x30,0x5c,0x2,0xf3,0xf5,0xfe,0xbf,0x86,0x14,0x3a,0x6a, + 0xd7,0x1b,0x4c,0xb4,0x3d,0xaf,0x8c,0x91,0x9f,0xaf,0x96,0x9b,0x3b,0xa4,0x90,0x43, + 0x10,0x39,0x84,0x1a,0x3,0x84,0x1a,0x3,0x84,0x1a,0x3,0x84,0x1a,0x3,0x84,0x1a, + 0x3,0x84,0x1a,0x3,0x84,0x1a,0x3,0x84,0x1a,0x83,0xc4,0x86,0x6a,0x89,0x96,0x48, + 0x29,0x95,0xa1,0xe,0xad,0xf9,0x19,0x56,0xc6,0x61,0x46,0xa8,0x77,0x89,0xca,0x50, + 0x1d,0xb2,0x5e,0x58,0x19,0x26,0x7,0x35,0xf5,0x22,0x64,0x87,0x2a,0x3c,0x54,0xc3, + 0x2e,0x29,0xa5,0x32,0xd4,0x34,0xa5,0x7b,0x61,0x65,0x64,0xeb,0xcf,0x25,0xa5,0xc, + 0x29,0xf5,0xa3,0x5d,0xe7,0xb0,0x32,0xf,0x33,0xec,0x2e,0x97,0x76,0x43,0x7,0xb5, + 0xeb,0xa6,0x79,0xa0,0x3a,0xc,0x2b,0x70,0x32,0x30,0x9b,0xa4,0x90,0xda,0x50,0xa5, + 0x9,0xb5,0xc2,0xca,0x48,0x55,0xae,0x75,0xf,0xde,0xbb,0xa4,0x8c,0xda,0x50,0x65, + 0xae,0xda,0x5e,0xa0,0xd8,0x92,0x75,0xec,0xe7,0x6e,0xfb,0xdd,0x86,0xa6,0x70,0xd5, + 0xf6,0xa9,0xdd,0x83,0x9a,0x4,0x96,0xee,0xf2,0x45,0x56,0x4e,0x4c,0x2d,0x63,0xe8, + 0xd0,0xb7,0xfc,0x45,0x6a,0x8b,0x97,0xa6,0x61,0x6f,0x65,0x7d,0xaf,0x47,0xd7,0x4c, + 0x6d,0xa8,0x81,0xa3,0x6f,0x72,0x0,0x68,0xe7,0x1f,0x0,0x2e,0x42,0x5e,0xd2,0x63, + 0x32,0x1e,0x31,0xf7,0xa6,0xcf,0xa6,0x5f,0x8f,0x1e,0x98,0x60,0x1a,0x17,0x3a,0x95, + 0x3b,0xcf,0xff,0x7,0x90,0x69,0x52,0xcc,0xf1,0xfd,0x8f,0x52,0x5b,0x6b,0x7c,0xc5, + 0x75,0xfe,0xe8,0xf7,0x65,0x59,0x6b,0xa6,0xd3,0x30,0x8e,0xb6,0x3e,0x7d,0x18,0xfd, + 0x99,0x11,0xd5,0xcb,0x54,0x69,0xba,0x9e,0xb5,0x56,0xe5,0x31,0xf4,0xac,0x6a,0xb5, + 0x9a,0x6a,0x34,0x1a,0x67,0x59,0xaa,0x6e,0xfe,0x13,0xdf,0xdb,0xf5,0x7d,0xf9,0x8f, + 0x37,0x48,0xa9,0xb5,0x72,0xf3,0x81,0xdc,0x86,0xe3,0x8b,0x13,0xb1,0xa1,0xf2,0xbc, + 0xdc,0xdc,0x94,0x4f,0x7f,0x8f,0xf4,0xca,0x94,0x4a,0xa5,0x20,0x4b,0xd9,0x3c,0xe3, + 0xe4,0xec,0x52,0xc9,0x60,0xf0,0xda,0x38,0xb4,0x6d,0x2e,0x39,0x98,0xc4,0x29,0x9b, + 0xcd,0xde,0xeb,0x74,0x3a,0xc1,0xf8,0x64,0x2,0x89,0xda,0xfa,0x5b,0x7d,0xd9,0xdc, + 0xf9,0x63,0xfd,0x75,0x19,0xc5,0xf7,0x49,0x11,0xe9,0xf7,0x83,0x40,0x83,0x2c,0xff, + 0x75,0xa7,0x89,0xdb,0x4f,0x7d,0x21,0xf3,0xce,0xb5,0xca,0xee,0xd6,0xc0,0xfa,0x2b, + 0xf2,0x32,0x5b,0xf2,0x1a,0x2d,0xba,0x61,0xd2,0xe4,0xcf,0x2,0x25,0x4a,0xc8,0x40, + 0xb5,0x88,0xee,0xd7,0xb7,0xaf,0x2c,0x53,0xc5,0x12,0xbb,0xb2,0x0,0xa8,0xc8,0x79, + 0xcb,0x64,0xa,0x15,0xfb,0xbe,0xab,0xc,0x54,0xcb,0x72,0x3b,0x96,0xeb,0x44,0x2, + 0xf6,0x6f,0x4d,0xa8,0xf3,0xfc,0xea,0xbc,0x79,0x76,0x7a,0xea,0xe4,0x28,0x45,0x4f, + 0x26,0xcf,0x86,0x6c,0xdc,0xd9,0x32,0x26,0x98,0xc7,0xd2,0xe5,0x8e,0x68,0xa4,0xbf, + 0xff,0x94,0xcf,0xe7,0x8f,0xfb,0xfd,0xfe,0x6f,0xf9,0x76,0x40,0x10,0x89,0xa7,0x85, + 0x42,0xe1,0xb1,0xdc,0x33,0x74,0x8b,0x5a,0xff,0x4d,0x2b,0xc8,0xf5,0x88,0xc6,0xa1, + 0xe2,0xe0,0x2f,0x1a,0x7e,0xb1,0x58,0xc,0x96,0xa9,0x96,0xc7,0xa3,0x16,0x5c,0x9d, + 0x9f,0xcb,0xe5,0x7c,0xa,0x8e,0xce,0xc,0x5a,0x7f,0x54,0xee,0xcb,0x95,0xa2,0x71, + 0x7f,0x9a,0x22,0x88,0x8a,0xa5,0x99,0x9d,0x2a,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x48,0xb8,0xbf,0x3d,0xed,0xb2,0xe3,0x7e,0x81,0xad, + 0x3e,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // delete.png + 0x0,0x0,0x4,0x5d, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x30,0x0,0x0,0x0,0x36,0x8,0x6,0x0,0x0,0x0,0x81,0x5b,0x1a,0x9a, + 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13, + 0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce, + 0x1c,0xe9,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc, + 0x61,0x5,0x0,0x0,0x3,0xf2,0x49,0x44,0x41,0x54,0x78,0x1,0xd5,0x5a,0x4d,0x56, + 0x13,0x41,0x10,0xae,0xea,0x9,0xca,0x8e,0x78,0x2,0xc7,0x1b,0xc0,0xe,0x70,0x61, + 0x50,0xf1,0xb9,0x13,0x4f,0x20,0x9e,0x40,0x38,0x1,0xe6,0x4,0xe2,0xd,0xe4,0x4, + 0xe0,0xce,0xf7,0xc,0x1a,0x17,0x2,0x3b,0xf1,0x4,0xe,0x27,0x30,0xec,0x90,0x4c, + 0xba,0xec,0x9e,0x68,0xc8,0xf4,0xcf,0x4c,0x77,0xcf,0xc,0x79,0xf9,0x16,0xd0,0xe9, + 0xff,0xaf,0xbb,0xab,0xba,0xaa,0x6b,0x10,0x2a,0x80,0x9e,0xaf,0xc6,0x90,0x46,0x6f, + 0x80,0xd1,0x16,0x10,0xc4,0x1e,0x4d,0x7,0x0,0x78,0xe,0x38,0xfa,0x0,0xc,0xbe, + 0xe1,0xa7,0xb3,0x4,0x2,0x81,0x10,0x8,0xda,0x5c,0xdd,0x6,0x60,0xef,0x44,0xb2, + 0xd,0x55,0x80,0x94,0x88,0x5,0xd8,0x8,0x25,0x11,0x44,0x20,0x5b,0xf9,0x11,0xfb, + 0x5,0x75,0x41,0x92,0xb8,0xbe,0xbb,0x82,0xfd,0xfe,0x0,0x3c,0xd1,0x82,0x10,0x8c, + 0xd8,0x9e,0x96,0x47,0xd4,0x7,0xc2,0x4,0x5c,0xc0,0xa0,0x23,0xfe,0xc6,0x37,0x6d, + 0x31,0x86,0x68,0xf8,0x42,0xa4,0xe,0xc0,0x13,0x61,0x4,0x0,0x97,0xc5,0xa8,0x37, + 0x3f,0x89,0xbf,0xc5,0xde,0x59,0x17,0x3c,0x40,0xcf,0xd6,0xe,0xc5,0xc4,0xb7,0x26, + 0x19,0x8c,0x3a,0x10,0x40,0x80,0x41,0x10,0x28,0x77,0xee,0x7d,0x27,0x9f,0x61,0xd4, + 0xca,0x4f,0x96,0x28,0x48,0x96,0x2,0x9,0xd4,0x0,0x24,0xf5,0xbc,0xcf,0x19,0x81, + 0x9a,0x30,0xf7,0x4,0xf0,0x9f,0x4a,0x14,0x5a,0x5,0x63,0xf7,0x66,0x99,0xc0,0x4d, + 0x77,0xd3,0x7,0x6f,0x64,0x67,0x7e,0x79,0x2a,0x63,0x7c,0xb9,0xb9,0xb7,0x4f,0x20, + 0xe2,0xdd,0x16,0x70,0xf6,0x15,0x32,0x95,0x46,0x10,0xe,0x95,0x50,0x10,0xda,0xde, + 0xfd,0xa4,0xd8,0x66,0x62,0xde,0xd5,0x6e,0xd2,0xd9,0x42,0x10,0x0,0xbe,0x2b,0x12, + 0x9,0xcc,0x1f,0x84,0x2d,0x95,0xee,0x6a,0xa6,0x4,0x6d,0xae,0xcb,0x73,0xf9,0xe3, + 0x26,0x83,0x8e,0xb0,0x77,0xfa,0x12,0x66,0x0,0x31,0x97,0xdc,0xb9,0xc6,0xcf,0x27, + 0xda,0x7c,0x75,0x2d,0x14,0xf1,0x5a,0xf4,0xf3,0x6d,0xa1,0x5c,0x8d,0x22,0xce,0x84, + 0x0,0x75,0x3a,0xea,0xb8,0x89,0xa9,0x9e,0x46,0xc0,0x60,0xd6,0xce,0x66,0x7,0x16, + 0xaf,0x9c,0xc6,0xd,0x34,0xe6,0x26,0x26,0xf5,0x9e,0xd0,0x62,0x9,0xf6,0x4e,0xba, + 0xf6,0x72,0x1c,0x40,0xba,0xd0,0x55,0x4d,0xe5,0x89,0x33,0x24,0x61,0x28,0xd7,0x7, + 0x14,0x7a,0xdf,0x83,0x80,0xec,0xec,0xff,0xa,0x98,0x57,0x22,0x15,0xce,0xc,0xc2, + 0x96,0xf4,0x28,0xe8,0xc9,0xc3,0x4,0x8f,0xbf,0xe7,0x8d,0xb3,0xb1,0xc9,0xbd,0x2d, + 0xae,0x4a,0x80,0x85,0x3f,0x89,0x48,0xbf,0x57,0xda,0xbf,0x12,0x65,0x3b,0x59,0xda, + 0x58,0xde,0x8a,0x1,0x39,0x94,0x81,0x15,0x10,0x80,0x42,0x2,0x8,0xee,0xce,0x7, + 0x19,0xe4,0x88,0x4d,0xe5,0x51,0xb8,0x9c,0xcd,0xce,0x16,0xf2,0x35,0x9f,0xd1,0xec, + 0x2c,0x59,0x8,0xe4,0x2b,0xd3,0xe3,0xf5,0xfb,0x50,0x4,0xc6,0xab,0xfa,0xc5,0xfa, + 0x6e,0x22,0x8f,0xc1,0x1,0xf5,0xec,0x0,0x55,0x54,0xb5,0x9c,0x95,0x1f,0x47,0xa9, + 0xc,0xc,0x30,0x13,0x20,0x65,0x45,0xa2,0xe1,0x3d,0xad,0xe,0xa2,0xb7,0x3,0x9e, + 0x1f,0xa3,0x44,0x3d,0x13,0x28,0xbb,0x4e,0x1e,0x4,0x34,0x1,0x6d,0x2d,0x69,0x75, + 0x38,0x55,0x23,0x50,0xd3,0x5,0xe9,0x76,0x84,0x4a,0x8f,0x8,0xd6,0x2f,0x3,0xfa, + 0x1c,0x12,0x53,0xb6,0xe5,0x8,0x29,0xd7,0x76,0x19,0x1,0xa4,0x6,0x84,0xd8,0xed, + 0xa5,0x6f,0x7e,0x5c,0x4a,0xf4,0x92,0x1,0xa5,0xb2,0x49,0x4d,0x22,0x5c,0x40,0x25, + 0x50,0x5c,0x5c,0xac,0x8,0xb9,0x17,0x1,0xc0,0xcb,0x7c,0x67,0x33,0xb0,0x48,0x1d, + 0x85,0xbc,0xa6,0x7b,0xa0,0x64,0x35,0x4b,0x91,0x5e,0x86,0xd6,0x31,0x13,0xe0,0x51, + 0x7e,0xbb,0x1c,0x5,0x2a,0x18,0xa3,0x85,0xdf,0x86,0xdc,0xb6,0x43,0x1d,0x47,0x19, + 0x30,0x41,0x25,0xe9,0x8f,0xb8,0xb8,0x58,0xd1,0x6c,0xfc,0x8e,0xc7,0xe,0xa0,0xe2, + 0x56,0x9a,0xc,0xaf,0x69,0x92,0xb7,0xe0,0xb5,0xd9,0xfc,0x5,0x33,0x1,0x7f,0xbf, + 0xb8,0xa2,0x2d,0x64,0x5c,0xdd,0x18,0x1c,0xe0,0x26,0xc4,0xd,0xaf,0xb0,0x43,0x60, + 0xc3,0x5a,0x6e,0x26,0x70,0xb5,0x58,0xbe,0x3,0xc8,0x83,0x65,0xc0,0xe0,0xb0,0x97, + 0x95,0xfb,0x11,0x70,0xa,0xf5,0x44,0xe1,0x4,0x4a,0x1d,0x76,0xbd,0xdc,0x73,0x7, + 0xf4,0x46,0x65,0x47,0x28,0x86,0x26,0x41,0xd4,0x38,0x81,0x2a,0x48,0xb4,0x1c,0xe9, + 0xd0,0x3b,0x62,0x5e,0x8c,0xb9,0x90,0x1d,0xc8,0x7b,0x5c,0xaa,0x5f,0x5c,0x25,0x38, + 0xed,0xb3,0xc2,0xe3,0xc1,0xb0,0xf2,0x11,0x2a,0x45,0x99,0x66,0xf1,0x82,0xa3,0x43, + 0x2f,0x61,0x27,0xe0,0xe2,0x17,0xe7,0x7a,0xba,0x5e,0x82,0x10,0x58,0x5e,0xdc,0xf2, + 0x75,0xec,0xcf,0xff,0x76,0x2,0x2e,0x7e,0xb1,0xe7,0x2e,0xb9,0x83,0x9c,0x17,0xc3, + 0x5d,0x88,0x4d,0x3e,0x1,0xf1,0x7d,0x90,0x5a,0x44,0x44,0xe9,0xf1,0xcb,0xc9,0x85, + 0x52,0x76,0x0,0x63,0xd,0x73,0xe,0x29,0xcf,0x3f,0x3b,0xa6,0xad,0xf3,0x2c,0x5f, + 0x2e,0x0,0x29,0x4f,0x8a,0xa6,0xb1,0xa,0x8c,0x4b,0xfb,0xe3,0xae,0x14,0x1c,0x22, + 0x7b,0xa7,0x30,0x9,0x70,0x1b,0x83,0xdc,0xa2,0xac,0x2f,0xfe,0x3d,0x30,0x96,0x8d, + 0x2f,0xca,0x15,0x70,0x45,0xc1,0xbb,0x91,0x7d,0x7,0xaa,0x3e,0x9b,0x54,0x81,0x87, + 0xff,0x51,0x20,0x3,0xaa,0x5f,0x5c,0x4b,0x24,0xd2,0x11,0x18,0xe7,0x7e,0x32,0x9e, + 0xd8,0x6a,0x16,0x69,0xa1,0x9f,0x4a,0xce,0x36,0x3d,0x5d,0xdb,0x81,0x6,0x21,0x55, + 0xb1,0x88,0x8b,0xed,0x6b,0xe1,0xd6,0x21,0x59,0x1f,0x10,0xa,0xbf,0x17,0x12,0x9d, + 0xc9,0x6f,0x82,0x62,0x43,0xab,0x4,0x9a,0x80,0xe9,0xab,0x2f,0xa9,0x20,0x7a,0xa7, + 0x1b,0xb6,0x26,0xc5,0x11,0x1a,0x4e,0xbb,0xe2,0x1d,0xff,0xd0,0x69,0xa0,0x66,0x20, + 0xa2,0x3b,0xf4,0xba,0xa8,0x42,0xa1,0x1a,0xc5,0xe3,0xd3,0x23,0xb1,0x2,0x33,0x8a, + 0x23,0xcb,0xb,0x6e,0xb8,0x81,0xfd,0x62,0x93,0xc5,0xe9,0x93,0x33,0xea,0x88,0x78, + 0x16,0x63,0x1d,0x51,0xfb,0x91,0x10,0xee,0x18,0x9a,0xc3,0x20,0x7b,0x46,0x8f,0xb0, + 0xf,0xd7,0xb,0x1f,0x5d,0xfc,0x92,0xbf,0xab,0x19,0x7d,0xfc,0x73,0x28,0xa2,0xe9, + 0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // arrowRight.png + 0x0,0x0,0x1,0x4c, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0xd,0x0,0x0,0x0,0x11,0x8,0x6,0x0,0x0,0x0,0x6,0xff,0x26,0x9c, + 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13, + 0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce, + 0x1c,0xe9,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc, + 0x61,0x5,0x0,0x0,0x0,0xe1,0x49,0x44,0x41,0x54,0x78,0x1,0x95,0xd3,0xb1,0xe, + 0x82,0x30,0x10,0x6,0xe0,0x3b,0xba,0x91,0xe8,0xc2,0xa,0xf,0xe0,0x22,0x9a,0x18, + 0xa3,0x3,0x1b,0x9b,0x93,0xee,0xf2,0x1c,0x3e,0x2,0xbb,0xba,0x3a,0xe8,0x3,0x18, + 0x77,0x37,0x63,0x4c,0x9c,0xd4,0xc9,0x7,0xc0,0xd,0x27,0x6,0xc6,0x7a,0x45,0x21, + 0x60,0xb1,0xe0,0x9f,0x90,0xdc,0x85,0x7e,0x1c,0x4d,0x5a,0x6,0x9f,0x18,0x43,0x6f, + 0xac,0x9b,0x9d,0x9d,0x6e,0xd9,0x8f,0x38,0xb8,0xde,0x41,0x11,0x2d,0xab,0x38,0x17, + 0xb,0x23,0xe0,0xe8,0x8b,0xf,0xa8,0x10,0x4b,0x8b,0x38,0xb8,0x85,0xba,0xd9,0x3e, + 0x0,0xe0,0x48,0x3c,0xaa,0x89,0x2c,0xdf,0x48,0xd0,0xec,0x62,0x1c,0x5c,0xce,0x4a, + 0x24,0x43,0x70,0xca,0xa0,0x84,0xea,0xc0,0x52,0xf4,0x5,0x1d,0x6a,0xdd,0x3c,0xfc, + 0x89,0x32,0x68,0xd9,0x7b,0x82,0x6e,0x1e,0x22,0xd4,0x88,0x31,0xf0,0x8,0xe1,0x52, + 0xd4,0xc8,0x58,0x4f,0xab,0x6,0xd3,0x16,0x2d,0xf5,0x93,0x6,0xf9,0x3c,0x3c,0xae, + 0x22,0xac,0x6,0xda,0x86,0xca,0x86,0x0,0xcf,0xd3,0x7a,0x91,0xd8,0x9a,0x60,0x46, + 0x60,0x9b,0xbe,0xc3,0x7f,0x81,0x88,0xb4,0x27,0x3a,0x77,0x7d,0x15,0x90,0x10,0x4d, + 0x98,0xd0,0x81,0x55,0x82,0xc2,0xef,0x25,0x13,0xde,0x0,0x54,0xa0,0x38,0x89,0x43, + 0x13,0xc4,0xd5,0xa8,0x0,0x22,0x2f,0xeb,0xd9,0x78,0xfa,0x9,0xdc,0x8b,0xda,0x0, + 0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // arrowLeft.png + 0x0,0x0,0x1,0x4c, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0xa,0x0,0x0,0x0,0x11,0x8,0x6,0x0,0x0,0x0,0xe4,0x23,0x3d,0xe5, + 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13, + 0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce, + 0x1c,0xe9,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc, + 0x61,0x5,0x0,0x0,0x0,0xe1,0x49,0x44,0x41,0x54,0x78,0x1,0x8d,0xd2,0x2f,0xf, + 0x82,0x40,0x14,0x0,0xf0,0xf7,0xc0,0xc4,0xa6,0x85,0xa,0x5d,0x8b,0x18,0xb1,0x98, + 0x6c,0x34,0x3b,0x93,0xcc,0xb4,0x3b,0x3b,0xf3,0x7b,0xc8,0x7,0xf0,0x13,0x98,0xc, + 0x3a,0x9b,0x49,0x13,0x16,0x89,0x14,0xd,0x36,0xce,0x77,0x87,0x7f,0x18,0x78,0x37, + 0x6e,0x83,0xbd,0xbb,0xf7,0xbb,0xb7,0xb7,0xdb,0x43,0x50,0x2c,0xd3,0xf5,0x7b,0x0, + 0x5a,0xc,0xc8,0x22,0x4d,0x81,0x26,0x2,0x1,0xb4,0x1,0xf0,0xde,0x52,0xa0,0x95, + 0xd8,0x20,0x5b,0x64,0xfb,0xf5,0x16,0x1b,0xa0,0x8d,0x8,0x25,0xe8,0x41,0x28,0x24, + 0x74,0xfc,0xe4,0xf0,0x2f,0x82,0xdc,0xcf,0xe,0xf1,0xb9,0x5c,0x4,0x9b,0x20,0x1, + 0x4d,0x37,0x98,0x3,0xb0,0x99,0xa,0xf1,0x45,0xcf,0xc3,0xa6,0xef,0xc6,0x23,0x19, + 0x2a,0x20,0x1,0x11,0x31,0x5c,0x9a,0xc3,0xa0,0x2b,0x83,0xfa,0xf3,0x76,0xba,0x18, + 0xb6,0x93,0x52,0x49,0x8f,0xf6,0x9e,0x61,0xf,0x12,0x3a,0xbb,0xd6,0x20,0xff,0xd5, + 0xb1,0x93,0xf2,0xb3,0x1a,0xac,0xe0,0x31,0xff,0xaa,0x58,0x2f,0xdf,0x12,0xd8,0x72, + 0x28,0x89,0x23,0x5e,0xbd,0x8c,0xf5,0x6a,0x2f,0x94,0x48,0xc,0xab,0xbf,0x2b,0xda, + 0xf8,0x61,0x4,0xc9,0xfa,0x8e,0x18,0x9f,0x1e,0x84,0x50,0x3a,0x66,0xc5,0x9b,0xe6, + 0x3e,0x85,0xd4,0x37,0xeb,0xbc,0x0,0xc3,0xaf,0x73,0x40,0x29,0x30,0x23,0xb9,0x0, + 0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // vline.png + 0x0,0x0,0x1,0x11, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x51,0x0,0x0,0x0,0x3a,0x8,0x6,0x0,0x0,0x0,0xc8,0xbc,0xb5,0xaf, + 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13, + 0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce, + 0x1c,0xe9,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc, + 0x61,0x5,0x0,0x0,0x0,0xa6,0x49,0x44,0x41,0x54,0x78,0x1,0xed,0xd0,0x21,0x1, + 0x80,0x40,0x0,0xc0,0xc0,0x87,0x2c,0x78,0xca,0x11,0x83,0x72,0x78,0xba,0x80,0xc7, + 0x32,0xf1,0xe2,0x4e,0x4e,0x6e,0x19,0x93,0xba,0xaf,0xe3,0xf9,0xb6,0x6d,0x3f,0x97, + 0x31,0xa1,0x75,0xf0,0x9b,0x89,0x1,0x13,0x3,0x26,0x6,0x4c,0xc,0x98,0x18,0x30, + 0x31,0x60,0x62,0xc0,0xc4,0x80,0x89,0x1,0x13,0x3,0x26,0x6,0x4c,0xc,0x98,0x18, + 0x30,0x31,0x60,0x62,0xc0,0xc4,0x80,0x89,0x1,0x13,0x3,0x26,0x6,0x4c,0xc,0x98, + 0x18,0x30,0x31,0x60,0x62,0xc0,0xc4,0x80,0x89,0x1,0x13,0x3,0x26,0x6,0x4c,0xc, + 0x98,0x18,0x30,0x31,0x60,0x62,0xc0,0xc4,0x80,0x89,0x1,0x13,0x3,0x26,0x6,0x4c, + 0xc,0x98,0x18,0x30,0x31,0x60,0x62,0xc0,0xc4,0x80,0x89,0x1,0x13,0x3,0x26,0x6, + 0x4c,0xc,0x98,0x18,0x30,0x31,0x60,0x62,0xc0,0xc4,0x80,0x89,0x1,0x13,0x3,0x26, + 0x6,0x4c,0xc,0x98,0x18,0x30,0x31,0x60,0x22,0x73,0x78,0x1,0x14,0x67,0x4,0x72, + 0xe1,0xcf,0xa9,0xbc,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + + // bell.png + 0x0,0x0,0x2,0x6f, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x1d,0x0,0x0,0x0,0x20,0x8,0x6,0x0,0x0,0x0,0xee,0x77,0x73,0x7c, + 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13, + 0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce, + 0x1c,0xe9,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc, + 0x61,0x5,0x0,0x0,0x2,0x4,0x49,0x44,0x41,0x54,0x78,0x1,0xe5,0x97,0xbf,0x4e, + 0xdb,0x50,0x14,0xc6,0xbf,0x73,0x8d,0x20,0x69,0x17,0x4b,0x6d,0x25,0xa4,0x6,0xd5, + 0x6c,0xdd,0xe2,0x6c,0x16,0x93,0x1f,0xa1,0x3c,0x41,0x5d,0x75,0xea,0xd6,0x3e,0x41, + 0xe0,0xd,0xe8,0x13,0xc4,0x8c,0xdd,0xda,0xa9,0x23,0x4c,0x95,0x3b,0xd5,0x7d,0x83, + 0xc,0xb4,0x42,0xe2,0x8f,0xc2,0x82,0x15,0xa1,0xf8,0x70,0x2e,0x21,0x48,0xe0,0x1b, + 0xe7,0x3a,0x71,0x58,0xf8,0x4d,0x51,0x7c,0x74,0x3e,0x9f,0xe3,0xe3,0xef,0x5c,0x13, + 0x2a,0xe0,0x86,0x91,0xab,0x86,0xe8,0x52,0xce,0x11,0x8,0x2e,0x13,0xa5,0xc4,0xb4, + 0x77,0x96,0xf4,0xf6,0xab,0xe4,0x21,0xdb,0xc0,0xf5,0x20,0xf2,0xae,0xc0,0x7,0xf2, + 0xd3,0x2b,0x24,0x11,0xe1,0xd3,0xdf,0xf1,0x17,0x58,0xa2,0x6c,0x3,0xaf,0x80,0xae, + 0x49,0x50,0xc3,0xc4,0x9f,0xdd,0x20,0xa,0x61,0x89,0x55,0xa5,0x2f,0x25,0x21,0x8f, + 0xab,0x9c,0xa,0x13,0xd2,0x55,0xa6,0xed,0xe3,0x24,0xee,0x63,0x11,0xd1,0x71,0x4b, + 0xd1,0x93,0x94,0x21,0x2c,0x61,0xd0,0xee,0x79,0x12,0xef,0x94,0xc5,0x38,0x28,0x15, + 0xbc,0xa9,0xce,0x47,0x5,0xa4,0x8a,0xf0,0x59,0xcb,0xf7,0xb2,0xa3,0xbf,0x3f,0x50, + 0x55,0x74,0x75,0xa3,0x7d,0x20,0x9,0xde,0x62,0x3e,0xfc,0xe6,0xeb,0xce,0x45,0xf6, + 0x2f,0x4d,0x60,0xbe,0xb1,0x22,0x2f,0x82,0x28,0x92,0x46,0xf5,0xb0,0x8,0x8c,0xc1, + 0xa8,0x49,0x9b,0x83,0xc3,0x78,0xf0,0xf0,0xd2,0xb4,0xe9,0x7d,0x8f,0x45,0x91,0xf7, + 0x58,0x65,0xe6,0x3c,0x5,0x51,0x6d,0x0,0x55,0x6,0xa7,0x54,0x97,0xf8,0x1d,0x6c, + 0x44,0x9d,0x21,0x42,0xd4,0x5,0x9b,0x87,0xb0,0x20,0xca,0x8c,0x36,0xea,0x42,0x5a, + 0xec,0x6e,0x7d,0x7c,0x33,0x53,0x94,0xa6,0xb8,0xce,0xbc,0x38,0xa3,0xdc,0x9f,0x29, + 0xaa,0xef,0xe,0x75,0x62,0xc8,0x57,0x14,0xe5,0x9a,0x45,0xd,0x58,0x1b,0xfe,0xbc, + 0x88,0x67,0x7b,0x98,0x29,0xca,0x5c,0xc9,0xf6,0x2c,0xf0,0x50,0x26,0xaa,0xfd,0xb6, + 0xee,0x67,0x4a,0xb3,0x2a,0x95,0x8d,0x12,0xa2,0x7e,0xc2,0xb1,0xe1,0x18,0x44,0x6f, + 0x9d,0xa8,0x8b,0x25,0xb0,0x92,0xe1,0x5e,0x5e,0x67,0x22,0xa8,0x86,0xbc,0xc8,0x56, + 0x29,0x87,0x10,0x34,0x5b,0x1d,0xca,0x8e,0xd2,0xc3,0x3b,0xd1,0xe7,0xeb,0xfe,0x4f, + 0x11,0xc,0xb0,0x44,0xf4,0x9e,0x9d,0xac,0x3b,0x92,0xa3,0xc8,0xe,0x2f,0xa9,0xad, + 0x26,0xd4,0x88,0x3a,0x4e,0xb3,0xd5,0xd6,0x7b,0x73,0xe9,0x86,0x30,0x21,0x57,0xd4, + 0x50,0x8f,0xe1,0x40,0xf7,0x20,0xc,0x56,0xa0,0xe8,0x83,0x6e,0x2f,0x3d,0x8e,0x78, + 0x3f,0x67,0x7c,0xc5,0x93,0xc1,0xea,0xb0,0xfd,0x6a,0x2b,0xf2,0xf3,0x9c,0xff,0x94, + 0xc5,0xb0,0xb4,0xee,0x3c,0xd9,0xdf,0x84,0x5,0x56,0x5b,0xe6,0xe4,0x57,0x9c,0xea, + 0xa4,0xa5,0x41,0x84,0xef,0xb0,0xc4,0x7a,0xb5,0x39,0x23,0xda,0xd6,0xc7,0x4a,0xd3, + 0x35,0xfd,0x49,0x91,0xaf,0xd1,0x2e,0x2c,0x71,0x6c,0x3,0x2f,0xff,0xa7,0xc7,0x6b, + 0x1b,0x9d,0x6f,0xf2,0x3c,0x5c,0x99,0x74,0xbd,0x8d,0x1a,0xf2,0x77,0x5f,0x26,0x7f, + 0x2f,0x6f,0xa8,0x4f,0xa6,0xf3,0xed,0x34,0xae,0x1,0xf5,0x91,0x9c,0xe1,0xe2,0x98, + 0xb5,0x4f,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // open.png + 0x0,0x0,0x0,0xde, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0xc,0x0,0x0,0x0,0x8,0x8,0x6,0x0,0x0,0x0,0xcd,0xe4,0x1e,0xf1, + 0x0,0x0,0x0,0x4,0x73,0x42,0x49,0x54,0x8,0x8,0x8,0x8,0x7c,0x8,0x64,0x88, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0, + 0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc4,0x0,0x0,0xe,0xc4,0x1,0x95,0x2b, + 0xe,0x1b,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x53,0x6f,0x66,0x74,0x77,0x61, + 0x72,0x65,0x0,0x77,0x77,0x77,0x2e,0x69,0x6e,0x6b,0x73,0x63,0x61,0x70,0x65,0x2e, + 0x6f,0x72,0x67,0x9b,0xee,0x3c,0x1a,0x0,0x0,0x0,0x3e,0x49,0x44,0x41,0x54,0x28, + 0x53,0x63,0xbc,0x73,0xb1,0xe4,0x3f,0x3,0x9,0x80,0x9,0x4a,0x13,0xd,0x98,0x94, + 0xf5,0xba,0xa1,0x4c,0xc2,0x0,0xa4,0x16,0x6c,0x3,0x31,0x9a,0x60,0x6a,0xe0,0x4e, + 0xc2,0xa7,0x9,0x59,0x8e,0x74,0x3f,0x40,0x69,0x30,0xc0,0x66,0xb,0xba,0x18,0x86, + 0xd,0xc8,0xa,0x30,0xd,0x60,0x60,0x0,0x0,0xe9,0x19,0xb,0xc8,0x7a,0x5a,0xb8, + 0x7c,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // branch-more.png + 0x0,0x0,0x0,0xb0, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x18,0x0,0x0,0x0,0x11,0x8,0x6,0x0,0x0,0x0,0xc7,0x78,0x6c,0x30, + 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13, + 0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce, + 0x1c,0xe9,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc, + 0x61,0x5,0x0,0x0,0x0,0x45,0x49,0x44,0x41,0x54,0x78,0x1,0xed,0x92,0xc1,0x9, + 0x0,0x20,0xc,0x3,0xa3,0x38,0x8a,0x7f,0x97,0x73,0xc,0x97,0xf3,0xef,0x2e,0x4a, + 0x37,0x30,0x42,0x1f,0xd2,0x1c,0xf4,0xd7,0x70,0x4,0x2,0x10,0xac,0xd9,0xb7,0x1d, + 0x93,0xc9,0x70,0x46,0x82,0x0,0x82,0xc4,0x3c,0xb3,0x13,0x35,0xdc,0x1b,0x14,0x3c, + 0x50,0xdb,0xb8,0x6e,0xae,0x15,0x49,0xf0,0x81,0xe0,0x0,0x43,0x36,0xa,0x62,0x87, + 0x18,0x3a,0xd0,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // checked.png + 0x0,0x0,0x0,0xeb, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0xa,0x0,0x0,0x0,0xa,0x8,0x6,0x0,0x0,0x0,0x8d,0x32,0xcf,0xbd, + 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13, + 0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce, + 0x1c,0xe9,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc, + 0x61,0x5,0x0,0x0,0x0,0x80,0x49,0x44,0x41,0x54,0x78,0x1,0x8d,0x8e,0x51,0xd, + 0x80,0x30,0xc,0x44,0x57,0xc2,0xef,0x14,0x60,0x0,0x5,0x8,0x0,0x5,0x18,0x60, + 0xa,0xd0,0x1,0x36,0x8,0x3e,0x10,0x0,0x8,0x60,0x2,0xa6,0x63,0xdc,0x96,0x86, + 0x8c,0x25,0x63,0x34,0x79,0x49,0xd3,0x5e,0xef,0x2a,0x44,0xa6,0xac,0xb5,0xb5,0xf8, + 0x21,0xaa,0x80,0x6,0x5d,0x91,0xd1,0xae,0xc0,0x80,0xeb,0xcb,0x6d,0x64,0xb7,0x3e, + 0x1c,0xca,0x44,0xe4,0x14,0xe,0x15,0x38,0xc2,0xa7,0xd1,0xcf,0x60,0x73,0x7,0xf1, + 0xf5,0xc9,0xb,0xe9,0xa2,0xd8,0x6d,0x8,0x53,0x88,0xc5,0xd,0x3f,0xbe,0x3,0xef, + 0x42,0x44,0x6d,0xea,0x79,0xc5,0x4e,0xfa,0x15,0xc9,0x55,0x3e,0xd6,0x44,0xb,0x4, + 0xfe,0x6,0xbd,0x89,0x85,0x37,0xc3,0x8c,0x6d,0x33,0x49,0x87,0x85,0x54,0x0,0x0, + 0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // close.png + 0x0,0x0,0x0,0xf9, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x8,0x0,0x0,0x0,0xc,0x8,0x6,0x0,0x0,0x0,0x5f,0x9e,0xfc,0x9d, + 0x0,0x0,0x0,0x4,0x73,0x42,0x49,0x54,0x8,0x8,0x8,0x8,0x7c,0x8,0x64,0x88, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0, + 0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc4,0x0,0x0,0xe,0xc4,0x1,0x95,0x2b, + 0xe,0x1b,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x53,0x6f,0x66,0x74,0x77,0x61, + 0x72,0x65,0x0,0x77,0x77,0x77,0x2e,0x69,0x6e,0x6b,0x73,0x63,0x61,0x70,0x65,0x2e, + 0x6f,0x72,0x67,0x9b,0xee,0x3c,0x1a,0x0,0x0,0x0,0x59,0x49,0x44,0x41,0x54,0x28, + 0x53,0x63,0xbc,0x73,0xb1,0xe4,0x3f,0x3,0x10,0x28,0xeb,0x75,0x83,0x28,0xc,0xc0, + 0x4,0xa5,0x19,0xee,0x5e,0x2a,0x85,0xb2,0x50,0x1,0x5c,0x1,0x8,0x60,0x53,0x84, + 0xa2,0x0,0x4,0x40,0x8a,0x90,0x15,0x62,0x28,0x80,0x1,0x98,0x22,0x9c,0xa,0x40, + 0x0,0xa4,0x8,0xaf,0x2,0x10,0xc0,0xab,0x0,0xe4,0x75,0x9c,0xa,0x60,0xe1,0x82, + 0xa1,0x0,0x24,0x81,0x1c,0x68,0x28,0xa,0xb0,0x85,0x26,0x5c,0x1,0x36,0x49,0x6, + 0x6,0x6,0x6,0x0,0xab,0x61,0x16,0x14,0x83,0x17,0x2c,0x6d,0x0,0x0,0x0,0x0, + 0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // chevron-down.png + 0x0,0x0,0x1,0x4b, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x12,0x0,0x0,0x0,0xb,0x8,0x6,0x0,0x0,0x0,0x72,0x17,0xdd,0x4, + 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13, + 0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce, + 0x1c,0xe9,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc, + 0x61,0x5,0x0,0x0,0x0,0xe0,0x49,0x44,0x41,0x54,0x78,0x1,0x9d,0x90,0xcb,0xd, + 0x82,0x40,0x10,0x86,0x67,0x56,0xe3,0xe3,0x66,0xc2,0xc5,0x23,0x1d,0xe8,0x91,0xa3, + 0x76,0x20,0xd,0x8,0x74,0xa0,0x1d,0x68,0x7,0x96,0x0,0x36,0x20,0x1d,0xe0,0x4d, + 0x3c,0x69,0x7,0x54,0x0,0xe1,0xe8,0x23,0x38,0xee,0x98,0x60,0x80,0xf0,0xd2,0x3f, + 0xd9,0xdd,0xec,0xcc,0xfc,0xdf,0xce,0xe,0x8c,0x66,0xe6,0x8,0xfe,0x14,0x7b,0x53, + 0xbf,0xe8,0xdc,0xe8,0xa2,0x68,0x46,0x30,0xd6,0x4c,0xf5,0x17,0x8,0xd7,0xb3,0x97, + 0xd7,0x7,0x44,0x8,0xae,0x3c,0xd5,0x27,0x90,0xd7,0x16,0xc6,0x75,0x5c,0xcf,0x3e, + 0x2,0xb2,0x39,0x86,0xbc,0x29,0xda,0x52,0x5e,0xd0,0x90,0xd0,0xeb,0xab,0x8f,0xf3, + 0xf8,0x68,0xc7,0x2d,0x21,0x9b,0xc8,0xdf,0x6f,0xbf,0xa0,0xb6,0xb0,0x1c,0x4,0x61, + 0x17,0x9d,0x9c,0x75,0x9a,0xc3,0x6c,0x61,0x1d,0x8c,0x87,0x2a,0xee,0xe4,0x21,0xc1, + 0x54,0x5e,0xed,0xd0,0x77,0xac,0xac,0x17,0x8b,0xaf,0x96,0xc1,0x9a,0x20,0xa5,0xa0, + 0x22,0xac,0x47,0xa8,0x3f,0x90,0xe,0x75,0x10,0x56,0xb7,0x2c,0x98,0xc,0xc4,0x4a, + 0x76,0x30,0x61,0xb3,0x9c,0x49,0x20,0x4f,0xa8,0x83,0x54,0x76,0xc4,0xca,0x7d,0x87, + 0xc0,0xd,0xcf,0x8e,0xe,0x35,0x12,0x55,0x9,0x9e,0xd,0xcf,0x28,0x11,0x62,0x91, + 0xc,0xd1,0x82,0x6,0xbd,0x1,0xcd,0x6,0x82,0xb5,0x4d,0xed,0x9,0x91,0x0,0x0, + 0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // settings.svg + 0x0,0x0,0x7,0xac, + 0x3c, + 0x73,0x76,0x67,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x33,0x32,0x22,0x20,0x68, + 0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x33,0x32,0x22,0x20,0x76,0x69,0x65,0x77,0x42, + 0x6f,0x78,0x3d,0x22,0x30,0x20,0x30,0x20,0x33,0x32,0x20,0x33,0x32,0x22,0x20,0x66, + 0x69,0x6c,0x6c,0x3d,0x22,0x6e,0x6f,0x6e,0x65,0x22,0x20,0x78,0x6d,0x6c,0x6e,0x73, + 0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e, + 0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x30,0x2f,0x73,0x76,0x67,0x22,0x3e,0xd,0xa, + 0x3c,0x67,0x20,0x63,0x6c,0x69,0x70,0x2d,0x70,0x61,0x74,0x68,0x3d,0x22,0x75,0x72, + 0x6c,0x28,0x23,0x63,0x6c,0x69,0x70,0x30,0x5f,0x34,0x5f,0x31,0x31,0x32,0x29,0x22, + 0x3e,0xd,0xa,0x3c,0x6d,0x61,0x73,0x6b,0x20,0x69,0x64,0x3d,0x22,0x6d,0x61,0x73, + 0x6b,0x30,0x5f,0x34,0x5f,0x31,0x31,0x32,0x22,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d, + 0x22,0x6d,0x61,0x73,0x6b,0x2d,0x74,0x79,0x70,0x65,0x3a,0x6c,0x75,0x6d,0x69,0x6e, + 0x61,0x6e,0x63,0x65,0x22,0x20,0x6d,0x61,0x73,0x6b,0x55,0x6e,0x69,0x74,0x73,0x3d, + 0x22,0x75,0x73,0x65,0x72,0x53,0x70,0x61,0x63,0x65,0x4f,0x6e,0x55,0x73,0x65,0x22, + 0x20,0x78,0x3d,0x22,0x30,0x22,0x20,0x79,0x3d,0x22,0x30,0x22,0x20,0x77,0x69,0x64, + 0x74,0x68,0x3d,0x22,0x33,0x32,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22, + 0x33,0x32,0x22,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d, + 0x30,0x20,0x30,0x48,0x33,0x32,0x56,0x33,0x32,0x48,0x30,0x56,0x30,0x5a,0x22,0x20, + 0x66,0x69,0x6c,0x6c,0x3d,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x2f,0x3e,0xd,0xa, + 0x3c,0x2f,0x6d,0x61,0x73,0x6b,0x3e,0xd,0xa,0x3c,0x67,0x20,0x6d,0x61,0x73,0x6b, + 0x3d,0x22,0x75,0x72,0x6c,0x28,0x23,0x6d,0x61,0x73,0x6b,0x30,0x5f,0x34,0x5f,0x31, + 0x31,0x32,0x29,0x22,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22, + 0x4d,0x31,0x34,0x2e,0x35,0x39,0x31,0x20,0x33,0x31,0x2e,0x39,0x38,0x35,0x48,0x31, + 0x37,0x2e,0x34,0x30,0x39,0x43,0x31,0x38,0x2e,0x32,0x30,0x35,0x20,0x33,0x31,0x2e, + 0x39,0x38,0x35,0x20,0x31,0x38,0x2e,0x37,0x38,0x37,0x20,0x33,0x31,0x2e,0x35,0x31, + 0x20,0x31,0x38,0x2e,0x39,0x35,0x35,0x20,0x33,0x30,0x2e,0x37,0x33,0x4c,0x31,0x39, + 0x2e,0x37,0x35,0x31,0x20,0x32,0x37,0x2e,0x33,0x36,0x33,0x43,0x32,0x30,0x2e,0x33, + 0x32,0x36,0x20,0x32,0x37,0x2e,0x31,0x37,0x34,0x36,0x20,0x32,0x30,0x2e,0x38,0x38, + 0x38,0x35,0x20,0x32,0x36,0x2e,0x39,0x34,0x39,0x38,0x20,0x32,0x31,0x2e,0x34,0x33, + 0x35,0x20,0x32,0x36,0x2e,0x36,0x39,0x4c,0x32,0x34,0x2e,0x33,0x39,0x20,0x32,0x38, + 0x2e,0x34,0x39,0x35,0x43,0x32,0x35,0x2e,0x30,0x34,0x39,0x20,0x32,0x38,0x2e,0x39, + 0x30,0x39,0x20,0x32,0x35,0x2e,0x37,0x39,0x39,0x20,0x32,0x38,0x2e,0x38,0x34,0x37, + 0x20,0x32,0x36,0x2e,0x33,0x35,0x20,0x32,0x38,0x2e,0x32,0x39,0x37,0x4c,0x32,0x38, + 0x2e,0x33,0x32,0x35,0x20,0x32,0x36,0x2e,0x33,0x33,0x37,0x43,0x32,0x38,0x2e,0x38, + 0x37,0x37,0x20,0x32,0x35,0x2e,0x37,0x38,0x37,0x20,0x32,0x38,0x2e,0x39,0x35,0x33, + 0x20,0x32,0x34,0x2e,0x39,0x39,0x31,0x20,0x32,0x38,0x2e,0x35,0x30,0x39,0x20,0x32, + 0x34,0x2e,0x33,0x33,0x33,0x4c,0x32,0x36,0x2e,0x37,0x30,0x32,0x20,0x32,0x31,0x2e, + 0x34,0x31,0x43,0x32,0x36,0x2e,0x39,0x36,0x32,0x20,0x32,0x30,0x2e,0x38,0x37,0x34, + 0x20,0x32,0x37,0x2e,0x31,0x39,0x32,0x20,0x32,0x30,0x2e,0x33,0x32,0x33,0x20,0x32, + 0x37,0x2e,0x33,0x36,0x31,0x20,0x31,0x39,0x2e,0x37,0x37,0x32,0x4c,0x33,0x30,0x2e, + 0x37,0x36,0x20,0x31,0x38,0x2e,0x39,0x36,0x32,0x43,0x33,0x31,0x2e,0x35,0x34,0x20, + 0x31,0x38,0x2e,0x37,0x39,0x32,0x20,0x33,0x32,0x20,0x31,0x38,0x2e,0x32,0x31,0x32, + 0x20,0x33,0x32,0x20,0x31,0x37,0x2e,0x34,0x31,0x36,0x56,0x31,0x34,0x2e,0x36,0x34, + 0x36,0x43,0x33,0x32,0x20,0x31,0x33,0x2e,0x38,0x36,0x36,0x20,0x33,0x31,0x2e,0x35, + 0x34,0x20,0x31,0x33,0x2e,0x32,0x38,0x34,0x20,0x33,0x30,0x2e,0x37,0x36,0x20,0x31, + 0x33,0x2e,0x31,0x31,0x36,0x4c,0x32,0x37,0x2e,0x33,0x39,0x31,0x20,0x31,0x32,0x2e, + 0x33,0x30,0x34,0x43,0x32,0x37,0x2e,0x32,0x30,0x34,0x38,0x20,0x31,0x31,0x2e,0x37, + 0x33,0x35,0x35,0x20,0x32,0x36,0x2e,0x39,0x38,0x35,0x31,0x20,0x31,0x31,0x2e,0x31, + 0x37,0x38,0x35,0x20,0x32,0x36,0x2e,0x37,0x33,0x33,0x20,0x31,0x30,0x2e,0x36,0x33, + 0x36,0x4c,0x32,0x38,0x2e,0x35,0x34,0x20,0x37,0x2e,0x36,0x36,0x37,0x43,0x32,0x38, + 0x2e,0x39,0x36,0x38,0x20,0x37,0x2e,0x30,0x30,0x39,0x20,0x32,0x38,0x2e,0x39,0x32, + 0x33,0x20,0x36,0x2e,0x32,0x35,0x39,0x20,0x32,0x38,0x2e,0x33,0x35,0x36,0x20,0x35, + 0x2e,0x37,0x30,0x38,0x4c,0x32,0x36,0x2e,0x33,0x35,0x20,0x33,0x2e,0x37,0x33,0x34, + 0x43,0x32,0x35,0x2e,0x37,0x38,0x34,0x20,0x33,0x2e,0x32,0x31,0x34,0x20,0x32,0x35, + 0x2e,0x31,0x31,0x20,0x33,0x2e,0x31,0x32,0x32,0x20,0x32,0x34,0x2e,0x34,0x33,0x36, + 0x20,0x33,0x2e,0x35,0x30,0x34,0x4c,0x32,0x31,0x2e,0x34,0x33,0x36,0x20,0x35,0x2e, + 0x33,0x35,0x36,0x43,0x32,0x30,0x2e,0x38,0x39,0x36,0x33,0x20,0x35,0x2e,0x30,0x37, + 0x36,0x33,0x32,0x20,0x32,0x30,0x2e,0x33,0x33,0x32,0x33,0x20,0x34,0x2e,0x38,0x34, + 0x36,0x30,0x35,0x20,0x31,0x39,0x2e,0x37,0x35,0x31,0x20,0x34,0x2e,0x36,0x36,0x38, + 0x4c,0x31,0x38,0x2e,0x39,0x35,0x35,0x20,0x31,0x2e,0x32,0x35,0x35,0x43,0x31,0x38, + 0x2e,0x37,0x38,0x37,0x20,0x30,0x2e,0x34,0x37,0x35,0x20,0x31,0x38,0x2e,0x32,0x30, + 0x35,0x20,0x30,0x20,0x31,0x37,0x2e,0x34,0x30,0x39,0x20,0x30,0x48,0x31,0x34,0x2e, + 0x35,0x39,0x43,0x31,0x33,0x2e,0x37,0x39,0x34,0x20,0x30,0x20,0x31,0x33,0x2e,0x32, + 0x31,0x32,0x20,0x30,0x2e,0x34,0x37,0x34,0x20,0x31,0x33,0x2e,0x30,0x32,0x39,0x20, + 0x31,0x2e,0x32,0x35,0x35,0x4c,0x31,0x32,0x2e,0x32,0x33,0x33,0x20,0x34,0x2e,0x36, + 0x33,0x37,0x43,0x31,0x31,0x2e,0x36,0x33,0x35,0x20,0x34,0x2e,0x38,0x33,0x36,0x20, + 0x31,0x31,0x2e,0x30,0x35,0x33,0x20,0x35,0x2e,0x30,0x36,0x36,0x20,0x31,0x30,0x2e, + 0x35,0x33,0x33,0x20,0x35,0x2e,0x33,0x34,0x31,0x4c,0x37,0x2e,0x35,0x36,0x33,0x30, + 0x32,0x20,0x33,0x2e,0x35,0x30,0x35,0x43,0x36,0x2e,0x38,0x38,0x39,0x30,0x32,0x20, + 0x33,0x2e,0x31,0x32,0x32,0x20,0x36,0x2e,0x32,0x30,0x30,0x30,0x32,0x20,0x33,0x2e, + 0x31,0x39,0x38,0x20,0x35,0x2e,0x36,0x33,0x33,0x30,0x32,0x20,0x33,0x2e,0x37,0x33, + 0x35,0x4c,0x33,0x2e,0x36,0x34,0x33,0x30,0x32,0x20,0x35,0x2e,0x37,0x30,0x38,0x43, + 0x33,0x2e,0x30,0x37,0x37,0x30,0x32,0x20,0x36,0x2e,0x32,0x35,0x39,0x20,0x33,0x2e, + 0x30,0x31,0x35,0x30,0x32,0x20,0x37,0x2e,0x30,0x30,0x39,0x20,0x33,0x2e,0x34,0x35, + 0x39,0x30,0x32,0x20,0x37,0x2e,0x36,0x36,0x38,0x4c,0x35,0x2e,0x32,0x35,0x31,0x30, + 0x32,0x20,0x31,0x30,0x2e,0x36,0x33,0x36,0x43,0x35,0x2e,0x30,0x35,0x31,0x30,0x32, + 0x20,0x31,0x31,0x2e,0x31,0x31,0x31,0x20,0x34,0x2e,0x38,0x30,0x37,0x30,0x32,0x20, + 0x31,0x31,0x2e,0x36,0x37,0x36,0x20,0x34,0x2e,0x36,0x30,0x38,0x30,0x32,0x20,0x31, + 0x32,0x2e,0x33,0x30,0x34,0x4c,0x31,0x2e,0x32,0x33,0x39,0x30,0x32,0x20,0x31,0x33, + 0x2e,0x31,0x31,0x35,0x43,0x30,0x2e,0x34,0x35,0x39,0x30,0x32,0x33,0x20,0x31,0x33, + 0x2e,0x32,0x38,0x34,0x20,0x2d,0x30,0x2e,0x30,0x30,0x30,0x39,0x37,0x36,0x35,0x36, + 0x32,0x20,0x31,0x33,0x2e,0x38,0x36,0x35,0x20,0x2d,0x30,0x2e,0x30,0x30,0x30,0x39, + 0x37,0x36,0x35,0x36,0x32,0x20,0x31,0x34,0x2e,0x36,0x34,0x35,0x56,0x31,0x37,0x2e, + 0x34,0x31,0x35,0x43,0x2d,0x30,0x2e,0x30,0x30,0x30,0x39,0x37,0x36,0x35,0x36,0x32, + 0x20,0x31,0x38,0x2e,0x32,0x31,0x31,0x20,0x30,0x2e,0x34,0x35,0x39,0x30,0x32,0x33, + 0x20,0x31,0x38,0x2e,0x37,0x39,0x33,0x20,0x31,0x2e,0x32,0x33,0x39,0x30,0x32,0x20, + 0x31,0x38,0x2e,0x39,0x36,0x31,0x4c,0x34,0x2e,0x36,0x33,0x39,0x30,0x32,0x20,0x31, + 0x39,0x2e,0x37,0x37,0x32,0x43,0x34,0x2e,0x38,0x30,0x37,0x30,0x32,0x20,0x32,0x30, + 0x2e,0x33,0x32,0x33,0x20,0x35,0x2e,0x30,0x33,0x36,0x30,0x32,0x20,0x32,0x30,0x2e, + 0x38,0x37,0x34,0x20,0x35,0x2e,0x32,0x38,0x31,0x30,0x32,0x20,0x32,0x31,0x2e,0x34, + 0x31,0x4c,0x33,0x2e,0x34,0x39,0x30,0x30,0x32,0x20,0x32,0x34,0x2e,0x33,0x33,0x33, + 0x43,0x33,0x2e,0x30,0x33,0x30,0x30,0x32,0x20,0x32,0x34,0x2e,0x39,0x39,0x31,0x20, + 0x33,0x2e,0x31,0x32,0x32,0x30,0x32,0x20,0x32,0x35,0x2e,0x37,0x38,0x37,0x20,0x33, + 0x2e,0x36,0x37,0x34,0x30,0x32,0x20,0x32,0x36,0x2e,0x33,0x33,0x38,0x4c,0x35,0x2e, + 0x36,0x33,0x34,0x30,0x32,0x20,0x32,0x38,0x2e,0x32,0x39,0x37,0x43,0x36,0x2e,0x31, + 0x38,0x34,0x30,0x32,0x20,0x32,0x38,0x2e,0x38,0x34,0x37,0x20,0x36,0x2e,0x39,0x35, + 0x30,0x30,0x32,0x20,0x32,0x38,0x2e,0x39,0x30,0x39,0x20,0x37,0x2e,0x36,0x30,0x39, + 0x30,0x32,0x20,0x32,0x38,0x2e,0x34,0x39,0x35,0x4c,0x31,0x30,0x2e,0x35,0x34,0x39, + 0x20,0x32,0x36,0x2e,0x36,0x39,0x43,0x31,0x31,0x2e,0x30,0x36,0x39,0x20,0x32,0x36, + 0x2e,0x39,0x33,0x34,0x20,0x31,0x31,0x2e,0x36,0x33,0x35,0x20,0x32,0x37,0x2e,0x31, + 0x36,0x34,0x20,0x31,0x32,0x2e,0x32,0x33,0x32,0x20,0x32,0x37,0x2e,0x33,0x36,0x33, + 0x4c,0x31,0x33,0x2e,0x30,0x32,0x39,0x20,0x33,0x30,0x2e,0x37,0x33,0x43,0x31,0x33, + 0x2e,0x32,0x31,0x32,0x20,0x33,0x31,0x2e,0x35,0x31,0x20,0x31,0x33,0x2e,0x37,0x39, + 0x35,0x20,0x33,0x31,0x2e,0x39,0x38,0x35,0x20,0x31,0x34,0x2e,0x35,0x39,0x31,0x20, + 0x33,0x31,0x2e,0x39,0x38,0x35,0x5a,0x4d,0x31,0x36,0x20,0x32,0x31,0x2e,0x33,0x39, + 0x35,0x43,0x31,0x33,0x2e,0x30,0x33,0x20,0x32,0x31,0x2e,0x33,0x39,0x35,0x20,0x31, + 0x30,0x2e,0x35,0x39,0x35,0x20,0x31,0x38,0x2e,0x39,0x34,0x36,0x20,0x31,0x30,0x2e, + 0x35,0x39,0x35,0x20,0x31,0x35,0x2e,0x39,0x37,0x37,0x43,0x31,0x30,0x2e,0x35,0x39, + 0x35,0x20,0x31,0x33,0x2e,0x30,0x32,0x33,0x20,0x31,0x33,0x2e,0x30,0x33,0x20,0x31, + 0x30,0x2e,0x35,0x39,0x20,0x31,0x36,0x20,0x31,0x30,0x2e,0x35,0x39,0x43,0x31,0x38, + 0x2e,0x39,0x37,0x20,0x31,0x30,0x2e,0x35,0x39,0x20,0x32,0x31,0x2e,0x34,0x30,0x35, + 0x20,0x31,0x33,0x2e,0x30,0x32,0x34,0x20,0x32,0x31,0x2e,0x34,0x30,0x35,0x20,0x31, + 0x35,0x2e,0x39,0x37,0x37,0x43,0x32,0x31,0x2e,0x34,0x30,0x35,0x20,0x31,0x38,0x2e, + 0x39,0x34,0x36,0x20,0x31,0x38,0x2e,0x39,0x37,0x20,0x32,0x31,0x2e,0x33,0x39,0x35, + 0x20,0x31,0x36,0x20,0x32,0x31,0x2e,0x33,0x39,0x35,0x5a,0x22,0x20,0x66,0x69,0x6c, + 0x6c,0x3d,0x22,0x23,0x31,0x33,0x33,0x38,0x35,0x46,0x22,0x2f,0x3e,0xd,0xa,0x3c, + 0x2f,0x67,0x3e,0xd,0xa,0x3c,0x2f,0x67,0x3e,0xd,0xa,0x3c,0x64,0x65,0x66,0x73, + 0x3e,0xd,0xa,0x3c,0x63,0x6c,0x69,0x70,0x50,0x61,0x74,0x68,0x20,0x69,0x64,0x3d, + 0x22,0x63,0x6c,0x69,0x70,0x30,0x5f,0x34,0x5f,0x31,0x31,0x32,0x22,0x3e,0xd,0xa, + 0x3c,0x72,0x65,0x63,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x33,0x32,0x22, + 0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x33,0x32,0x22,0x20,0x66,0x69,0x6c, + 0x6c,0x3d,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x2f,0x63, + 0x6c,0x69,0x70,0x50,0x61,0x74,0x68,0x3e,0xd,0xa,0x3c,0x2f,0x64,0x65,0x66,0x73, + 0x3e,0xd,0xa,0x3c,0x2f,0x73,0x76,0x67,0x3e,0xd,0xa, + // fema-wing.svg + 0x0,0x0,0x34,0x55, + 0x3c, + 0x73,0x76,0x67,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x39,0x35,0x36,0x22,0x20, + 0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x38,0x38,0x38,0x22,0x20,0x76,0x69,0x65, + 0x77,0x42,0x6f,0x78,0x3d,0x22,0x30,0x20,0x30,0x20,0x39,0x35,0x36,0x20,0x38,0x38, + 0x38,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x6e,0x6f,0x6e,0x65,0x22,0x20,0x78, + 0x6d,0x6c,0x6e,0x73,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77, + 0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x30,0x2f,0x73,0x76,0x67, + 0x22,0x3e,0xd,0xa,0x3c,0x67,0x20,0x63,0x6c,0x69,0x70,0x2d,0x70,0x61,0x74,0x68, + 0x3d,0x22,0x75,0x72,0x6c,0x28,0x23,0x63,0x6c,0x69,0x70,0x30,0x5f,0x31,0x5f,0x37, + 0x39,0x29,0x22,0x3e,0xd,0xa,0x3c,0x67,0x20,0x6f,0x70,0x61,0x63,0x69,0x74,0x79, + 0x3d,0x22,0x30,0x2e,0x33,0x35,0x31,0x39,0x33,0x31,0x22,0x3e,0xd,0xa,0x3c,0x70, + 0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x32,0x30,0x34,0x36,0x2e,0x30,0x32,0x20, + 0x33,0x33,0x32,0x2e,0x33,0x33,0x31,0x43,0x32,0x30,0x34,0x32,0x2e,0x36,0x20,0x32, + 0x39,0x32,0x2e,0x36,0x33,0x37,0x20,0x32,0x30,0x33,0x39,0x2e,0x30,0x38,0x20,0x32, + 0x35,0x32,0x2e,0x31,0x35,0x39,0x20,0x32,0x30,0x33,0x35,0x2e,0x35,0x33,0x20,0x32, + 0x31,0x30,0x2e,0x39,0x33,0x32,0x43,0x31,0x39,0x39,0x33,0x2e,0x33,0x36,0x20,0x32, + 0x33,0x33,0x2e,0x39,0x35,0x38,0x20,0x31,0x39,0x33,0x37,0x2e,0x34,0x39,0x20,0x32, + 0x34,0x37,0x2e,0x32,0x34,0x34,0x20,0x31,0x38,0x38,0x31,0x2e,0x32,0x37,0x20,0x32, + 0x35,0x39,0x2e,0x38,0x31,0x37,0x43,0x31,0x38,0x36,0x38,0x2e,0x38,0x35,0x20,0x32, + 0x36,0x32,0x2e,0x35,0x39,0x35,0x20,0x31,0x38,0x35,0x32,0x2e,0x34,0x34,0x20,0x32, + 0x36,0x36,0x2e,0x30,0x31,0x34,0x20,0x31,0x38,0x33,0x35,0x2e,0x36,0x31,0x20,0x32, + 0x36,0x39,0x2e,0x34,0x33,0x32,0x43,0x31,0x37,0x38,0x36,0x2e,0x30,0x39,0x20,0x32, + 0x37,0x39,0x2e,0x34,0x37,0x35,0x20,0x31,0x37,0x33,0x35,0x2e,0x30,0x34,0x20,0x32, + 0x38,0x37,0x2e,0x34,0x34,0x38,0x20,0x31,0x36,0x38,0x33,0x2e,0x33,0x35,0x20,0x32, + 0x39,0x33,0x2e,0x33,0x31,0x38,0x4c,0x31,0x35,0x32,0x30,0x2e,0x36,0x38,0x20,0x33, + 0x31,0x31,0x2e,0x33,0x31,0x36,0x43,0x31,0x35,0x32,0x30,0x2e,0x39,0x37,0x20,0x33, + 0x31,0x30,0x2e,0x33,0x35,0x33,0x20,0x31,0x35,0x32,0x30,0x2e,0x35,0x34,0x20,0x33, + 0x30,0x37,0x2e,0x35,0x37,0x31,0x20,0x31,0x35,0x32,0x30,0x2e,0x34,0x37,0x20,0x33, + 0x30,0x37,0x2e,0x33,0x32,0x32,0x43,0x31,0x35,0x31,0x39,0x2e,0x30,0x38,0x20,0x33, + 0x30,0x33,0x2e,0x33,0x32,0x37,0x20,0x31,0x35,0x31,0x38,0x2e,0x39,0x34,0x20,0x33, + 0x30,0x32,0x2e,0x39,0x37,0x20,0x31,0x35,0x31,0x37,0x2e,0x35,0x38,0x20,0x33,0x30, + 0x31,0x2e,0x35,0x37,0x39,0x43,0x31,0x35,0x31,0x36,0x2e,0x35,0x39,0x20,0x33,0x30, + 0x30,0x2e,0x35,0x34,0x35,0x20,0x31,0x35,0x31,0x35,0x2e,0x32,0x37,0x20,0x32,0x39, + 0x38,0x2e,0x39,0x37,0x35,0x20,0x31,0x35,0x31,0x31,0x2e,0x36,0x33,0x20,0x32,0x39, + 0x39,0x2e,0x32,0x32,0x34,0x43,0x31,0x35,0x30,0x38,0x2e,0x31,0x33,0x20,0x32,0x39, + 0x39,0x2e,0x35,0x30,0x38,0x20,0x31,0x35,0x30,0x38,0x2e,0x36,0x33,0x20,0x33,0x30, + 0x31,0x2e,0x32,0x35,0x36,0x20,0x31,0x35,0x30,0x35,0x2e,0x36,0x37,0x20,0x33,0x30, + 0x30,0x2e,0x38,0x32,0x37,0x43,0x31,0x35,0x30,0x34,0x2e,0x35,0x33,0x20,0x33,0x30, + 0x30,0x2e,0x36,0x38,0x34,0x20,0x31,0x35,0x30,0x33,0x2e,0x31,0x20,0x32,0x39,0x38, + 0x2e,0x31,0x38,0x37,0x20,0x31,0x34,0x39,0x38,0x2e,0x36,0x38,0x20,0x32,0x39,0x39, + 0x2e,0x39,0x36,0x39,0x43,0x31,0x34,0x39,0x37,0x2e,0x34,0x33,0x20,0x33,0x30,0x30, + 0x2e,0x34,0x36,0x38,0x20,0x31,0x34,0x39,0x36,0x2e,0x37,0x35,0x20,0x33,0x30,0x32, + 0x2e,0x34,0x32,0x39,0x20,0x31,0x34,0x39,0x34,0x2e,0x37,0x35,0x20,0x33,0x30,0x32, + 0x2e,0x37,0x31,0x34,0x43,0x31,0x34,0x39,0x32,0x2e,0x36,0x39,0x20,0x33,0x30,0x33, + 0x2e,0x30,0x33,0x34,0x20,0x31,0x34,0x39,0x30,0x2e,0x30,0x38,0x20,0x33,0x30,0x30, + 0x2e,0x32,0x31,0x36,0x20,0x31,0x34,0x38,0x37,0x2e,0x36,0x32,0x20,0x33,0x30,0x30, + 0x2e,0x33,0x39,0x34,0x43,0x31,0x34,0x38,0x33,0x2e,0x33,0x20,0x33,0x30,0x30,0x2e, + 0x37,0x31,0x33,0x20,0x31,0x34,0x38,0x33,0x2e,0x32,0x20,0x33,0x30,0x33,0x2e,0x35, + 0x36,0x36,0x20,0x31,0x34,0x38,0x31,0x2e,0x33,0x34,0x20,0x33,0x30,0x33,0x2e,0x36, + 0x37,0x33,0x43,0x31,0x34,0x38,0x30,0x2e,0x31,0x36,0x20,0x33,0x30,0x33,0x2e,0x37, + 0x34,0x34,0x20,0x31,0x34,0x37,0x38,0x2e,0x39,0x39,0x20,0x33,0x30,0x32,0x2e,0x37, + 0x38,0x31,0x20,0x31,0x34,0x37,0x37,0x2e,0x35,0x32,0x20,0x33,0x30,0x32,0x2e,0x34, + 0x35,0x39,0x43,0x31,0x34,0x37,0x36,0x2e,0x35,0x36,0x20,0x33,0x30,0x32,0x2e,0x32, + 0x34,0x35,0x20,0x31,0x34,0x37,0x35,0x2e,0x32,0x38,0x20,0x33,0x30,0x31,0x2e,0x39, + 0x32,0x34,0x20,0x31,0x34,0x37,0x33,0x2e,0x38,0x39,0x20,0x33,0x30,0x32,0x2e,0x36, + 0x33,0x36,0x43,0x31,0x34,0x36,0x39,0x2e,0x32,0x38,0x20,0x33,0x30,0x34,0x2e,0x39, + 0x38,0x39,0x20,0x31,0x34,0x36,0x39,0x2e,0x37,0x38,0x20,0x33,0x30,0x38,0x2e,0x33, + 0x37,0x37,0x20,0x31,0x34,0x36,0x38,0x2e,0x38,0x35,0x20,0x33,0x31,0x37,0x2e,0x31, + 0x35,0x4c,0x31,0x32,0x34,0x39,0x2e,0x37,0x39,0x20,0x33,0x34,0x31,0x2e,0x34,0x30, + 0x38,0x4c,0x31,0x32,0x35,0x30,0x2e,0x38,0x32,0x20,0x33,0x35,0x34,0x2e,0x32,0x38, + 0x33,0x43,0x31,0x32,0x39,0x35,0x2e,0x39,0x31,0x20,0x33,0x34,0x39,0x2e,0x37,0x36, + 0x37,0x20,0x31,0x33,0x33,0x39,0x2e,0x35,0x37,0x20,0x33,0x34,0x35,0x2e,0x36,0x37, + 0x38,0x20,0x31,0x33,0x38,0x33,0x2e,0x31,0x36,0x20,0x33,0x34,0x32,0x2e,0x31,0x36, + 0x43,0x31,0x34,0x31,0x31,0x2e,0x34,0x31,0x20,0x33,0x33,0x39,0x2e,0x38,0x38,0x36, + 0x20,0x31,0x34,0x34,0x31,0x2e,0x38,0x38,0x20,0x33,0x33,0x36,0x2e,0x38,0x39,0x39, + 0x20,0x31,0x34,0x37,0x30,0x2e,0x31,0x33,0x20,0x33,0x33,0x34,0x2e,0x36,0x32,0x35, + 0x43,0x31,0x34,0x37,0x33,0x2e,0x32,0x37,0x20,0x33,0x34,0x30,0x2e,0x32,0x36,0x20, + 0x31,0x34,0x37,0x36,0x2e,0x33,0x34,0x20,0x33,0x34,0x32,0x2e,0x38,0x32,0x39,0x20, + 0x31,0x34,0x37,0x34,0x2e,0x38,0x37,0x20,0x33,0x34,0x37,0x2e,0x31,0x30,0x38,0x43, + 0x31,0x34,0x37,0x34,0x2e,0x38,0x37,0x20,0x33,0x34,0x37,0x2e,0x31,0x30,0x38,0x20, + 0x31,0x34,0x32,0x31,0x2e,0x35,0x32,0x20,0x34,0x31,0x39,0x2e,0x39,0x38,0x37,0x20, + 0x31,0x33,0x35,0x34,0x2e,0x38,0x38,0x20,0x34,0x35,0x38,0x2e,0x32,0x33,0x34,0x43, + 0x31,0x33,0x32,0x35,0x2e,0x37,0x33,0x20,0x34,0x37,0x34,0x2e,0x39,0x35,0x31,0x20, + 0x31,0x32,0x35,0x32,0x2e,0x35,0x37,0x20,0x34,0x37,0x30,0x2e,0x32,0x35,0x38,0x20, + 0x31,0x32,0x31,0x35,0x2e,0x32,0x39,0x20,0x34,0x37,0x30,0x2e,0x39,0x39,0x36,0x43, + 0x31,0x31,0x39,0x33,0x2e,0x33,0x32,0x20,0x34,0x37,0x31,0x2e,0x34,0x35,0x33,0x20, + 0x31,0x31,0x37,0x34,0x2e,0x36,0x39,0x20,0x34,0x37,0x32,0x2e,0x36,0x36,0x31,0x20, + 0x31,0x31,0x35,0x38,0x2e,0x39,0x33,0x20,0x34,0x37,0x34,0x2e,0x34,0x30,0x34,0x43, + 0x31,0x31,0x35,0x38,0x2e,0x35,0x20,0x34,0x37,0x30,0x2e,0x36,0x39,0x34,0x20,0x31, + 0x31,0x35,0x38,0x2e,0x32,0x35,0x20,0x34,0x36,0x36,0x2e,0x39,0x38,0x36,0x20,0x31, + 0x31,0x35,0x38,0x2e,0x36,0x34,0x20,0x34,0x36,0x33,0x2e,0x32,0x34,0x31,0x43,0x31, + 0x31,0x35,0x38,0x2e,0x37,0x35,0x20,0x34,0x36,0x32,0x2e,0x30,0x36,0x34,0x20,0x31, + 0x31,0x35,0x39,0x2e,0x30,0x37,0x20,0x34,0x36,0x30,0x2e,0x39,0x32,0x33,0x20,0x31, + 0x31,0x35,0x39,0x2e,0x32,0x39,0x20,0x34,0x35,0x39,0x2e,0x38,0x35,0x33,0x4c,0x31, + 0x31,0x36,0x30,0x2e,0x38,0x32,0x20,0x34,0x35,0x36,0x2e,0x37,0x38,0x37,0x43,0x31, + 0x31,0x36,0x32,0x2e,0x37,0x35,0x20,0x34,0x35,0x32,0x2e,0x33,0x36,0x35,0x20,0x31, + 0x31,0x36,0x34,0x2e,0x36,0x38,0x20,0x34,0x34,0x38,0x2e,0x31,0x35,0x37,0x20,0x31, + 0x31,0x36,0x36,0x2e,0x33,0x39,0x20,0x34,0x34,0x33,0x2e,0x38,0x37,0x38,0x43,0x31, + 0x31,0x36,0x38,0x2e,0x32,0x31,0x20,0x34,0x33,0x39,0x2e,0x33,0x35,0x20,0x31,0x31, + 0x36,0x39,0x2e,0x38,0x35,0x20,0x34,0x33,0x34,0x2e,0x37,0x31,0x34,0x20,0x31,0x31, + 0x37,0x31,0x2e,0x36,0x20,0x34,0x33,0x30,0x2e,0x31,0x35,0x43,0x31,0x31,0x37,0x32, + 0x2e,0x36,0x34,0x20,0x34,0x32,0x37,0x2e,0x34,0x37,0x35,0x20,0x31,0x31,0x37,0x33, + 0x2e,0x36,0x34,0x20,0x34,0x32,0x34,0x2e,0x38,0x30,0x31,0x20,0x31,0x31,0x37,0x34, + 0x2e,0x38,0x35,0x20,0x34,0x32,0x32,0x2e,0x32,0x33,0x34,0x43,0x31,0x31,0x37,0x37, + 0x2e,0x31,0x20,0x34,0x31,0x37,0x2e,0x33,0x38,0x34,0x20,0x31,0x31,0x37,0x38,0x2e, + 0x38,0x35,0x20,0x34,0x31,0x32,0x2e,0x33,0x39,0x32,0x20,0x31,0x31,0x37,0x39,0x2e, + 0x36,0x34,0x20,0x34,0x30,0x37,0x2e,0x30,0x37,0x38,0x43,0x31,0x31,0x38,0x30,0x2e, + 0x31,0x20,0x34,0x30,0x33,0x2e,0x38,0x36,0x39,0x20,0x31,0x31,0x38,0x30,0x2e,0x37, + 0x34,0x20,0x34,0x30,0x30,0x2e,0x36,0x32,0x34,0x20,0x31,0x31,0x38,0x31,0x2e,0x36, + 0x34,0x20,0x33,0x39,0x37,0x2e,0x34,0x38,0x36,0x43,0x31,0x31,0x38,0x33,0x2e,0x32, + 0x31,0x20,0x33,0x39,0x31,0x2e,0x38,0x38,0x37,0x20,0x31,0x31,0x38,0x37,0x2e,0x31, + 0x33,0x20,0x33,0x38,0x38,0x2e,0x37,0x38,0x36,0x20,0x31,0x31,0x39,0x32,0x2e,0x38, + 0x34,0x20,0x33,0x38,0x38,0x2e,0x31,0x38,0x31,0x43,0x31,0x31,0x39,0x37,0x2e,0x35, + 0x38,0x20,0x33,0x38,0x37,0x2e,0x36,0x38,0x33,0x20,0x31,0x32,0x30,0x32,0x2e,0x33, + 0x36,0x20,0x33,0x38,0x37,0x2e,0x34,0x37,0x31,0x20,0x31,0x32,0x30,0x37,0x2e,0x31, + 0x34,0x20,0x33,0x38,0x37,0x2e,0x31,0x35,0x31,0x43,0x31,0x32,0x31,0x33,0x2e,0x31, + 0x20,0x33,0x38,0x36,0x2e,0x37,0x32,0x35,0x20,0x31,0x32,0x31,0x38,0x2e,0x37,0x20, + 0x33,0x38,0x35,0x2e,0x31,0x32,0x32,0x20,0x31,0x32,0x32,0x33,0x2e,0x37,0x33,0x20, + 0x33,0x38,0x31,0x2e,0x39,0x31,0x33,0x43,0x31,0x32,0x33,0x30,0x2e,0x35,0x31,0x20, + 0x33,0x37,0x37,0x2e,0x35,0x36,0x34,0x20,0x31,0x32,0x33,0x31,0x2e,0x38,0x37,0x20, + 0x33,0x37,0x31,0x2e,0x36,0x34,0x35,0x20,0x31,0x32,0x32,0x37,0x2e,0x36,0x36,0x20, + 0x33,0x36,0x34,0x2e,0x37,0x32,0x35,0x43,0x31,0x32,0x32,0x35,0x2e,0x39,0x35,0x20, + 0x33,0x36,0x31,0x2e,0x39,0x34,0x33,0x20,0x31,0x32,0x32,0x35,0x2e,0x32,0x34,0x20, + 0x33,0x35,0x39,0x2e,0x31,0x39,0x37,0x20,0x31,0x32,0x32,0x37,0x2e,0x31,0x37,0x20, + 0x33,0x35,0x36,0x2e,0x33,0x34,0x34,0x43,0x31,0x32,0x32,0x38,0x2e,0x38,0x34,0x20, + 0x33,0x35,0x33,0x2e,0x38,0x34,0x38,0x20,0x31,0x32,0x32,0x38,0x2e,0x36,0x37,0x20, + 0x33,0x35,0x31,0x2e,0x34,0x32,0x33,0x20,0x31,0x32,0x32,0x37,0x2e,0x31,0x37,0x20, + 0x33,0x34,0x39,0x2e,0x30,0x36,0x39,0x43,0x31,0x32,0x32,0x35,0x2e,0x37,0x34,0x20, + 0x33,0x34,0x36,0x2e,0x37,0x35,0x31,0x20,0x31,0x32,0x32,0x33,0x2e,0x34,0x32,0x20, + 0x33,0x34,0x36,0x2e,0x36,0x30,0x37,0x20,0x31,0x32,0x32,0x31,0x20,0x33,0x34,0x37, + 0x2e,0x30,0x33,0x35,0x43,0x31,0x32,0x32,0x30,0x2e,0x36,0x20,0x33,0x34,0x37,0x2e, + 0x31,0x30,0x36,0x20,0x31,0x32,0x32,0x30,0x2e,0x31,0x38,0x20,0x33,0x34,0x37,0x2e, + 0x30,0x37,0x20,0x31,0x32,0x31,0x39,0x2e,0x32,0x38,0x20,0x33,0x34,0x37,0x2e,0x31, + 0x34,0x31,0x43,0x31,0x32,0x32,0x30,0x2e,0x31,0x31,0x20,0x33,0x34,0x36,0x2e,0x31, + 0x37,0x38,0x20,0x31,0x32,0x32,0x30,0x2e,0x37,0x31,0x20,0x33,0x34,0x35,0x2e,0x34, + 0x36,0x35,0x20,0x31,0x32,0x32,0x31,0x2e,0x33,0x32,0x20,0x33,0x34,0x34,0x2e,0x37, + 0x31,0x37,0x43,0x31,0x32,0x32,0x32,0x2e,0x34,0x32,0x20,0x33,0x34,0x33,0x2e,0x33, + 0x32,0x36,0x20,0x31,0x32,0x32,0x33,0x2e,0x36,0x34,0x20,0x33,0x34,0x32,0x2e,0x30, + 0x30,0x37,0x20,0x31,0x32,0x32,0x34,0x2e,0x35,0x37,0x20,0x33,0x34,0x30,0x2e,0x35, + 0x30,0x39,0x43,0x31,0x32,0x32,0x35,0x2e,0x37,0x34,0x20,0x33,0x33,0x38,0x2e,0x36, + 0x31,0x39,0x20,0x31,0x32,0x32,0x35,0x2e,0x38,0x39,0x20,0x33,0x33,0x36,0x2e,0x37, + 0x32,0x39,0x20,0x31,0x32,0x32,0x34,0x2e,0x30,0x33,0x20,0x33,0x33,0x34,0x2e,0x39, + 0x38,0x31,0x43,0x31,0x32,0x32,0x33,0x2e,0x31,0x34,0x20,0x33,0x33,0x34,0x2e,0x31, + 0x36,0x31,0x20,0x31,0x32,0x32,0x32,0x2e,0x35,0x20,0x33,0x33,0x33,0x2e,0x30,0x35, + 0x35,0x20,0x31,0x32,0x32,0x31,0x2e,0x38,0x32,0x20,0x33,0x33,0x32,0x2e,0x30,0x35, + 0x36,0x43,0x31,0x32,0x31,0x39,0x2e,0x36,0x38,0x20,0x33,0x32,0x38,0x2e,0x37,0x37, + 0x35,0x20,0x31,0x32,0x31,0x39,0x2e,0x38,0x33,0x20,0x33,0x32,0x37,0x2e,0x34,0x32, + 0x20,0x31,0x32,0x32,0x32,0x2e,0x35,0x20,0x33,0x32,0x34,0x2e,0x34,0x36,0x31,0x43, + 0x31,0x32,0x32,0x33,0x2e,0x30,0x34,0x20,0x33,0x32,0x33,0x2e,0x38,0x35,0x34,0x20, + 0x31,0x32,0x32,0x33,0x2e,0x37,0x35,0x20,0x33,0x32,0x33,0x2e,0x33,0x35,0x35,0x20, + 0x31,0x32,0x32,0x34,0x2e,0x32,0x31,0x20,0x33,0x32,0x32,0x2e,0x37,0x31,0x33,0x43, + 0x31,0x32,0x32,0x35,0x2e,0x32,0x35,0x20,0x33,0x32,0x31,0x2e,0x31,0x30,0x39,0x20, + 0x31,0x32,0x32,0x36,0x2e,0x33,0x39,0x20,0x33,0x31,0x39,0x2e,0x35,0x34,0x20,0x31, + 0x32,0x32,0x37,0x2e,0x30,0x37,0x20,0x33,0x31,0x37,0x2e,0x37,0x39,0x33,0x43,0x31, + 0x32,0x32,0x38,0x2e,0x34,0x33,0x20,0x33,0x31,0x34,0x2e,0x33,0x33,0x34,0x20,0x31, + 0x32,0x32,0x37,0x2e,0x37,0x31,0x20,0x33,0x31,0x31,0x2e,0x36,0x39,0x35,0x20,0x31, + 0x32,0x32,0x34,0x2e,0x36,0x31,0x20,0x33,0x30,0x39,0x2e,0x35,0x35,0x34,0x43,0x31, + 0x32,0x32,0x32,0x2e,0x38,0x36,0x20,0x33,0x30,0x38,0x2e,0x33,0x30,0x35,0x20,0x31, + 0x32,0x32,0x30,0x2e,0x38,0x33,0x20,0x33,0x30,0x37,0x2e,0x32,0x37,0x31,0x20,0x31, + 0x32,0x31,0x38,0x2e,0x38,0x20,0x33,0x30,0x36,0x2e,0x36,0x39,0x39,0x43,0x31,0x32, + 0x31,0x35,0x2e,0x31,0x36,0x20,0x33,0x30,0x35,0x2e,0x36,0x36,0x34,0x20,0x31,0x32, + 0x31,0x31,0x2e,0x39,0x38,0x20,0x33,0x30,0x33,0x2e,0x39,0x35,0x31,0x20,0x31,0x32, + 0x30,0x38,0x2e,0x39,0x39,0x20,0x33,0x30,0x31,0x2e,0x37,0x37,0x35,0x43,0x31,0x32, + 0x30,0x36,0x2e,0x32,0x34,0x20,0x32,0x39,0x39,0x2e,0x37,0x37,0x37,0x20,0x31,0x32, + 0x30,0x33,0x2e,0x34,0x33,0x20,0x32,0x39,0x37,0x2e,0x38,0x31,0x35,0x20,0x31,0x32, + 0x30,0x30,0x2e,0x37,0x31,0x20,0x32,0x39,0x35,0x2e,0x37,0x34,0x36,0x43,0x31,0x31, + 0x39,0x39,0x2e,0x36,0x34,0x20,0x32,0x39,0x34,0x2e,0x39,0x32,0x35,0x20,0x31,0x31, + 0x39,0x38,0x2e,0x37,0x32,0x20,0x32,0x39,0x33,0x2e,0x39,0x36,0x32,0x20,0x31,0x31, + 0x39,0x37,0x2e,0x36,0x35,0x20,0x32,0x39,0x32,0x2e,0x39,0x36,0x33,0x43,0x31,0x31, + 0x39,0x38,0x2e,0x34,0x37,0x20,0x32,0x39,0x30,0x2e,0x39,0x33,0x31,0x20,0x31,0x32, + 0x30,0x31,0x2e,0x32,0x35,0x20,0x32,0x38,0x39,0x2e,0x36,0x31,0x32,0x20,0x31,0x31, + 0x39,0x39,0x2e,0x32,0x39,0x20,0x32,0x38,0x36,0x2e,0x38,0x36,0x35,0x43,0x31,0x31, + 0x39,0x38,0x2e,0x34,0x33,0x20,0x32,0x38,0x37,0x2e,0x34,0x20,0x31,0x31,0x39,0x37, + 0x2e,0x36,0x31,0x20,0x32,0x38,0x37,0x2e,0x39,0x33,0x35,0x20,0x31,0x31,0x39,0x36, + 0x2e,0x35,0x34,0x20,0x32,0x38,0x38,0x2e,0x36,0x34,0x38,0x43,0x31,0x31,0x39,0x35, + 0x2e,0x34,0x34,0x20,0x32,0x38,0x34,0x2e,0x32,0x32,0x35,0x20,0x31,0x31,0x39,0x38, + 0x2e,0x30,0x31,0x20,0x32,0x38,0x31,0x2e,0x30,0x31,0x36,0x20,0x31,0x31,0x39,0x39, + 0x2e,0x36,0x35,0x20,0x32,0x37,0x37,0x2e,0x37,0x43,0x31,0x31,0x39,0x34,0x2e,0x33, + 0x37,0x20,0x32,0x37,0x32,0x2e,0x37,0x37,0x37,0x20,0x31,0x31,0x39,0x31,0x2e,0x32, + 0x20,0x32,0x36,0x36,0x2e,0x37,0x31,0x34,0x20,0x31,0x31,0x38,0x37,0x2e,0x33,0x35, + 0x20,0x32,0x36,0x31,0x2e,0x31,0x34,0x39,0x43,0x31,0x31,0x38,0x32,0x2e,0x37,0x38, + 0x20,0x32,0x35,0x34,0x2e,0x35,0x38,0x36,0x20,0x31,0x31,0x37,0x37,0x2e,0x35,0x38, + 0x20,0x32,0x34,0x38,0x2e,0x36,0x36,0x34,0x20,0x31,0x31,0x37,0x31,0x2e,0x32,0x33, + 0x20,0x32,0x34,0x33,0x2e,0x38,0x34,0x38,0x43,0x31,0x31,0x36,0x37,0x2e,0x37,0x20, + 0x32,0x34,0x31,0x2e,0x31,0x37,0x32,0x20,0x31,0x31,0x36,0x33,0x2e,0x36,0x33,0x20, + 0x32,0x33,0x39,0x2e,0x32,0x31,0x20,0x31,0x31,0x35,0x39,0x2e,0x37,0x35,0x20,0x32, + 0x33,0x36,0x2e,0x38,0x39,0x43,0x31,0x31,0x36,0x30,0x2e,0x36,0x37,0x20,0x32,0x33, + 0x34,0x2e,0x39,0x36,0x35,0x20,0x31,0x31,0x36,0x31,0x2e,0x38,0x39,0x20,0x32,0x33, + 0x32,0x2e,0x39,0x36,0x38,0x20,0x31,0x31,0x36,0x32,0x2e,0x36,0x20,0x32,0x33,0x30, + 0x2e,0x38,0x32,0x39,0x43,0x31,0x31,0x36,0x34,0x2e,0x31,0x20,0x32,0x32,0x36,0x2e, + 0x35,0x31,0x34,0x20,0x31,0x31,0x36,0x32,0x2e,0x37,0x31,0x20,0x32,0x32,0x33,0x2e, + 0x32,0x36,0x38,0x20,0x31,0x31,0x35,0x38,0x2e,0x37,0x39,0x20,0x32,0x32,0x31,0x2e, + 0x32,0x37,0x43,0x31,0x31,0x35,0x38,0x2e,0x34,0x37,0x20,0x32,0x32,0x31,0x2e,0x31, + 0x32,0x37,0x20,0x31,0x31,0x35,0x38,0x2e,0x30,0x34,0x20,0x32,0x32,0x31,0x2e,0x32, + 0x33,0x34,0x20,0x31,0x31,0x35,0x37,0x2e,0x36,0x35,0x20,0x32,0x32,0x31,0x2e,0x31, + 0x39,0x38,0x43,0x31,0x31,0x35,0x38,0x2e,0x36,0x20,0x32,0x32,0x34,0x2e,0x38,0x31, + 0x32,0x20,0x31,0x31,0x35,0x38,0x2e,0x34,0x20,0x32,0x32,0x37,0x2e,0x32,0x33,0x37, + 0x20,0x31,0x31,0x35,0x37,0x2e,0x30,0x37,0x20,0x32,0x32,0x38,0x2e,0x34,0x37,0x33, + 0x43,0x31,0x31,0x35,0x36,0x2e,0x37,0x39,0x20,0x32,0x32,0x37,0x2e,0x38,0x33,0x31, + 0x20,0x31,0x31,0x35,0x36,0x2e,0x34,0x37,0x20,0x32,0x32,0x37,0x2e,0x32,0x36,0x31, + 0x20,0x31,0x31,0x35,0x36,0x2e,0x32,0x39,0x20,0x32,0x32,0x36,0x2e,0x36,0x35,0x34, + 0x43,0x31,0x31,0x35,0x33,0x2e,0x32,0x39,0x20,0x32,0x31,0x36,0x2e,0x39,0x35,0x33, + 0x20,0x31,0x31,0x34,0x36,0x2e,0x33,0x38,0x20,0x32,0x31,0x31,0x2e,0x34,0x39,0x35, + 0x20,0x31,0x31,0x33,0x36,0x2e,0x38,0x32,0x20,0x32,0x30,0x39,0x2e,0x33,0x31,0x37, + 0x43,0x31,0x31,0x32,0x37,0x2e,0x39,0x20,0x32,0x30,0x37,0x2e,0x32,0x38,0x31,0x20, + 0x31,0x31,0x31,0x38,0x2e,0x38,0x34,0x20,0x32,0x30,0x36,0x2e,0x30,0x36,0x36,0x20, + 0x31,0x31,0x30,0x39,0x2e,0x36,0x34,0x20,0x32,0x30,0x37,0x2e,0x31,0x33,0x33,0x43, + 0x31,0x31,0x30,0x38,0x2e,0x37,0x34,0x20,0x32,0x30,0x37,0x2e,0x32,0x34,0x20,0x31, + 0x31,0x30,0x37,0x2e,0x38,0x32,0x20,0x32,0x30,0x37,0x2e,0x32,0x34,0x20,0x31,0x31, + 0x30,0x36,0x2e,0x38,0x39,0x20,0x32,0x30,0x37,0x2e,0x31,0x33,0x33,0x43,0x31,0x31, + 0x31,0x32,0x2e,0x35,0x36,0x20,0x32,0x30,0x34,0x2e,0x37,0x30,0x39,0x20,0x31,0x31, + 0x31,0x38,0x2e,0x34,0x38,0x20,0x32,0x30,0x33,0x2e,0x34,0x39,0x38,0x20,0x31,0x31, + 0x32,0x34,0x2e,0x35,0x38,0x20,0x32,0x30,0x32,0x2e,0x38,0x39,0x34,0x43,0x31,0x31, + 0x31,0x38,0x2e,0x31,0x36,0x20,0x32,0x30,0x32,0x2e,0x30,0x33,0x36,0x20,0x31,0x31, + 0x31,0x31,0x2e,0x39,0x39,0x20,0x32,0x30,0x33,0x2e,0x30,0x33,0x33,0x20,0x31,0x31, + 0x30,0x36,0x2e,0x32,0x35,0x20,0x32,0x30,0x35,0x2e,0x37,0x37,0x37,0x43,0x31,0x31, + 0x30,0x30,0x2e,0x35,0x37,0x20,0x32,0x30,0x38,0x2e,0x34,0x38,0x36,0x20,0x31,0x30, + 0x39,0x34,0x2e,0x35,0x38,0x20,0x32,0x31,0x30,0x2e,0x33,0x30,0x33,0x20,0x31,0x30, + 0x38,0x38,0x2e,0x37,0x37,0x20,0x32,0x31,0x32,0x2e,0x36,0x31,0x39,0x43,0x31,0x30, + 0x38,0x32,0x2e,0x30,0x36,0x20,0x32,0x31,0x35,0x2e,0x33,0x32,0x38,0x20,0x31,0x30, + 0x37,0x35,0x2e,0x36,0x20,0x32,0x31,0x38,0x2e,0x36,0x34,0x33,0x20,0x31,0x30,0x37, + 0x30,0x2e,0x33,0x39,0x20,0x32,0x32,0x33,0x2e,0x38,0x38,0x33,0x43,0x31,0x30,0x36, + 0x39,0x2e,0x33,0x32,0x20,0x32,0x32,0x34,0x2e,0x39,0x35,0x33,0x20,0x31,0x30,0x36, + 0x38,0x2e,0x33,0x39,0x20,0x32,0x32,0x36,0x2e,0x30,0x39,0x34,0x20,0x31,0x30,0x36, + 0x37,0x2e,0x33,0x36,0x20,0x32,0x32,0x37,0x2e,0x31,0x39,0x39,0x43,0x31,0x30,0x36, + 0x36,0x2e,0x37,0x32,0x20,0x32,0x32,0x37,0x2e,0x38,0x37,0x37,0x20,0x31,0x30,0x36, + 0x36,0x2e,0x31,0x38,0x20,0x32,0x32,0x38,0x2e,0x38,0x37,0x35,0x20,0x31,0x30,0x36, + 0x35,0x2e,0x33,0x36,0x20,0x32,0x32,0x39,0x2e,0x31,0x39,0x36,0x43,0x31,0x30,0x35, + 0x37,0x2e,0x36,0x35,0x20,0x32,0x33,0x32,0x2e,0x34,0x30,0x33,0x20,0x31,0x30,0x35, + 0x32,0x2e,0x39,0x38,0x20,0x32,0x33,0x38,0x2e,0x37,0x38,0x35,0x20,0x31,0x30,0x34, + 0x38,0x2e,0x32,0x33,0x20,0x32,0x34,0x35,0x2e,0x31,0x33,0x32,0x43,0x31,0x30,0x34, + 0x36,0x2e,0x32,0x20,0x32,0x34,0x37,0x2e,0x38,0x34,0x32,0x20,0x31,0x30,0x34,0x33, + 0x2e,0x38,0x38,0x20,0x32,0x35,0x30,0x2e,0x33,0x37,0x33,0x20,0x31,0x30,0x34,0x31, + 0x2e,0x36,0x20,0x32,0x35,0x32,0x2e,0x39,0x30,0x34,0x43,0x31,0x30,0x34,0x30,0x2e, + 0x31,0x20,0x32,0x35,0x34,0x2e,0x35,0x38,0x20,0x31,0x30,0x33,0x38,0x2e,0x31,0x34, + 0x20,0x32,0x35,0x35,0x2e,0x34,0x20,0x31,0x30,0x33,0x35,0x2e,0x38,0x35,0x20,0x32, + 0x35,0x35,0x2e,0x37,0x32,0x43,0x31,0x30,0x32,0x36,0x2e,0x36,0x38,0x20,0x32,0x35, + 0x37,0x2e,0x31,0x30,0x38,0x20,0x31,0x30,0x32,0x36,0x2e,0x38,0x33,0x20,0x32,0x35, + 0x38,0x2e,0x36,0x34,0x32,0x20,0x31,0x30,0x32,0x36,0x2e,0x36,0x35,0x20,0x32,0x36, + 0x38,0x2e,0x32,0x37,0x31,0x43,0x31,0x30,0x32,0x36,0x2e,0x36,0x34,0x20,0x32,0x36, + 0x38,0x2e,0x39,0x31,0x33,0x20,0x31,0x30,0x32,0x36,0x2e,0x39,0x37,0x20,0x32,0x36, + 0x39,0x2e,0x35,0x35,0x35,0x20,0x31,0x30,0x32,0x36,0x2e,0x35,0x34,0x20,0x32,0x37, + 0x30,0x2e,0x35,0x35,0x33,0x43,0x31,0x30,0x32,0x35,0x2e,0x34,0x33,0x20,0x32,0x36, + 0x39,0x2e,0x31,0x36,0x32,0x20,0x31,0x30,0x32,0x34,0x2e,0x33,0x33,0x20,0x32,0x36, + 0x37,0x2e,0x37,0x33,0x35,0x20,0x31,0x30,0x32,0x33,0x2e,0x31,0x39,0x20,0x32,0x36, + 0x36,0x2e,0x33,0x34,0x34,0x43,0x31,0x30,0x32,0x31,0x2e,0x39,0x20,0x32,0x36,0x34, + 0x2e,0x37,0x37,0x34,0x20,0x31,0x30,0x32,0x30,0x2e,0x37,0x33,0x20,0x32,0x36,0x33, + 0x2e,0x30,0x32,0x37,0x20,0x31,0x30,0x31,0x39,0x2e,0x32,0x33,0x20,0x32,0x36,0x31, + 0x2e,0x37,0x30,0x37,0x43,0x31,0x30,0x31,0x37,0x2e,0x31,0x36,0x20,0x32,0x35,0x39, + 0x2e,0x39,0x32,0x33,0x20,0x31,0x30,0x31,0x34,0x2e,0x37,0x20,0x32,0x35,0x39,0x2e, + 0x33,0x31,0x36,0x20,0x31,0x30,0x31,0x32,0x2e,0x33,0x31,0x20,0x32,0x36,0x30,0x2e, + 0x33,0x31,0x34,0x43,0x31,0x30,0x31,0x34,0x2e,0x36,0x36,0x20,0x32,0x36,0x31,0x2e, + 0x35,0x32,0x37,0x20,0x31,0x30,0x31,0x37,0x2e,0x31,0x39,0x20,0x32,0x36,0x32,0x2e, + 0x36,0x36,0x39,0x20,0x31,0x30,0x31,0x39,0x2e,0x35,0x35,0x20,0x32,0x36,0x34,0x2e, + 0x30,0x39,0x36,0x43,0x31,0x30,0x32,0x30,0x2e,0x35,0x35,0x20,0x32,0x36,0x34,0x2e, + 0x37,0x30,0x33,0x20,0x31,0x30,0x32,0x31,0x2e,0x32,0x32,0x20,0x32,0x36,0x35,0x2e, + 0x38,0x38,0x20,0x31,0x30,0x32,0x31,0x2e,0x39,0x34,0x20,0x32,0x36,0x36,0x2e,0x38, + 0x37,0x39,0x43,0x31,0x30,0x32,0x33,0x2e,0x32,0x39,0x20,0x32,0x36,0x38,0x2e,0x37, + 0x33,0x33,0x20,0x31,0x30,0x32,0x34,0x2e,0x35,0x38,0x20,0x32,0x37,0x30,0x2e,0x36, + 0x36,0x20,0x31,0x30,0x32,0x36,0x2e,0x30,0x37,0x20,0x32,0x37,0x32,0x2e,0x38,0x33, + 0x35,0x43,0x31,0x30,0x32,0x34,0x2e,0x34,0x20,0x32,0x37,0x33,0x2e,0x37,0x39,0x38, + 0x20,0x31,0x30,0x32,0x32,0x2e,0x36,0x31,0x20,0x32,0x37,0x34,0x2e,0x38,0x36,0x37, + 0x20,0x31,0x30,0x32,0x30,0x2e,0x36,0x31,0x20,0x32,0x37,0x36,0x2e,0x30,0x30,0x38, + 0x43,0x31,0x30,0x31,0x36,0x2e,0x30,0x35,0x20,0x32,0x37,0x34,0x2e,0x36,0x35,0x31, + 0x20,0x31,0x30,0x31,0x31,0x2e,0x36,0x36,0x20,0x32,0x37,0x35,0x2e,0x35,0x34,0x32, + 0x20,0x31,0x30,0x30,0x37,0x2e,0x32,0x34,0x20,0x32,0x37,0x37,0x2e,0x34,0x33,0x43, + 0x31,0x30,0x30,0x34,0x2e,0x39,0x35,0x20,0x32,0x37,0x38,0x2e,0x33,0x39,0x33,0x20, + 0x31,0x30,0x30,0x32,0x2e,0x33,0x35,0x20,0x32,0x37,0x38,0x2e,0x35,0x33,0x35,0x20, + 0x39,0x39,0x39,0x2e,0x39,0x32,0x34,0x20,0x32,0x37,0x39,0x2e,0x30,0x33,0x33,0x43, + 0x31,0x30,0x30,0x33,0x2e,0x34,0x32,0x20,0x32,0x38,0x31,0x2e,0x32,0x31,0x20,0x31, + 0x30,0x30,0x37,0x2e,0x32,0x37,0x20,0x32,0x37,0x38,0x2e,0x30,0x37,0x32,0x20,0x31, + 0x30,0x31,0x30,0x2e,0x39,0x38,0x20,0x32,0x37,0x38,0x2e,0x38,0x35,0x38,0x43,0x31, + 0x30,0x31,0x31,0x2e,0x34,0x38,0x20,0x32,0x38,0x31,0x2e,0x30,0x33,0x34,0x20,0x31, + 0x30,0x31,0x30,0x2e,0x30,0x35,0x20,0x32,0x38,0x31,0x2e,0x37,0x38,0x32,0x20,0x31, + 0x30,0x30,0x39,0x2e,0x30,0x35,0x20,0x32,0x38,0x32,0x2e,0x38,0x31,0x36,0x43,0x31, + 0x30,0x30,0x36,0x2e,0x35,0x39,0x20,0x32,0x38,0x35,0x2e,0x33,0x34,0x37,0x20,0x31, + 0x30,0x30,0x33,0x2e,0x39,0x35,0x20,0x32,0x38,0x37,0x2e,0x37,0x37,0x32,0x20,0x31, + 0x30,0x30,0x31,0x2e,0x38,0x35,0x20,0x32,0x39,0x30,0x2e,0x35,0x38,0x38,0x43,0x39, + 0x39,0x37,0x2e,0x30,0x32,0x39,0x20,0x32,0x39,0x36,0x2e,0x39,0x37,0x31,0x20,0x39, + 0x39,0x35,0x2e,0x37,0x30,0x37,0x20,0x33,0x30,0x34,0x2e,0x31,0x33,0x38,0x20,0x39, + 0x39,0x38,0x2e,0x30,0x32,0x34,0x20,0x33,0x31,0x31,0x2e,0x38,0x37,0x38,0x43,0x39, + 0x39,0x38,0x2e,0x31,0x33,0x31,0x20,0x33,0x31,0x32,0x2e,0x32,0x37,0x20,0x39,0x39, + 0x38,0x2e,0x31,0x33,0x31,0x20,0x33,0x31,0x32,0x2e,0x36,0x36,0x32,0x20,0x39,0x39, + 0x38,0x2e,0x32,0x33,0x37,0x20,0x33,0x31,0x33,0x2e,0x33,0x30,0x34,0x43,0x39,0x39, + 0x34,0x2e,0x33,0x38,0x34,0x20,0x33,0x31,0x35,0x2e,0x38,0x37,0x31,0x20,0x39,0x38, + 0x39,0x2e,0x30,0x36,0x39,0x20,0x33,0x31,0x37,0x2e,0x33,0x33,0x32,0x20,0x39,0x38, + 0x39,0x2e,0x32,0x34,0x35,0x20,0x33,0x32,0x34,0x2e,0x34,0x32,0x39,0x43,0x39,0x39, + 0x31,0x2e,0x35,0x36,0x35,0x20,0x33,0x32,0x30,0x2e,0x34,0x33,0x35,0x20,0x39,0x39, + 0x33,0x2e,0x37,0x34,0x32,0x20,0x33,0x31,0x37,0x2e,0x32,0x36,0x32,0x20,0x39,0x39, + 0x38,0x2e,0x32,0x30,0x31,0x20,0x33,0x31,0x36,0x2e,0x39,0x37,0x38,0x43,0x39,0x39, + 0x39,0x2e,0x35,0x35,0x36,0x20,0x33,0x31,0x39,0x2e,0x32,0x39,0x36,0x20,0x39,0x39, + 0x39,0x2e,0x30,0x32,0x20,0x33,0x32,0x31,0x2e,0x33,0x32,0x39,0x20,0x39,0x39,0x37, + 0x2e,0x35,0x35,0x37,0x20,0x33,0x32,0x33,0x2e,0x33,0x36,0x31,0x43,0x39,0x39,0x35, + 0x2e,0x30,0x32,0x33,0x20,0x33,0x32,0x36,0x2e,0x38,0x35,0x35,0x20,0x39,0x39,0x33, + 0x2e,0x34,0x38,0x38,0x20,0x33,0x33,0x30,0x2e,0x37,0x34,0x32,0x20,0x39,0x39,0x32, + 0x2e,0x38,0x38,0x20,0x33,0x33,0x35,0x2e,0x30,0x32,0x31,0x43,0x39,0x39,0x31,0x2e, + 0x38,0x30,0x38,0x20,0x33,0x34,0x32,0x2e,0x34,0x37,0x35,0x20,0x39,0x39,0x34,0x2e, + 0x39,0x38,0x31,0x20,0x33,0x34,0x38,0x2e,0x31,0x38,0x32,0x20,0x31,0x30,0x30,0x30, + 0x2e,0x36,0x32,0x20,0x33,0x35,0x32,0x2e,0x38,0x35,0x35,0x43,0x39,0x39,0x39,0x2e, + 0x39,0x37,0x34,0x20,0x33,0x35,0x31,0x2e,0x37,0x34,0x39,0x20,0x39,0x39,0x39,0x2e, + 0x33,0x36,0x38,0x20,0x33,0x35,0x30,0x2e,0x36,0x30,0x38,0x20,0x39,0x39,0x38,0x2e, + 0x36,0x39,0x31,0x20,0x33,0x34,0x39,0x2e,0x35,0x37,0x33,0x43,0x39,0x39,0x36,0x2e, + 0x35,0x31,0x36,0x20,0x33,0x34,0x36,0x2e,0x32,0x35,0x36,0x20,0x39,0x39,0x35,0x2e, + 0x34,0x31,0x31,0x20,0x33,0x34,0x32,0x2e,0x36,0x31,0x38,0x20,0x39,0x39,0x35,0x2e, + 0x39,0x38,0x33,0x20,0x33,0x33,0x38,0x2e,0x36,0x39,0x36,0x43,0x39,0x39,0x36,0x2e, + 0x31,0x39,0x37,0x20,0x33,0x33,0x37,0x2e,0x30,0x39,0x31,0x20,0x39,0x39,0x37,0x2e, + 0x32,0x36,0x38,0x20,0x33,0x33,0x35,0x2e,0x36,0x32,0x39,0x20,0x39,0x39,0x37,0x2e, + 0x39,0x38,0x32,0x20,0x33,0x33,0x34,0x2e,0x31,0x33,0x31,0x43,0x39,0x39,0x38,0x2e, + 0x33,0x37,0x33,0x20,0x33,0x33,0x37,0x2e,0x30,0x35,0x36,0x20,0x39,0x39,0x38,0x2e, + 0x36,0x35,0x38,0x20,0x33,0x33,0x39,0x2e,0x39,0x38,0x20,0x39,0x39,0x39,0x2e,0x32, + 0x32,0x38,0x20,0x33,0x34,0x32,0x2e,0x38,0x36,0x39,0x43,0x31,0x30,0x30,0x30,0x2e, + 0x37,0x32,0x20,0x33,0x35,0x30,0x2e,0x34,0x36,0x36,0x20,0x31,0x30,0x30,0x34,0x2e, + 0x39,0x20,0x33,0x35,0x35,0x2e,0x39,0x39,0x35,0x20,0x31,0x30,0x31,0x31,0x2e,0x39, + 0x39,0x20,0x33,0x35,0x39,0x2e,0x32,0x34,0x32,0x43,0x31,0x30,0x31,0x34,0x2e,0x31, + 0x20,0x33,0x36,0x30,0x2e,0x32,0x30,0x35,0x20,0x31,0x30,0x31,0x36,0x2e,0x31,0x37, + 0x20,0x33,0x36,0x31,0x2e,0x32,0x30,0x35,0x20,0x31,0x30,0x31,0x38,0x2e,0x35,0x36, + 0x20,0x33,0x36,0x32,0x2e,0x33,0x31,0x31,0x43,0x31,0x30,0x31,0x39,0x2e,0x38,0x20, + 0x33,0x36,0x37,0x2e,0x35,0x35,0x34,0x20,0x31,0x30,0x31,0x39,0x2e,0x38,0x37,0x20, + 0x33,0x37,0x33,0x2e,0x34,0x37,0x34,0x20,0x31,0x30,0x32,0x33,0x2e,0x39,0x20,0x33, + 0x37,0x38,0x2e,0x32,0x31,0x38,0x43,0x31,0x30,0x32,0x32,0x2e,0x31,0x35,0x20,0x33, + 0x38,0x30,0x2e,0x32,0x31,0x34,0x20,0x31,0x30,0x32,0x30,0x2e,0x34,0x31,0x20,0x33, + 0x38,0x32,0x2e,0x31,0x30,0x34,0x20,0x31,0x30,0x31,0x38,0x2e,0x38,0x34,0x20,0x33, + 0x38,0x34,0x2e,0x31,0x33,0x36,0x43,0x31,0x30,0x31,0x34,0x2e,0x33,0x37,0x20,0x33, + 0x38,0x39,0x2e,0x39,0x31,0x33,0x20,0x31,0x30,0x31,0x30,0x2e,0x34,0x35,0x20,0x33, + 0x39,0x36,0x2e,0x30,0x31,0x20,0x31,0x30,0x31,0x30,0x2e,0x35,0x35,0x20,0x34,0x30, + 0x33,0x2e,0x36,0x37,0x37,0x43,0x31,0x30,0x31,0x30,0x2e,0x36,0x32,0x20,0x34,0x30, + 0x38,0x2e,0x30,0x32,0x38,0x20,0x31,0x30,0x31,0x31,0x2e,0x34,0x34,0x20,0x34,0x31, + 0x32,0x2e,0x32,0x33,0x36,0x20,0x31,0x30,0x31,0x35,0x2e,0x35,0x31,0x20,0x34,0x31, + 0x34,0x2e,0x39,0x31,0x32,0x43,0x31,0x30,0x31,0x34,0x2e,0x35,0x35,0x20,0x34,0x31, + 0x32,0x2e,0x31,0x36,0x36,0x20,0x31,0x30,0x31,0x33,0x2e,0x32,0x36,0x20,0x34,0x30, + 0x39,0x2e,0x34,0x39,0x31,0x20,0x31,0x30,0x31,0x32,0x2e,0x37,0x36,0x20,0x34,0x30, + 0x36,0x2e,0x36,0x33,0x38,0x43,0x31,0x30,0x31,0x31,0x2e,0x36,0x32,0x20,0x34,0x30, + 0x30,0x2e,0x32,0x38,0x39,0x20,0x31,0x30,0x31,0x34,0x2e,0x33,0x34,0x20,0x33,0x39, + 0x34,0x2e,0x38,0x33,0x34,0x20,0x31,0x30,0x31,0x37,0x2e,0x39,0x31,0x20,0x33,0x38, + 0x39,0x2e,0x38,0x37,0x38,0x43,0x31,0x30,0x32,0x30,0x2e,0x31,0x32,0x20,0x33,0x38, + 0x36,0x2e,0x38,0x31,0x31,0x20,0x31,0x30,0x32,0x32,0x2e,0x39,0x34,0x20,0x33,0x38, + 0x34,0x2e,0x31,0x37,0x33,0x20,0x31,0x30,0x32,0x35,0x2e,0x38,0x33,0x20,0x33,0x38, + 0x30,0x2e,0x39,0x36,0x34,0x43,0x31,0x30,0x32,0x36,0x2e,0x32,0x36,0x20,0x33,0x38, + 0x32,0x2e,0x32,0x31,0x33,0x20,0x31,0x30,0x32,0x36,0x2e,0x35,0x38,0x20,0x33,0x38, + 0x33,0x2e,0x31,0x37,0x36,0x20,0x31,0x30,0x32,0x36,0x2e,0x39,0x33,0x20,0x33,0x38, + 0x34,0x2e,0x31,0x30,0x33,0x43,0x31,0x30,0x32,0x38,0x2e,0x32,0x39,0x20,0x33,0x38, + 0x37,0x2e,0x36,0x33,0x34,0x20,0x31,0x30,0x32,0x39,0x2e,0x34,0x36,0x20,0x33,0x39, + 0x31,0x2e,0x32,0x37,0x32,0x20,0x31,0x30,0x33,0x31,0x2e,0x31,0x34,0x20,0x33,0x39, + 0x34,0x2e,0x36,0x39,0x36,0x43,0x31,0x30,0x33,0x32,0x2e,0x31,0x20,0x33,0x39,0x36, + 0x2e,0x36,0x32,0x32,0x20,0x31,0x30,0x33,0x33,0x2e,0x35,0x36,0x20,0x33,0x39,0x38, + 0x2e,0x34,0x37,0x37,0x20,0x31,0x30,0x33,0x35,0x2e,0x39,0x39,0x20,0x33,0x39,0x39, + 0x2e,0x30,0x34,0x38,0x43,0x31,0x30,0x33,0x35,0x2e,0x33,0x35,0x20,0x33,0x39,0x38, + 0x2e,0x31,0x32,0x31,0x20,0x31,0x30,0x33,0x34,0x2e,0x37,0x31,0x20,0x33,0x39,0x37, + 0x2e,0x31,0x35,0x38,0x20,0x31,0x30,0x33,0x34,0x2e,0x30,0x33,0x20,0x33,0x39,0x36, + 0x2e,0x32,0x33,0x43,0x31,0x30,0x33,0x31,0x2e,0x34,0x32,0x20,0x33,0x39,0x32,0x2e, + 0x38,0x30,0x36,0x20,0x31,0x30,0x33,0x30,0x2e,0x30,0x37,0x20,0x33,0x38,0x38,0x2e, + 0x39,0x31,0x38,0x20,0x31,0x30,0x32,0x39,0x2e,0x38,0x36,0x20,0x33,0x38,0x34,0x2e, + 0x33,0x38,0x39,0x43,0x31,0x30,0x33,0x31,0x2e,0x35,0x20,0x33,0x38,0x35,0x2e,0x31, + 0x33,0x39,0x20,0x31,0x30,0x33,0x32,0x2e,0x38,0x32,0x20,0x33,0x38,0x35,0x2e,0x37, + 0x34,0x35,0x20,0x31,0x30,0x33,0x34,0x2e,0x32,0x38,0x20,0x33,0x38,0x36,0x2e,0x33, + 0x38,0x38,0x43,0x31,0x30,0x33,0x34,0x2e,0x38,0x39,0x20,0x33,0x38,0x39,0x2e,0x37, + 0x34,0x20,0x31,0x30,0x33,0x35,0x2e,0x36,0x20,0x33,0x39,0x33,0x2e,0x30,0x32,0x31, + 0x20,0x31,0x30,0x33,0x38,0x2e,0x35,0x39,0x20,0x33,0x39,0x35,0x2e,0x33,0x30,0x35, + 0x43,0x31,0x30,0x33,0x39,0x2e,0x32,0x34,0x20,0x33,0x39,0x35,0x2e,0x38,0x30,0x34, + 0x20,0x31,0x30,0x33,0x39,0x2e,0x32,0x34,0x20,0x33,0x39,0x37,0x2e,0x30,0x35,0x32, + 0x20,0x31,0x30,0x33,0x39,0x2e,0x36,0x33,0x20,0x33,0x39,0x37,0x2e,0x39,0x30,0x38, + 0x43,0x31,0x30,0x34,0x31,0x2e,0x31,0x36,0x20,0x34,0x30,0x31,0x2e,0x32,0x32,0x35, + 0x20,0x31,0x30,0x34,0x32,0x2e,0x34,0x34,0x20,0x34,0x30,0x34,0x2e,0x37,0x35,0x36, + 0x20,0x31,0x30,0x34,0x34,0x2e,0x34,0x20,0x34,0x30,0x37,0x2e,0x38,0x32,0x34,0x43, + 0x31,0x30,0x35,0x30,0x2e,0x37,0x32,0x20,0x34,0x31,0x37,0x2e,0x37,0x34,0x20,0x31, + 0x30,0x36,0x30,0x2e,0x30,0x36,0x20,0x34,0x32,0x31,0x2e,0x36,0x33,0x20,0x31,0x30, + 0x37,0x31,0x2e,0x37,0x36,0x20,0x34,0x31,0x39,0x2e,0x39,0x32,0x31,0x43,0x31,0x30, + 0x37,0x32,0x2e,0x35,0x35,0x20,0x34,0x31,0x39,0x2e,0x38,0x31,0x35,0x20,0x31,0x30, + 0x37,0x33,0x2e,0x33,0x33,0x20,0x34,0x31,0x39,0x2e,0x36,0x30,0x31,0x20,0x31,0x30, + 0x37,0x34,0x2e,0x32,0x36,0x20,0x34,0x31,0x39,0x2e,0x33,0x38,0x37,0x43,0x31,0x30, + 0x37,0x31,0x2e,0x30,0x38,0x20,0x34,0x32,0x34,0x2e,0x39,0x35,0x20,0x31,0x30,0x36, + 0x34,0x2e,0x38,0x20,0x34,0x32,0x36,0x2e,0x38,0x37,0x34,0x20,0x31,0x30,0x35,0x38, + 0x2e,0x39,0x32,0x20,0x34,0x32,0x34,0x2e,0x31,0x36,0x32,0x43,0x31,0x30,0x35,0x37, + 0x2e,0x38,0x31,0x20,0x34,0x32,0x33,0x2e,0x36,0x36,0x32,0x20,0x31,0x30,0x35,0x36, + 0x2e,0x37,0x34,0x20,0x34,0x32,0x33,0x2e,0x30,0x35,0x35,0x20,0x31,0x30,0x35,0x35, + 0x2e,0x36,0x37,0x20,0x34,0x32,0x32,0x2e,0x34,0x38,0x34,0x43,0x31,0x30,0x35,0x35, + 0x2e,0x35,0x37,0x20,0x34,0x32,0x32,0x2e,0x36,0x32,0x37,0x20,0x31,0x30,0x35,0x35, + 0x2e,0x34,0x32,0x20,0x34,0x32,0x32,0x2e,0x37,0x37,0x20,0x31,0x30,0x35,0x35,0x2e, + 0x33,0x32,0x20,0x34,0x32,0x32,0x2e,0x38,0x37,0x37,0x43,0x31,0x30,0x35,0x39,0x2e, + 0x36,0x20,0x34,0x32,0x38,0x2e,0x30,0x38,0x35,0x20,0x31,0x30,0x36,0x35,0x2e,0x35, + 0x35,0x20,0x34,0x32,0x38,0x2e,0x35,0x31,0x34,0x20,0x31,0x30,0x37,0x31,0x2e,0x38, + 0x37,0x20,0x34,0x32,0x38,0x2e,0x34,0x38,0x43,0x31,0x30,0x37,0x32,0x2e,0x35,0x38, + 0x20,0x34,0x33,0x31,0x2e,0x39,0x34,0x20,0x31,0x30,0x36,0x33,0x2e,0x32,0x36,0x20, + 0x34,0x35,0x30,0x2e,0x39,0x31,0x20,0x31,0x30,0x36,0x30,0x2e,0x38,0x34,0x20,0x34, + 0x35,0x32,0x2e,0x38,0x33,0x35,0x4c,0x31,0x30,0x35,0x38,0x2e,0x30,0x39,0x20,0x34, + 0x35,0x36,0x2e,0x35,0x34,0x33,0x43,0x31,0x30,0x35,0x36,0x2e,0x38,0x38,0x20,0x34, + 0x35,0x37,0x2e,0x37,0x39,0x31,0x20,0x31,0x30,0x35,0x36,0x2e,0x30,0x39,0x20,0x34, + 0x35,0x38,0x2e,0x36,0x34,0x37,0x20,0x31,0x30,0x35,0x35,0x2e,0x32,0x37,0x20,0x34, + 0x35,0x39,0x2e,0x33,0x39,0x35,0x43,0x31,0x30,0x35,0x33,0x2e,0x39,0x35,0x20,0x34, + 0x36,0x30,0x2e,0x36,0x34,0x33,0x20,0x31,0x30,0x35,0x32,0x2e,0x37,0x20,0x34,0x36, + 0x31,0x2e,0x39,0x32,0x37,0x20,0x31,0x30,0x35,0x31,0x2e,0x34,0x32,0x20,0x34,0x36, + 0x33,0x2e,0x32,0x31,0x43,0x31,0x30,0x32,0x37,0x2e,0x32,0x31,0x20,0x34,0x32,0x37, + 0x2e,0x32,0x31,0x39,0x20,0x39,0x38,0x31,0x2e,0x39,0x34,0x36,0x20,0x33,0x39,0x39, + 0x2e,0x37,0x38,0x32,0x20,0x39,0x33,0x31,0x2e,0x37,0x39,0x36,0x20,0x33,0x38,0x33, + 0x2e,0x35,0x37,0x36,0x43,0x38,0x34,0x37,0x2e,0x39,0x34,0x20,0x33,0x35,0x36,0x2e, + 0x34,0x34,0x38,0x20,0x38,0x30,0x30,0x2e,0x35,0x39,0x32,0x20,0x32,0x37,0x33,0x2e, + 0x30,0x32,0x20,0x38,0x30,0x30,0x2e,0x30,0x33,0x20,0x32,0x34,0x32,0x2e,0x39,0x32, + 0x43,0x37,0x39,0x39,0x2e,0x34,0x33,0x33,0x20,0x32,0x31,0x32,0x2e,0x38,0x35,0x36, + 0x20,0x37,0x35,0x33,0x2e,0x34,0x31,0x37,0x20,0x32,0x31,0x32,0x2e,0x33,0x34,0x34, + 0x20,0x37,0x33,0x33,0x2e,0x36,0x35,0x36,0x20,0x32,0x30,0x35,0x2e,0x32,0x37,0x37, + 0x43,0x37,0x31,0x33,0x2e,0x39,0x33,0x32,0x20,0x31,0x39,0x38,0x2e,0x32,0x31,0x20, + 0x37,0x30,0x33,0x2e,0x36,0x36,0x36,0x20,0x31,0x37,0x32,0x2e,0x39,0x35,0x38,0x20, + 0x37,0x30,0x33,0x2e,0x36,0x36,0x36,0x20,0x31,0x37,0x32,0x2e,0x39,0x35,0x38,0x43, + 0x37,0x30,0x33,0x2e,0x36,0x36,0x36,0x20,0x31,0x37,0x32,0x2e,0x39,0x35,0x38,0x20, + 0x36,0x39,0x38,0x2e,0x31,0x35,0x35,0x20,0x32,0x33,0x34,0x2e,0x36,0x35,0x33,0x20, + 0x37,0x34,0x39,0x2e,0x32,0x32,0x39,0x20,0x32,0x36,0x32,0x2e,0x30,0x35,0x36,0x43, + 0x37,0x32,0x34,0x2e,0x36,0x31,0x38,0x20,0x32,0x35,0x30,0x2e,0x34,0x39,0x35,0x20, + 0x37,0x31,0x34,0x2e,0x30,0x39,0x37,0x20,0x32,0x34,0x34,0x2e,0x30,0x30,0x31,0x20, + 0x37,0x31,0x32,0x2e,0x33,0x35,0x20,0x32,0x34,0x30,0x2e,0x33,0x39,0x39,0x43,0x37, + 0x31,0x30,0x2e,0x36,0x30,0x33,0x20,0x32,0x33,0x36,0x2e,0x37,0x39,0x36,0x20,0x37, + 0x31,0x31,0x2e,0x38,0x33,0x36,0x20,0x32,0x39,0x31,0x2e,0x39,0x33,0x31,0x20,0x37, + 0x36,0x38,0x2e,0x37,0x32,0x37,0x20,0x33,0x31,0x31,0x2e,0x36,0x36,0x39,0x43,0x37, + 0x36,0x30,0x2e,0x35,0x35,0x37,0x20,0x33,0x31,0x33,0x2e,0x38,0x37,0x37,0x20,0x37, + 0x33,0x36,0x2e,0x31,0x32,0x35,0x20,0x33,0x30,0x33,0x2e,0x39,0x35,0x36,0x20,0x37, + 0x32,0x38,0x2e,0x36,0x37,0x20,0x33,0x30,0x30,0x2e,0x35,0x36,0x36,0x43,0x37,0x33, + 0x33,0x2e,0x37,0x33,0x32,0x20,0x33,0x31,0x35,0x2e,0x34,0x30,0x33,0x20,0x37,0x34, + 0x39,0x2e,0x33,0x34,0x36,0x20,0x33,0x34,0x39,0x2e,0x32,0x38,0x37,0x20,0x38,0x31, + 0x30,0x2e,0x30,0x31,0x39,0x20,0x33,0x36,0x34,0x2e,0x33,0x39,0x43,0x38,0x30,0x32, + 0x2e,0x37,0x37,0x37,0x20,0x33,0x36,0x36,0x2e,0x30,0x32,0x39,0x20,0x37,0x37,0x38, + 0x2e,0x32,0x20,0x33,0x36,0x33,0x2e,0x34,0x38,0x39,0x20,0x37,0x37,0x33,0x2e,0x31, + 0x33,0x36,0x20,0x33,0x36,0x30,0x2e,0x31,0x33,0x36,0x43,0x37,0x36,0x38,0x2e,0x30, + 0x33,0x36,0x20,0x33,0x35,0x36,0x2e,0x37,0x38,0x32,0x20,0x37,0x39,0x34,0x2e,0x36, + 0x33,0x33,0x20,0x34,0x30,0x33,0x2e,0x31,0x35,0x31,0x20,0x38,0x34,0x38,0x2e,0x33, + 0x31,0x39,0x20,0x34,0x30,0x34,0x2e,0x37,0x37,0x31,0x43,0x38,0x36,0x35,0x2e,0x33, + 0x33,0x35,0x20,0x34,0x30,0x32,0x2e,0x36,0x30,0x31,0x20,0x38,0x34,0x31,0x2e,0x35, + 0x37,0x33,0x20,0x34,0x31,0x38,0x2e,0x34,0x32,0x38,0x20,0x38,0x31,0x37,0x2e,0x34, + 0x36,0x32,0x20,0x34,0x30,0x38,0x2e,0x32,0x32,0x32,0x43,0x38,0x33,0x32,0x2e,0x35, + 0x38,0x32,0x20,0x34,0x32,0x34,0x2e,0x35,0x36,0x20,0x38,0x35,0x34,0x2e,0x37,0x32, + 0x38,0x20,0x34,0x34,0x33,0x2e,0x35,0x30,0x33,0x20,0x39,0x30,0x32,0x2e,0x32,0x34, + 0x32,0x20,0x34,0x34,0x36,0x2e,0x38,0x33,0x33,0x43,0x38,0x39,0x33,0x2e,0x32,0x35, + 0x32,0x20,0x34,0x34,0x38,0x2e,0x38,0x32,0x38,0x20,0x38,0x37,0x38,0x2e,0x30,0x39, + 0x31,0x20,0x34,0x35,0x32,0x2e,0x34,0x32,0x35,0x20,0x38,0x36,0x33,0x2e,0x31,0x34, + 0x36,0x20,0x34,0x34,0x37,0x2e,0x33,0x32,0x31,0x43,0x38,0x35,0x32,0x2e,0x36,0x39, + 0x35,0x20,0x34,0x34,0x33,0x2e,0x37,0x35,0x32,0x20,0x38,0x37,0x33,0x2e,0x39,0x35, + 0x20,0x34,0x36,0x32,0x2e,0x34,0x38,0x31,0x20,0x39,0x30,0x32,0x2e,0x30,0x39,0x32, + 0x20,0x34,0x37,0x32,0x2e,0x31,0x35,0x34,0x43,0x38,0x39,0x35,0x2e,0x30,0x32,0x39, + 0x20,0x34,0x37,0x32,0x2e,0x36,0x31,0x35,0x20,0x38,0x38,0x37,0x2e,0x39,0x33,0x20, + 0x34,0x37,0x33,0x2e,0x32,0x39,0x31,0x20,0x38,0x38,0x30,0x2e,0x37,0x39,0x35,0x20, + 0x34,0x37,0x34,0x2e,0x31,0x34,0x35,0x43,0x38,0x36,0x33,0x2e,0x33,0x31,0x39,0x20, + 0x34,0x36,0x34,0x2e,0x34,0x37,0x35,0x20,0x38,0x35,0x33,0x2e,0x37,0x32,0x37,0x20, + 0x34,0x35,0x30,0x2e,0x38,0x34,0x39,0x20,0x38,0x35,0x33,0x2e,0x37,0x32,0x37,0x20, + 0x34,0x35,0x30,0x2e,0x38,0x34,0x39,0x43,0x37,0x36,0x32,0x2e,0x38,0x33,0x32,0x20, + 0x34,0x36,0x33,0x2e,0x36,0x36,0x31,0x20,0x37,0x30,0x35,0x2e,0x34,0x37,0x37,0x20, + 0x34,0x34,0x36,0x2e,0x30,0x32,0x37,0x20,0x36,0x34,0x34,0x2e,0x38,0x37,0x37,0x20, + 0x34,0x32,0x36,0x2e,0x33,0x39,0x35,0x43,0x35,0x39,0x31,0x2e,0x38,0x30,0x33,0x20, + 0x34,0x30,0x39,0x2e,0x31,0x35,0x35,0x20,0x35,0x34,0x39,0x2e,0x35,0x30,0x35,0x20, + 0x33,0x37,0x37,0x2e,0x34,0x37,0x34,0x20,0x35,0x37,0x31,0x2e,0x36,0x35,0x31,0x20, + 0x34,0x30,0x30,0x2e,0x32,0x36,0x39,0x43,0x35,0x37,0x35,0x2e,0x33,0x39,0x35,0x20, + 0x34,0x30,0x34,0x2e,0x31,0x32,0x32,0x20,0x35,0x37,0x39,0x2e,0x34,0x36,0x31,0x20, + 0x34,0x30,0x38,0x2e,0x31,0x35,0x33,0x20,0x35,0x38,0x33,0x2e,0x39,0x31,0x38,0x20, + 0x34,0x31,0x32,0x2e,0x32,0x39,0x31,0x43,0x35,0x36,0x31,0x2e,0x39,0x38,0x33,0x20, + 0x34,0x30,0x34,0x2e,0x31,0x38,0x39,0x20,0x35,0x34,0x32,0x2e,0x30,0x38,0x20,0x33, + 0x39,0x38,0x2e,0x32,0x32,0x38,0x20,0x35,0x33,0x30,0x2e,0x39,0x31,0x34,0x20,0x33, + 0x39,0x39,0x2e,0x39,0x37,0x32,0x43,0x35,0x30,0x35,0x2e,0x30,0x31,0x35,0x20,0x34, + 0x30,0x33,0x2e,0x39,0x35,0x39,0x20,0x34,0x37,0x38,0x2e,0x36,0x32,0x34,0x20,0x33, + 0x38,0x32,0x2e,0x32,0x36,0x38,0x20,0x34,0x37,0x38,0x2e,0x36,0x32,0x34,0x20,0x33, + 0x38,0x32,0x2e,0x32,0x36,0x38,0x43,0x34,0x37,0x38,0x2e,0x36,0x32,0x34,0x20,0x33, + 0x38,0x32,0x2e,0x32,0x36,0x38,0x20,0x35,0x30,0x39,0x2e,0x33,0x35,0x33,0x20,0x34, + 0x35,0x33,0x2e,0x34,0x32,0x34,0x20,0x35,0x38,0x31,0x2e,0x38,0x37,0x33,0x20,0x34, + 0x35,0x33,0x2e,0x31,0x36,0x43,0x35,0x34,0x37,0x2e,0x39,0x31,0x33,0x20,0x34,0x35, + 0x35,0x2e,0x31,0x31,0x31,0x20,0x35,0x33,0x32,0x2e,0x34,0x33,0x32,0x20,0x34,0x35, + 0x34,0x2e,0x32,0x35,0x31,0x20,0x35,0x32,0x38,0x2e,0x33,0x36,0x36,0x20,0x34,0x35, + 0x31,0x2e,0x33,0x32,0x35,0x43,0x35,0x32,0x34,0x2e,0x33,0x20,0x34,0x34,0x38,0x2e, + 0x34,0x20,0x35,0x35,0x38,0x2e,0x35,0x32,0x38,0x20,0x35,0x30,0x38,0x2e,0x33,0x32, + 0x33,0x20,0x36,0x33,0x32,0x2e,0x39,0x30,0x37,0x20,0x34,0x39,0x36,0x2e,0x31,0x31, + 0x32,0x43,0x36,0x32,0x35,0x2e,0x32,0x33,0x35,0x20,0x35,0x30,0x33,0x2e,0x34,0x32, + 0x31,0x20,0x35,0x39,0x32,0x2e,0x34,0x35,0x32,0x20,0x35,0x30,0x37,0x2e,0x30,0x38, + 0x35,0x20,0x35,0x38,0x32,0x2e,0x32,0x31,0x34,0x20,0x35,0x30,0x37,0x2e,0x37,0x35, + 0x39,0x43,0x35,0x39,0x36,0x2e,0x36,0x32,0x31,0x20,0x35,0x32,0x31,0x2e,0x31,0x30, + 0x31,0x20,0x36,0x33,0x34,0x2e,0x30,0x33,0x33,0x20,0x35,0x34,0x39,0x2e,0x30,0x37, + 0x32,0x20,0x37,0x30,0x39,0x2e,0x37,0x37,0x20,0x35,0x32,0x39,0x2e,0x35,0x31,0x35, + 0x43,0x37,0x30,0x32,0x2e,0x37,0x37,0x36,0x20,0x35,0x33,0x35,0x2e,0x36,0x31,0x31, + 0x20,0x36,0x37,0x34,0x2e,0x32,0x20,0x35,0x34,0x37,0x2e,0x34,0x37,0x38,0x20,0x36, + 0x36,0x36,0x2e,0x36,0x33,0x37,0x20,0x35,0x34,0x36,0x2e,0x37,0x39,0x39,0x43,0x36, + 0x35,0x39,0x2e,0x30,0x34,0x20,0x35,0x34,0x36,0x2e,0x31,0x31,0x39,0x20,0x37,0x31, + 0x35,0x2e,0x39,0x32,0x36,0x20,0x35,0x38,0x31,0x2e,0x32,0x39,0x39,0x20,0x37,0x37, + 0x35,0x2e,0x39,0x37,0x20,0x35,0x35,0x31,0x2e,0x31,0x31,0x43,0x37,0x39,0x33,0x2e, + 0x34,0x31,0x37,0x20,0x35,0x33,0x38,0x2e,0x35,0x39,0x37,0x20,0x37,0x37,0x36,0x2e, + 0x37,0x31,0x33,0x20,0x35,0x37,0x30,0x2e,0x31,0x39,0x20,0x37,0x34,0x34,0x2e,0x30, + 0x37,0x33,0x20,0x35,0x37,0x33,0x2e,0x32,0x38,0x33,0x43,0x37,0x36,0x39,0x2e,0x36, + 0x38,0x33,0x20,0x35,0x38,0x32,0x2e,0x30,0x32,0x38,0x20,0x38,0x30,0x34,0x2e,0x31, + 0x30,0x34,0x20,0x35,0x38,0x39,0x2e,0x33,0x34,0x38,0x20,0x38,0x35,0x35,0x2e,0x37, + 0x36,0x33,0x20,0x35,0x36,0x37,0x2e,0x32,0x31,0x37,0x43,0x38,0x35,0x36,0x2e,0x30, + 0x34,0x38,0x20,0x35,0x36,0x37,0x2e,0x32,0x31,0x37,0x20,0x38,0x35,0x36,0x2e,0x32, + 0x36,0x32,0x20,0x35,0x36,0x37,0x2e,0x32,0x31,0x37,0x20,0x38,0x35,0x36,0x2e,0x35, + 0x34,0x37,0x20,0x35,0x36,0x37,0x2e,0x32,0x31,0x37,0x43,0x38,0x35,0x37,0x2e,0x31, + 0x31,0x38,0x20,0x35,0x36,0x37,0x2e,0x32,0x31,0x37,0x20,0x38,0x35,0x37,0x2e,0x36, + 0x35,0x33,0x20,0x35,0x36,0x37,0x2e,0x31,0x31,0x20,0x38,0x35,0x38,0x2e,0x31,0x38, + 0x38,0x20,0x35,0x36,0x37,0x2e,0x31,0x31,0x31,0x43,0x38,0x34,0x39,0x2e,0x33,0x34, + 0x20,0x35,0x37,0x34,0x2e,0x37,0x37,0x36,0x20,0x38,0x33,0x35,0x2e,0x36,0x33,0x38, + 0x20,0x35,0x38,0x36,0x2e,0x30,0x30,0x35,0x20,0x38,0x31,0x37,0x2e,0x36,0x32,0x33, + 0x20,0x35,0x38,0x39,0x2e,0x30,0x36,0x37,0x43,0x37,0x39,0x39,0x2e,0x30,0x30,0x32, + 0x20,0x35,0x39,0x32,0x2e,0x32,0x33,0x36,0x20,0x38,0x37,0x30,0x2e,0x35,0x31,0x39, + 0x20,0x36,0x30,0x35,0x2e,0x39,0x31,0x35,0x20,0x39,0x31,0x34,0x2e,0x35,0x34,0x36, + 0x20,0x35,0x37,0x39,0x2e,0x35,0x37,0x33,0x43,0x39,0x31,0x36,0x2e,0x31,0x31,0x36, + 0x20,0x35,0x37,0x38,0x2e,0x39,0x33,0x32,0x20,0x39,0x31,0x37,0x2e,0x36,0x38,0x35, + 0x20,0x35,0x37,0x38,0x2e,0x33,0x36,0x32,0x20,0x39,0x31,0x39,0x2e,0x32,0x31,0x39, + 0x20,0x35,0x37,0x37,0x2e,0x36,0x38,0x34,0x43,0x39,0x31,0x35,0x2e,0x37,0x35,0x38, + 0x20,0x35,0x38,0x32,0x2e,0x32,0x38,0x34,0x20,0x39,0x31,0x30,0x2e,0x33,0x33,0x34, + 0x20,0x35,0x38,0x37,0x2e,0x30,0x36,0x31,0x20,0x39,0x30,0x34,0x2e,0x34,0x31,0x32, + 0x20,0x35,0x39,0x31,0x2e,0x31,0x36,0x31,0x43,0x39,0x30,0x31,0x2e,0x31,0x36,0x35, + 0x20,0x35,0x39,0x32,0x2e,0x35,0x31,0x35,0x20,0x38,0x39,0x39,0x2e,0x30,0x32,0x35, + 0x20,0x35,0x39,0x33,0x2e,0x37,0x32,0x37,0x20,0x38,0x39,0x38,0x2e,0x35,0x32,0x35, + 0x20,0x35,0x39,0x34,0x2e,0x39,0x30,0x34,0x43,0x38,0x39,0x34,0x2e,0x30,0x33,0x20, + 0x35,0x39,0x37,0x2e,0x35,0x34,0x31,0x20,0x38,0x38,0x39,0x2e,0x36,0x30,0x36,0x20, + 0x35,0x39,0x39,0x2e,0x37,0x31,0x35,0x20,0x38,0x38,0x35,0x2e,0x39,0x36,0x37,0x20, + 0x36,0x30,0x30,0x2e,0x38,0x39,0x31,0x43,0x38,0x37,0x35,0x2e,0x30,0x35,0x20,0x36, + 0x30,0x34,0x2e,0x33,0x38,0x33,0x20,0x39,0x32,0x37,0x2e,0x32,0x36,0x37,0x20,0x36, + 0x32,0x37,0x2e,0x37,0x35,0x37,0x20,0x39,0x37,0x39,0x2e,0x35,0x37,0x20,0x35,0x39, + 0x36,0x2e,0x36,0x37,0x34,0x43,0x39,0x36,0x39,0x2e,0x31,0x31,0x36,0x20,0x36,0x30, + 0x35,0x2e,0x35,0x38,0x37,0x20,0x39,0x36,0x30,0x2e,0x33,0x33,0x39,0x20,0x36,0x31, + 0x32,0x2e,0x35,0x33,0x39,0x20,0x39,0x34,0x35,0x2e,0x31,0x37,0x36,0x20,0x36,0x31, + 0x39,0x2e,0x30,0x39,0x36,0x43,0x39,0x33,0x30,0x2e,0x30,0x31,0x34,0x20,0x36,0x32, + 0x35,0x2e,0x36,0x35,0x34,0x20,0x39,0x37,0x33,0x2e,0x31,0x33,0x37,0x20,0x36,0x33, + 0x38,0x2e,0x35,0x34,0x31,0x20,0x31,0x30,0x31,0x36,0x2e,0x30,0x35,0x20,0x36,0x32, + 0x34,0x2e,0x30,0x33,0x38,0x43,0x31,0x30,0x30,0x35,0x2e,0x39,0x32,0x20,0x36,0x32, + 0x39,0x2e,0x35,0x36,0x33,0x20,0x39,0x38,0x34,0x2e,0x35,0x35,0x32,0x20,0x36,0x33, + 0x38,0x2e,0x32,0x35,0x39,0x20,0x39,0x36,0x39,0x20,0x36,0x33,0x37,0x2e,0x38,0x36, + 0x32,0x43,0x39,0x35,0x33,0x2e,0x39,0x38,0x32,0x20,0x36,0x33,0x37,0x2e,0x35,0x30, + 0x31,0x20,0x39,0x38,0x37,0x2e,0x32,0x35,0x36,0x20,0x36,0x36,0x34,0x2e,0x30,0x37, + 0x39,0x20,0x31,0x30,0x32,0x30,0x2e,0x31,0x35,0x20,0x36,0x35,0x36,0x2e,0x30,0x32, + 0x39,0x43,0x31,0x30,0x32,0x30,0x2e,0x31,0x35,0x20,0x36,0x35,0x36,0x2e,0x31,0x33, + 0x36,0x20,0x31,0x30,0x32,0x30,0x2e,0x31,0x35,0x20,0x36,0x35,0x36,0x2e,0x32,0x34, + 0x33,0x20,0x31,0x30,0x32,0x30,0x2e,0x31,0x35,0x20,0x36,0x35,0x36,0x2e,0x33,0x35, + 0x43,0x31,0x30,0x30,0x38,0x2e,0x34,0x35,0x20,0x36,0x36,0x30,0x2e,0x31,0x32,0x37, + 0x20,0x39,0x38,0x37,0x2e,0x32,0x32,0x20,0x36,0x36,0x33,0x2e,0x36,0x31,0x35,0x20, + 0x39,0x38,0x37,0x2e,0x32,0x32,0x20,0x36,0x36,0x33,0x2e,0x36,0x31,0x35,0x43,0x39, + 0x38,0x37,0x2e,0x32,0x32,0x20,0x36,0x36,0x33,0x2e,0x36,0x31,0x35,0x20,0x31,0x30, + 0x30,0x30,0x2e,0x30,0x32,0x20,0x36,0x36,0x39,0x2e,0x37,0x38,0x39,0x20,0x31,0x30, + 0x31,0x39,0x2e,0x38,0x39,0x20,0x36,0x37,0x34,0x2e,0x37,0x35,0x32,0x43,0x31,0x30, + 0x31,0x39,0x2e,0x38,0x36,0x20,0x36,0x37,0x37,0x2e,0x31,0x30,0x35,0x20,0x31,0x30, + 0x31,0x39,0x2e,0x38,0x32,0x20,0x36,0x37,0x39,0x2e,0x32,0x34,0x35,0x20,0x31,0x30, + 0x31,0x39,0x2e,0x37,0x38,0x20,0x36,0x38,0x31,0x2e,0x31,0x33,0x35,0x43,0x31,0x30, + 0x30,0x34,0x2e,0x38,0x34,0x20,0x36,0x37,0x38,0x2e,0x31,0x20,0x39,0x38,0x36,0x2e, + 0x35,0x30,0x35,0x20,0x36,0x37,0x30,0x2e,0x31,0x37,0x37,0x20,0x39,0x38,0x36,0x2e, + 0x35,0x30,0x35,0x20,0x36,0x37,0x30,0x2e,0x31,0x37,0x37,0x4c,0x39,0x38,0x36,0x2e, + 0x33,0x36,0x32,0x20,0x36,0x37,0x31,0x2e,0x30,0x36,0x39,0x43,0x39,0x37,0x35,0x2e, + 0x35,0x30,0x39,0x20,0x37,0x30,0x33,0x2e,0x32,0x33,0x33,0x20,0x39,0x32,0x37,0x2e, + 0x30,0x32,0x31,0x20,0x37,0x33,0x35,0x2e,0x37,0x30,0x38,0x20,0x39,0x35,0x31,0x2e, + 0x34,0x39,0x33,0x20,0x37,0x33,0x31,0x2e,0x38,0x32,0x38,0x43,0x39,0x37,0x36,0x2e, + 0x31,0x30,0x38,0x20,0x37,0x32,0x37,0x2e,0x39,0x31,0x32,0x20,0x31,0x30,0x30,0x31, + 0x2e,0x38,0x37,0x20,0x37,0x31,0x31,0x2e,0x32,0x36,0x35,0x20,0x31,0x30,0x32,0x30, + 0x2e,0x31,0x20,0x36,0x39,0x32,0x2e,0x31,0x35,0x35,0x43,0x31,0x30,0x32,0x31,0x2e, + 0x31,0x33,0x20,0x37,0x31,0x30,0x2e,0x38,0x37,0x38,0x20,0x31,0x30,0x32,0x32,0x2e, + 0x39,0x37,0x20,0x37,0x36,0x35,0x2e,0x34,0x30,0x37,0x20,0x31,0x30,0x30,0x39,0x2e, + 0x38,0x37,0x20,0x37,0x37,0x37,0x2e,0x32,0x34,0x33,0x43,0x31,0x30,0x30,0x39,0x2e, + 0x38,0x37,0x20,0x37,0x37,0x37,0x2e,0x32,0x34,0x33,0x20,0x39,0x37,0x32,0x2e,0x30, + 0x35,0x34,0x20,0x38,0x30,0x38,0x2e,0x35,0x30,0x38,0x20,0x39,0x36,0x36,0x2e,0x32, + 0x35,0x37,0x20,0x38,0x37,0x30,0x2e,0x35,0x39,0x35,0x43,0x39,0x35,0x39,0x2e,0x38, + 0x35,0x32,0x20,0x39,0x33,0x39,0x2e,0x32,0x38,0x20,0x39,0x33,0x38,0x2e,0x36,0x31, + 0x32,0x20,0x39,0x39,0x32,0x2e,0x36,0x32,0x35,0x20,0x39,0x32,0x34,0x2e,0x37,0x39, + 0x20,0x31,0x30,0x35,0x30,0x2e,0x37,0x39,0x4c,0x31,0x31,0x35,0x30,0x2e,0x35,0x34, + 0x20,0x38,0x35,0x30,0x2e,0x37,0x34,0x39,0x43,0x31,0x31,0x35,0x34,0x2e,0x33,0x33, + 0x20,0x37,0x32,0x31,0x2e,0x39,0x30,0x31,0x20,0x31,0x31,0x37,0x32,0x2e,0x34,0x20, + 0x36,0x33,0x33,0x2e,0x32,0x38,0x35,0x20,0x31,0x31,0x37,0x32,0x2e,0x34,0x20,0x36, + 0x33,0x33,0x2e,0x32,0x38,0x35,0x43,0x31,0x31,0x37,0x32,0x2e,0x34,0x20,0x36,0x33, + 0x33,0x2e,0x32,0x38,0x35,0x20,0x31,0x32,0x32,0x31,0x2e,0x39,0x32,0x20,0x36,0x31, + 0x32,0x2e,0x37,0x35,0x37,0x20,0x31,0x32,0x31,0x32,0x2e,0x38,0x37,0x20,0x35,0x38, + 0x31,0x2e,0x39,0x30,0x36,0x43,0x31,0x32,0x30,0x37,0x2e,0x30,0x32,0x20,0x35,0x36, + 0x31,0x2e,0x38,0x39,0x38,0x20,0x31,0x31,0x39,0x39,0x2e,0x34,0x36,0x20,0x35,0x35, + 0x30,0x2e,0x36,0x39,0x38,0x20,0x31,0x31,0x39,0x32,0x2e,0x32,0x33,0x20,0x35,0x33, + 0x38,0x2e,0x36,0x37,0x37,0x43,0x31,0x32,0x35,0x35,0x2e,0x36,0x39,0x20,0x35,0x32, + 0x39,0x2e,0x35,0x33,0x20,0x31,0x33,0x33,0x37,0x2e,0x38,0x20,0x35,0x32,0x37,0x2e, + 0x39,0x34,0x39,0x20,0x31,0x33,0x38,0x31,0x2e,0x33,0x33,0x20,0x35,0x30,0x34,0x2e, + 0x32,0x34,0x36,0x43,0x31,0x33,0x39,0x39,0x2e,0x38,0x38,0x20,0x34,0x39,0x34,0x2e, + 0x31,0x32,0x33,0x20,0x31,0x34,0x37,0x39,0x2e,0x38,0x39,0x20,0x33,0x38,0x35,0x2e, + 0x38,0x33,0x39,0x20,0x31,0x34,0x39,0x34,0x2e,0x33,0x31,0x20,0x33,0x36,0x36,0x2e, + 0x38,0x37,0x31,0x43,0x31,0x35,0x31,0x30,0x2e,0x33,0x37,0x20,0x33,0x34,0x35,0x2e, + 0x37,0x36,0x33,0x20,0x31,0x35,0x31,0x37,0x2e,0x38,0x39,0x20,0x33,0x33,0x38,0x2e, + 0x35,0x39,0x37,0x20,0x31,0x35,0x31,0x37,0x2e,0x38,0x39,0x20,0x33,0x33,0x38,0x2e, + 0x35,0x39,0x37,0x43,0x31,0x35,0x32,0x31,0x2e,0x34,0x33,0x20,0x33,0x33,0x34,0x2e, + 0x32,0x34,0x37,0x20,0x31,0x35,0x32,0x31,0x2e,0x35,0x20,0x33,0x33,0x31,0x2e,0x34, + 0x36,0x36,0x20,0x31,0x35,0x32,0x30,0x2e,0x35,0x20,0x33,0x32,0x39,0x2e,0x33,0x36, + 0x31,0x43,0x31,0x35,0x39,0x34,0x2e,0x31,0x33,0x20,0x33,0x32,0x33,0x2e,0x34,0x32, + 0x37,0x20,0x31,0x36,0x36,0x35,0x2e,0x31,0x32,0x20,0x33,0x31,0x39,0x2e,0x36,0x33, + 0x32,0x20,0x31,0x37,0x33,0x38,0x2e,0x36,0x34,0x20,0x33,0x31,0x35,0x2e,0x30,0x35, + 0x32,0x43,0x31,0x38,0x32,0x32,0x2e,0x36,0x38,0x20,0x33,0x30,0x39,0x2e,0x37,0x39, + 0x39,0x20,0x31,0x39,0x30,0x33,0x2e,0x36,0x32,0x20,0x33,0x31,0x33,0x2e,0x30,0x36, + 0x37,0x20,0x31,0x39,0x37,0x39,0x2e,0x39,0x35,0x20,0x33,0x32,0x31,0x2e,0x33,0x36, + 0x33,0x43,0x32,0x30,0x30,0x32,0x2e,0x38,0x39,0x20,0x33,0x32,0x33,0x2e,0x38,0x36, + 0x36,0x20,0x32,0x30,0x32,0x33,0x2e,0x34,0x37,0x20,0x33,0x32,0x38,0x2e,0x35,0x34, + 0x34,0x20,0x32,0x30,0x34,0x36,0x2e,0x31,0x39,0x20,0x33,0x33,0x32,0x2e,0x34,0x30, + 0x32,0x4c,0x32,0x30,0x34,0x36,0x2e,0x30,0x32,0x20,0x33,0x33,0x32,0x2e,0x33,0x33, + 0x31,0x5a,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x44,0x35,0x43,0x42,0x37, + 0x41,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d, + 0x39,0x35,0x36,0x2e,0x32,0x32,0x39,0x20,0x36,0x33,0x37,0x2e,0x32,0x31,0x36,0x43, + 0x39,0x34,0x33,0x2e,0x35,0x36,0x36,0x20,0x36,0x33,0x36,0x2e,0x36,0x34,0x32,0x20, + 0x39,0x33,0x37,0x2e,0x32,0x31,0x39,0x20,0x36,0x32,0x38,0x2e,0x34,0x30,0x32,0x20, + 0x39,0x33,0x37,0x2e,0x32,0x31,0x39,0x20,0x36,0x32,0x38,0x2e,0x34,0x30,0x32,0x43, + 0x39,0x30,0x30,0x2e,0x33,0x35,0x20,0x37,0x30,0x30,0x2e,0x30,0x30,0x32,0x20,0x38, + 0x32,0x37,0x2e,0x31,0x30,0x36,0x20,0x37,0x33,0x32,0x2e,0x31,0x38,0x34,0x20,0x37, + 0x37,0x39,0x2e,0x34,0x34,0x37,0x20,0x37,0x33,0x39,0x2e,0x37,0x36,0x36,0x43,0x37, + 0x39,0x33,0x2e,0x33,0x35,0x38,0x20,0x37,0x34,0x32,0x2e,0x33,0x33,0x38,0x20,0x38, + 0x32,0x36,0x2e,0x38,0x31,0x35,0x20,0x37,0x35,0x34,0x2e,0x32,0x32,0x33,0x20,0x38, + 0x38,0x31,0x2e,0x38,0x32,0x39,0x20,0x37,0x32,0x34,0x2e,0x38,0x31,0x38,0x43,0x39, + 0x33,0x32,0x2e,0x34,0x35,0x35,0x20,0x36,0x39,0x37,0x2e,0x37,0x36,0x34,0x20,0x39, + 0x35,0x32,0x2e,0x30,0x35,0x33,0x20,0x36,0x34,0x36,0x2e,0x36,0x33,0x20,0x39,0x35, + 0x36,0x2e,0x32,0x32,0x39,0x20,0x36,0x33,0x37,0x2e,0x31,0x38,0x56,0x36,0x33,0x37, + 0x2e,0x32,0x31,0x36,0x5a,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x44,0x35, + 0x43,0x42,0x37,0x41,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64, + 0x3d,0x22,0x4d,0x39,0x33,0x31,0x2e,0x31,0x32,0x31,0x20,0x36,0x32,0x32,0x2e,0x35, + 0x35,0x32,0x43,0x39,0x30,0x35,0x2e,0x32,0x39,0x33,0x20,0x36,0x32,0x37,0x2e,0x30, + 0x37,0x33,0x20,0x38,0x37,0x38,0x2e,0x38,0x36,0x34,0x20,0x36,0x31,0x34,0x2e,0x39, + 0x30,0x35,0x20,0x38,0x37,0x38,0x2e,0x38,0x36,0x34,0x20,0x36,0x31,0x34,0x2e,0x39, + 0x30,0x35,0x43,0x38,0x31,0x39,0x2e,0x33,0x34,0x34,0x20,0x36,0x38,0x32,0x2e,0x33, + 0x32,0x35,0x20,0x37,0x37,0x30,0x2e,0x32,0x39,0x32,0x20,0x36,0x39,0x36,0x2e,0x30, + 0x30,0x36,0x20,0x37,0x31,0x30,0x2e,0x30,0x37,0x33,0x20,0x37,0x31,0x33,0x2e,0x31, + 0x34,0x32,0x43,0x36,0x34,0x37,0x2e,0x35,0x20,0x37,0x33,0x30,0x2e,0x39,0x31,0x39, + 0x20,0x35,0x39,0x34,0x2e,0x30,0x33,0x20,0x37,0x32,0x32,0x2e,0x39,0x31,0x36,0x20, + 0x36,0x32,0x37,0x2e,0x35,0x39,0x34,0x20,0x37,0x33,0x32,0x2e,0x36,0x39,0x37,0x43, + 0x36,0x36,0x34,0x2e,0x30,0x34,0x38,0x20,0x37,0x34,0x33,0x2e,0x32,0x39,0x39,0x20, + 0x37,0x31,0x33,0x2e,0x38,0x30,0x36,0x20,0x37,0x35,0x34,0x2e,0x35,0x38,0x33,0x20, + 0x38,0x30,0x35,0x2e,0x34,0x39,0x33,0x20,0x37,0x31,0x39,0x2e,0x30,0x31,0x38,0x43, + 0x38,0x37,0x38,0x2e,0x39,0x31,0x33,0x20,0x36,0x39,0x30,0x2e,0x35,0x34,0x35,0x20, + 0x39,0x30,0x38,0x2e,0x36,0x33,0x37,0x20,0x36,0x35,0x39,0x2e,0x31,0x33,0x35,0x20, + 0x39,0x33,0x31,0x2e,0x31,0x32,0x31,0x20,0x36,0x32,0x32,0x2e,0x35,0x38,0x37,0x56, + 0x36,0x32,0x32,0x2e,0x35,0x35,0x32,0x5a,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22, + 0x23,0x44,0x35,0x43,0x42,0x37,0x41,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74, + 0x68,0x20,0x64,0x3d,0x22,0x4d,0x38,0x38,0x32,0x2e,0x36,0x31,0x20,0x37,0x33,0x35, + 0x2e,0x38,0x37,0x33,0x43,0x38,0x38,0x32,0x2e,0x36,0x31,0x20,0x37,0x33,0x35,0x2e, + 0x38,0x37,0x33,0x20,0x39,0x30,0x31,0x2e,0x30,0x31,0x35,0x20,0x37,0x34,0x31,0x2e, + 0x39,0x34,0x31,0x20,0x39,0x32,0x39,0x2e,0x37,0x33,0x36,0x20,0x37,0x32,0x35,0x2e, + 0x30,0x38,0x31,0x43,0x39,0x35,0x35,0x2e,0x37,0x30,0x39,0x20,0x37,0x30,0x39,0x2e, + 0x38,0x36,0x31,0x20,0x39,0x37,0x37,0x2e,0x31,0x39,0x36,0x20,0x36,0x36,0x37,0x2e, + 0x39,0x39,0x39,0x20,0x39,0x38,0x30,0x2e,0x39,0x30,0x37,0x20,0x36,0x36,0x31,0x2e, + 0x34,0x37,0x34,0x43,0x39,0x36,0x38,0x2e,0x32,0x34,0x35,0x20,0x36,0x35,0x36,0x2e, + 0x36,0x35,0x36,0x20,0x39,0x36,0x31,0x2e,0x31,0x38,0x35,0x20,0x36,0x34,0x35,0x2e, + 0x35,0x36,0x33,0x20,0x39,0x36,0x31,0x2e,0x31,0x38,0x35,0x20,0x36,0x34,0x35,0x2e, + 0x35,0x36,0x33,0x43,0x39,0x36,0x31,0x2e,0x31,0x38,0x35,0x20,0x36,0x34,0x35,0x2e, + 0x35,0x36,0x33,0x20,0x39,0x35,0x36,0x2e,0x35,0x34,0x32,0x20,0x36,0x36,0x35,0x2e, + 0x35,0x33,0x32,0x20,0x39,0x33,0x35,0x2e,0x39,0x35,0x32,0x20,0x36,0x39,0x32,0x2e, + 0x33,0x38,0x43,0x39,0x31,0x35,0x2e,0x33,0x39,0x37,0x20,0x37,0x31,0x39,0x2e,0x32, + 0x32,0x38,0x20,0x38,0x38,0x32,0x2e,0x36,0x31,0x20,0x37,0x33,0x35,0x2e,0x38,0x37, + 0x33,0x20,0x38,0x38,0x32,0x2e,0x36,0x31,0x20,0x37,0x33,0x35,0x2e,0x38,0x37,0x33, + 0x5a,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x44,0x35,0x43,0x42,0x37,0x41, + 0x22,0x2f,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x38, + 0x37,0x33,0x2e,0x36,0x32,0x33,0x20,0x36,0x30,0x36,0x2e,0x30,0x35,0x39,0x43,0x38, + 0x33,0x38,0x2e,0x39,0x31,0x32,0x20,0x36,0x31,0x33,0x2e,0x35,0x33,0x38,0x20,0x38, + 0x30,0x39,0x2e,0x32,0x33,0x38,0x20,0x35,0x39,0x38,0x2e,0x34,0x34,0x34,0x20,0x38, + 0x30,0x39,0x2e,0x32,0x33,0x38,0x20,0x35,0x39,0x38,0x2e,0x34,0x34,0x34,0x43,0x37, + 0x31,0x36,0x2e,0x38,0x36,0x34,0x20,0x36,0x36,0x36,0x2e,0x37,0x31,0x31,0x20,0x36, + 0x34,0x33,0x2e,0x32,0x33,0x34,0x20,0x36,0x38,0x31,0x2e,0x34,0x39,0x20,0x35,0x36, + 0x34,0x2e,0x38,0x32,0x33,0x20,0x36,0x39,0x35,0x2e,0x39,0x38,0x32,0x43,0x34,0x39, + 0x36,0x2e,0x31,0x31,0x36,0x20,0x37,0x30,0x38,0x2e,0x36,0x35,0x38,0x20,0x34,0x33, + 0x30,0x2e,0x36,0x39,0x37,0x20,0x36,0x39,0x38,0x2e,0x39,0x37,0x34,0x20,0x34,0x36, + 0x38,0x2e,0x36,0x38,0x34,0x20,0x37,0x31,0x30,0x2e,0x38,0x36,0x31,0x43,0x35,0x30, + 0x39,0x2e,0x38,0x38,0x31,0x20,0x37,0x32,0x33,0x2e,0x37,0x34,0x37,0x20,0x35,0x36, + 0x37,0x2e,0x31,0x33,0x20,0x37,0x33,0x37,0x2e,0x39,0x39,0x33,0x20,0x36,0x38,0x39, + 0x2e,0x32,0x30,0x38,0x20,0x37,0x30,0x34,0x2e,0x37,0x39,0x31,0x43,0x37,0x38,0x36, + 0x2e,0x39,0x35,0x36,0x20,0x36,0x37,0x38,0x2e,0x31,0x37,0x39,0x20,0x38,0x33,0x35, + 0x2e,0x34,0x34,0x33,0x20,0x36,0x34,0x33,0x2e,0x35,0x36,0x35,0x20,0x38,0x37,0x33, + 0x2e,0x36,0x32,0x33,0x20,0x36,0x30,0x36,0x2e,0x30,0x35,0x39,0x5a,0x22,0x20,0x66, + 0x69,0x6c,0x6c,0x3d,0x22,0x23,0x44,0x35,0x43,0x42,0x37,0x41,0x22,0x2f,0x3e,0xd, + 0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x35,0x36,0x33,0x2e,0x34, + 0x35,0x32,0x20,0x35,0x30,0x32,0x2e,0x34,0x37,0x36,0x43,0x35,0x33,0x38,0x2e,0x34, + 0x35,0x20,0x34,0x39,0x30,0x2e,0x32,0x33,0x36,0x20,0x35,0x31,0x30,0x2e,0x30,0x33, + 0x20,0x34,0x35,0x34,0x2e,0x36,0x37,0x32,0x20,0x35,0x31,0x30,0x2e,0x30,0x33,0x20, + 0x34,0x35,0x34,0x2e,0x36,0x37,0x32,0x43,0x33,0x33,0x31,0x2e,0x34,0x38,0x34,0x20, + 0x34,0x38,0x35,0x2e,0x35,0x30,0x35,0x20,0x32,0x34,0x32,0x2e,0x39,0x31,0x34,0x20, + 0x34,0x37,0x37,0x2e,0x39,0x31,0x38,0x20,0x31,0x36,0x34,0x2e,0x32,0x32,0x34,0x20, + 0x34,0x37,0x32,0x2e,0x34,0x30,0x34,0x43,0x39,0x39,0x2e,0x35,0x35,0x32,0x35,0x20, + 0x34,0x36,0x37,0x2e,0x38,0x39,0x31,0x20,0x32,0x39,0x2e,0x38,0x35,0x37,0x31,0x20, + 0x34,0x34,0x33,0x2e,0x37,0x36,0x33,0x20,0x36,0x35,0x2e,0x31,0x36,0x35,0x36,0x20, + 0x34,0x36,0x36,0x2e,0x30,0x39,0x38,0x43,0x31,0x30,0x34,0x2e,0x33,0x36,0x32,0x20, + 0x34,0x39,0x30,0x2e,0x38,0x36,0x20,0x31,0x34,0x39,0x2e,0x38,0x37,0x20,0x35,0x32, + 0x30,0x2e,0x34,0x37,0x33,0x20,0x32,0x38,0x33,0x2e,0x32,0x34,0x35,0x20,0x35,0x32, + 0x36,0x2e,0x31,0x38,0x32,0x43,0x33,0x35,0x35,0x2e,0x35,0x38,0x36,0x20,0x35,0x32, + 0x39,0x2e,0x33,0x30,0x35,0x20,0x35,0x33,0x32,0x2e,0x32,0x37,0x33,0x20,0x35,0x31, + 0x31,0x2e,0x33,0x38,0x33,0x20,0x35,0x36,0x33,0x2e,0x34,0x35,0x32,0x20,0x35,0x30, + 0x32,0x2e,0x34,0x37,0x36,0x5a,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x44, + 0x35,0x43,0x42,0x37,0x41,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20, + 0x64,0x3d,0x22,0x4d,0x35,0x37,0x32,0x2e,0x30,0x33,0x32,0x20,0x36,0x38,0x33,0x2e, + 0x30,0x30,0x33,0x43,0x36,0x38,0x30,0x2e,0x36,0x39,0x34,0x20,0x36,0x36,0x34,0x2e, + 0x38,0x34,0x36,0x20,0x37,0x35,0x30,0x2e,0x39,0x30,0x36,0x20,0x36,0x32,0x37,0x2e, + 0x38,0x31,0x33,0x20,0x37,0x39,0x37,0x2e,0x33,0x36,0x20,0x35,0x39,0x33,0x2e,0x34, + 0x38,0x33,0x43,0x37,0x35,0x39,0x2e,0x30,0x34,0x38,0x20,0x35,0x39,0x37,0x2e,0x39, + 0x33,0x20,0x37,0x33,0x36,0x2e,0x34,0x30,0x31,0x20,0x35,0x38,0x31,0x2e,0x30,0x35, + 0x35,0x20,0x37,0x33,0x36,0x2e,0x34,0x30,0x31,0x20,0x35,0x38,0x31,0x2e,0x30,0x35, + 0x35,0x43,0x36,0x31,0x35,0x2e,0x37,0x30,0x36,0x20,0x36,0x34,0x31,0x2e,0x38,0x39, + 0x36,0x20,0x35,0x31,0x38,0x2e,0x33,0x39,0x31,0x20,0x36,0x35,0x32,0x2e,0x31,0x30, + 0x33,0x20,0x34,0x33,0x34,0x2e,0x39,0x31,0x38,0x20,0x36,0x35,0x37,0x2e,0x38,0x39, + 0x32,0x43,0x33,0x36,0x33,0x2e,0x39,0x33,0x20,0x36,0x36,0x32,0x2e,0x37,0x39,0x33, + 0x20,0x32,0x38,0x37,0x2e,0x31,0x33,0x33,0x20,0x36,0x35,0x30,0x2e,0x31,0x34,0x36, + 0x20,0x33,0x32,0x36,0x2e,0x30,0x38,0x32,0x20,0x36,0x36,0x35,0x2e,0x34,0x32,0x31, + 0x43,0x33,0x36,0x38,0x2e,0x33,0x34,0x38,0x20,0x36,0x38,0x31,0x2e,0x39,0x38,0x31, + 0x20,0x34,0x33,0x36,0x2e,0x32,0x39,0x35,0x20,0x37,0x30,0x35,0x2e,0x36,0x38,0x31, + 0x20,0x35,0x37,0x32,0x2e,0x30,0x33,0x32,0x20,0x36,0x38,0x33,0x2e,0x30,0x30,0x33, + 0x5a,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x44,0x35,0x43,0x42,0x37,0x41, + 0x22,0x2f,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x35, + 0x31,0x31,0x2e,0x36,0x37,0x34,0x20,0x34,0x34,0x34,0x2e,0x35,0x38,0x43,0x35,0x31, + 0x31,0x2e,0x36,0x37,0x34,0x20,0x34,0x34,0x34,0x2e,0x35,0x38,0x20,0x34,0x36,0x36, + 0x2e,0x36,0x36,0x32,0x20,0x34,0x32,0x35,0x2e,0x37,0x30,0x32,0x20,0x34,0x35,0x38, + 0x2e,0x38,0x39,0x37,0x20,0x33,0x38,0x36,0x2e,0x33,0x36,0x34,0x43,0x33,0x38,0x39, + 0x2e,0x37,0x36,0x31,0x20,0x33,0x39,0x39,0x2e,0x30,0x37,0x35,0x20,0x33,0x33,0x32, + 0x2e,0x34,0x33,0x35,0x20,0x34,0x30,0x36,0x2e,0x31,0x35,0x35,0x20,0x32,0x31,0x30, + 0x2e,0x33,0x33,0x31,0x20,0x34,0x30,0x35,0x2e,0x36,0x35,0x36,0x43,0x39,0x31,0x2e, + 0x31,0x35,0x32,0x33,0x20,0x34,0x30,0x35,0x2e,0x31,0x39,0x34,0x20,0x33,0x30,0x2e, + 0x33,0x30,0x30,0x34,0x20,0x33,0x39,0x31,0x2e,0x36,0x36,0x20,0x31,0x2e,0x33,0x30, + 0x30,0x34,0x32,0x20,0x33,0x38,0x37,0x2e,0x39,0x37,0x38,0x43,0x2d,0x32,0x34,0x2e, + 0x30,0x32,0x35,0x35,0x20,0x33,0x38,0x34,0x2e,0x37,0x39,0x37,0x20,0x35,0x33,0x2e, + 0x36,0x31,0x37,0x33,0x20,0x34,0x33,0x34,0x2e,0x33,0x39,0x31,0x20,0x31,0x33,0x36, + 0x2e,0x32,0x36,0x34,0x20,0x34,0x34,0x39,0x2e,0x34,0x32,0x39,0x43,0x32,0x31,0x39, + 0x2e,0x33,0x37,0x35,0x20,0x34,0x36,0x34,0x2e,0x35,0x33,0x38,0x20,0x32,0x39,0x34, + 0x2e,0x36,0x30,0x31,0x20,0x34,0x38,0x33,0x2e,0x36,0x33,0x39,0x20,0x35,0x31,0x31, + 0x2e,0x36,0x33,0x38,0x20,0x34,0x34,0x34,0x2e,0x35,0x38,0x4c,0x35,0x31,0x31,0x2e, + 0x36,0x37,0x34,0x20,0x34,0x34,0x34,0x2e,0x35,0x38,0x5a,0x22,0x20,0x66,0x69,0x6c, + 0x6c,0x3d,0x22,0x23,0x44,0x35,0x43,0x42,0x37,0x41,0x22,0x2f,0x3e,0xd,0xa,0x3c, + 0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x36,0x33,0x39,0x2e,0x38,0x31,0x33, + 0x20,0x35,0x34,0x35,0x2e,0x34,0x37,0x31,0x43,0x36,0x30,0x31,0x2e,0x34,0x33,0x31, + 0x20,0x35,0x34,0x31,0x2e,0x38,0x35,0x38,0x20,0x35,0x37,0x31,0x2e,0x39,0x37,0x35, + 0x20,0x35,0x31,0x30,0x2e,0x36,0x30,0x39,0x20,0x35,0x37,0x31,0x2e,0x39,0x37,0x35, + 0x20,0x35,0x31,0x30,0x2e,0x36,0x30,0x39,0x43,0x33,0x39,0x31,0x2e,0x32,0x38,0x38, + 0x20,0x35,0x34,0x35,0x2e,0x33,0x36,0x34,0x20,0x33,0x32,0x37,0x2e,0x31,0x38,0x37, + 0x20,0x35,0x34,0x34,0x2e,0x36,0x33,0x32,0x20,0x32,0x34,0x38,0x2e,0x33,0x35,0x33, + 0x20,0x35,0x34,0x31,0x2e,0x35,0x30,0x36,0x43,0x31,0x38,0x33,0x2e,0x35,0x37,0x34, + 0x20,0x35,0x33,0x38,0x2e,0x39,0x32,0x20,0x31,0x31,0x33,0x2e,0x31,0x36,0x35,0x20, + 0x35,0x31,0x36,0x2e,0x38,0x36,0x20,0x31,0x34,0x39,0x2e,0x31,0x38,0x37,0x20,0x35, + 0x33,0x38,0x2e,0x31,0x32,0x35,0x43,0x31,0x38,0x39,0x2e,0x30,0x39,0x37,0x20,0x35, + 0x36,0x31,0x2e,0x37,0x31,0x20,0x32,0x33,0x35,0x2e,0x34,0x32,0x36,0x20,0x35,0x39, + 0x30,0x2e,0x38,0x39,0x36,0x20,0x33,0x36,0x38,0x2e,0x39,0x34,0x35,0x20,0x35,0x39, + 0x31,0x2e,0x36,0x38,0x33,0x43,0x34,0x37,0x39,0x2e,0x30,0x39,0x38,0x20,0x35,0x39, + 0x32,0x2e,0x33,0x35,0x37,0x20,0x36,0x30,0x38,0x2e,0x39,0x31,0x38,0x20,0x35,0x35, + 0x35,0x2e,0x32,0x37,0x20,0x36,0x33,0x39,0x2e,0x38,0x31,0x33,0x20,0x35,0x34,0x35, + 0x2e,0x34,0x37,0x31,0x5a,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x44,0x35, + 0x43,0x42,0x37,0x41,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64, + 0x3d,0x22,0x4d,0x34,0x36,0x38,0x2e,0x38,0x34,0x36,0x20,0x36,0x34,0x32,0x2e,0x30, + 0x33,0x32,0x43,0x35,0x37,0x38,0x2e,0x38,0x32,0x34,0x20,0x36,0x33,0x35,0x2e,0x34, + 0x33,0x31,0x20,0x36,0x37,0x32,0x2e,0x38,0x39,0x39,0x20,0x36,0x30,0x33,0x2e,0x32, + 0x31,0x39,0x20,0x37,0x32,0x33,0x2e,0x38,0x31,0x31,0x20,0x35,0x37,0x35,0x2e,0x39, + 0x31,0x36,0x43,0x36,0x38,0x35,0x2e,0x32,0x38,0x36,0x20,0x35,0x37,0x34,0x2e,0x38, + 0x33,0x35,0x20,0x36,0x35,0x33,0x2e,0x36,0x31,0x36,0x20,0x35,0x35,0x31,0x2e,0x36, + 0x38,0x31,0x20,0x36,0x35,0x33,0x2e,0x36,0x31,0x36,0x20,0x35,0x35,0x31,0x2e,0x36, + 0x38,0x31,0x43,0x34,0x39,0x33,0x2e,0x36,0x38,0x36,0x20,0x36,0x30,0x31,0x2e,0x35, + 0x32,0x37,0x20,0x34,0x31,0x37,0x2e,0x36,0x33,0x33,0x20,0x36,0x30,0x33,0x2e,0x35, + 0x37,0x33,0x20,0x33,0x33,0x34,0x2e,0x33,0x34,0x20,0x36,0x30,0x34,0x2e,0x32,0x32, + 0x36,0x43,0x32,0x36,0x39,0x2e,0x35,0x32,0x34,0x20,0x36,0x30,0x34,0x2e,0x37,0x30, + 0x37,0x20,0x32,0x30,0x39,0x2e,0x36,0x37,0x32,0x20,0x35,0x38,0x36,0x2e,0x38,0x35, + 0x38,0x20,0x32,0x34,0x36,0x2e,0x30,0x31,0x36,0x20,0x36,0x30,0x37,0x2e,0x35,0x35, + 0x33,0x43,0x32,0x38,0x35,0x2e,0x34,0x36,0x32,0x20,0x36,0x32,0x39,0x2e,0x39,0x39, + 0x36,0x20,0x33,0x33,0x35,0x2e,0x36,0x34,0x36,0x20,0x36,0x35,0x30,0x2e,0x30,0x31, + 0x38,0x20,0x34,0x36,0x38,0x2e,0x39,0x31,0x38,0x20,0x36,0x34,0x32,0x2e,0x30,0x36, + 0x38,0x4c,0x34,0x36,0x38,0x2e,0x38,0x34,0x36,0x20,0x36,0x34,0x32,0x2e,0x30,0x33, + 0x32,0x5a,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x44,0x35,0x43,0x42,0x37, + 0x41,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d, + 0x34,0x34,0x38,0x2e,0x33,0x34,0x35,0x20,0x31,0x31,0x36,0x2e,0x37,0x31,0x35,0x43, + 0x34,0x30,0x34,0x2e,0x36,0x31,0x39,0x20,0x38,0x38,0x2e,0x39,0x32,0x31,0x34,0x20, + 0x33,0x36,0x34,0x2e,0x38,0x32,0x32,0x20,0x34,0x35,0x2e,0x34,0x37,0x32,0x37,0x20, + 0x33,0x38,0x31,0x2e,0x31,0x35,0x32,0x20,0x37,0x34,0x2e,0x35,0x37,0x38,0x32,0x43, + 0x33,0x39,0x39,0x2e,0x32,0x36,0x33,0x20,0x31,0x30,0x36,0x2e,0x38,0x35,0x38,0x20, + 0x34,0x31,0x39,0x2e,0x39,0x37,0x38,0x20,0x31,0x34,0x34,0x2e,0x39,0x38,0x38,0x20, + 0x35,0x31,0x31,0x2e,0x34,0x39,0x35,0x20,0x31,0x39,0x39,0x2e,0x37,0x35,0x36,0x43, + 0x35,0x36,0x31,0x2e,0x31,0x34,0x31,0x20,0x32,0x32,0x39,0x2e,0x34,0x37,0x38,0x20, + 0x36,0x39,0x32,0x2e,0x31,0x31,0x32,0x20,0x32,0x38,0x34,0x2e,0x31,0x31,0x35,0x20, + 0x37,0x31,0x37,0x2e,0x34,0x30,0x32,0x20,0x32,0x38,0x39,0x2e,0x37,0x32,0x31,0x43, + 0x37,0x30,0x34,0x2e,0x34,0x39,0x34,0x20,0x32,0x37,0x31,0x2e,0x36,0x33,0x37,0x20, + 0x36,0x39,0x38,0x2e,0x30,0x34,0x37,0x20,0x32,0x33,0x35,0x2e,0x38,0x33,0x20,0x36, + 0x39,0x38,0x2e,0x30,0x34,0x37,0x20,0x32,0x33,0x35,0x2e,0x38,0x33,0x43,0x35,0x36, + 0x30,0x2e,0x38,0x36,0x38,0x20,0x31,0x38,0x39,0x2e,0x35,0x33,0x35,0x20,0x35,0x30, + 0x31,0x2e,0x35,0x32,0x31,0x20,0x31,0x35,0x30,0x2e,0x35,0x33,0x39,0x20,0x34,0x34, + 0x38,0x2e,0x33,0x34,0x35,0x20,0x31,0x31,0x36,0x2e,0x37,0x31,0x35,0x5a,0x22,0x20, + 0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x44,0x35,0x43,0x42,0x37,0x41,0x22,0x2f,0x3e, + 0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x34,0x38,0x38,0x2e, + 0x36,0x33,0x32,0x20,0x33,0x31,0x33,0x2e,0x39,0x30,0x36,0x43,0x35,0x31,0x32,0x2e, + 0x30,0x32,0x35,0x20,0x33,0x34,0x31,0x2e,0x36,0x32,0x32,0x20,0x35,0x35,0x30,0x2e, + 0x37,0x35,0x32,0x20,0x33,0x38,0x34,0x2e,0x31,0x34,0x33,0x20,0x36,0x35,0x34,0x2e, + 0x37,0x32,0x34,0x20,0x34,0x31,0x39,0x2e,0x38,0x33,0x36,0x43,0x37,0x33,0x37,0x2e, + 0x39,0x37,0x34,0x20,0x34,0x34,0x38,0x2e,0x34,0x32,0x36,0x20,0x38,0x30,0x31,0x2e, + 0x33,0x39,0x38,0x20,0x34,0x34,0x39,0x2e,0x31,0x32,0x32,0x20,0x38,0x34,0x37,0x2e, + 0x31,0x33,0x20,0x34,0x34,0x32,0x2e,0x36,0x38,0x43,0x38,0x31,0x38,0x2e,0x35,0x32, + 0x35,0x20,0x34,0x33,0x31,0x2e,0x32,0x32,0x34,0x20,0x38,0x30,0x39,0x2e,0x30,0x34, + 0x32,0x20,0x34,0x31,0x30,0x2e,0x37,0x35,0x31,0x20,0x38,0x30,0x39,0x2e,0x30,0x34, + 0x32,0x20,0x34,0x31,0x30,0x2e,0x37,0x35,0x31,0x43,0x37,0x30,0x31,0x2e,0x30,0x36, + 0x35,0x20,0x34,0x30,0x37,0x2e,0x35,0x38,0x32,0x20,0x36,0x32,0x38,0x2e,0x38,0x33, + 0x39,0x20,0x33,0x37,0x37,0x2e,0x37,0x34,0x37,0x20,0x35,0x36,0x37,0x2e,0x39,0x39, + 0x31,0x20,0x33,0x35,0x30,0x2e,0x30,0x31,0x39,0x43,0x35,0x31,0x36,0x2e,0x32,0x37, + 0x34,0x20,0x33,0x32,0x36,0x2e,0x34,0x36,0x37,0x20,0x34,0x36,0x37,0x2e,0x31,0x33, + 0x20,0x32,0x38,0x38,0x2e,0x33,0x36,0x35,0x20,0x34,0x38,0x38,0x2e,0x36,0x36,0x38, + 0x20,0x33,0x31,0x33,0x2e,0x39,0x30,0x36,0x48,0x34,0x38,0x38,0x2e,0x36,0x33,0x32, + 0x5a,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x44,0x35,0x43,0x42,0x37,0x41, + 0x22,0x2f,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x34, + 0x33,0x37,0x2e,0x34,0x37,0x33,0x20,0x38,0x39,0x2e,0x39,0x32,0x39,0x34,0x43,0x34, + 0x39,0x30,0x2e,0x31,0x31,0x32,0x20,0x31,0x33,0x32,0x2e,0x31,0x36,0x39,0x20,0x35, + 0x33,0x35,0x2e,0x36,0x38,0x38,0x20,0x31,0x37,0x34,0x2e,0x31,0x39,0x33,0x20,0x37, + 0x30,0x33,0x2e,0x30,0x34,0x33,0x20,0x32,0x32,0x39,0x2e,0x33,0x34,0x43,0x37,0x30, + 0x33,0x2e,0x30,0x34,0x33,0x20,0x32,0x32,0x39,0x2e,0x33,0x34,0x20,0x36,0x37,0x38, + 0x2e,0x35,0x38,0x31,0x20,0x31,0x39,0x38,0x2e,0x39,0x34,0x39,0x20,0x36,0x38,0x38, + 0x2e,0x31,0x35,0x20,0x31,0x36,0x38,0x2e,0x33,0x35,0x33,0x43,0x36,0x33,0x34,0x2e, + 0x37,0x35,0x35,0x20,0x31,0x35,0x30,0x2e,0x39,0x37,0x20,0x35,0x39,0x31,0x2e,0x37, + 0x37,0x35,0x20,0x31,0x33,0x34,0x2e,0x31,0x32,0x35,0x20,0x35,0x30,0x36,0x2e,0x31, + 0x37,0x37,0x20,0x38,0x37,0x2e,0x33,0x34,0x35,0x39,0x43,0x34,0x32,0x32,0x2e,0x36, + 0x31,0x32,0x20,0x34,0x31,0x2e,0x36,0x37,0x33,0x36,0x20,0x33,0x38,0x35,0x2e,0x30, + 0x32,0x33,0x20,0x39,0x2e,0x30,0x33,0x31,0x33,0x39,0x20,0x33,0x36,0x36,0x2e,0x30, + 0x35,0x20,0x2d,0x34,0x2e,0x35,0x39,0x37,0x32,0x36,0x43,0x33,0x34,0x39,0x2e,0x34, + 0x36,0x36,0x20,0x2d,0x31,0x36,0x2e,0x34,0x37,0x37,0x37,0x20,0x33,0x38,0x35,0x2e, + 0x31,0x31,0x39,0x20,0x34,0x37,0x2e,0x39,0x30,0x33,0x37,0x20,0x34,0x33,0x37,0x2e, + 0x34,0x37,0x33,0x20,0x38,0x39,0x2e,0x39,0x32,0x39,0x34,0x5a,0x22,0x20,0x66,0x69, + 0x6c,0x6c,0x3d,0x22,0x23,0x44,0x35,0x43,0x42,0x37,0x41,0x22,0x2f,0x3e,0xd,0xa, + 0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x37,0x32,0x30,0x2e,0x32,0x35, + 0x33,0x20,0x32,0x39,0x38,0x2e,0x37,0x30,0x39,0x43,0x35,0x38,0x30,0x2e,0x30,0x37, + 0x36,0x20,0x32,0x35,0x34,0x2e,0x33,0x37,0x36,0x20,0x35,0x33,0x35,0x2e,0x33,0x31, + 0x35,0x20,0x32,0x32,0x39,0x2e,0x34,0x37,0x20,0x34,0x38,0x31,0x2e,0x31,0x33,0x39, + 0x20,0x31,0x39,0x37,0x2e,0x32,0x38,0x37,0x43,0x34,0x33,0x36,0x2e,0x36,0x32,0x39, + 0x20,0x31,0x37,0x30,0x2e,0x38,0x31,0x32,0x20,0x33,0x39,0x35,0x2e,0x35,0x34,0x37, + 0x20,0x31,0x32,0x38,0x2e,0x35,0x34,0x20,0x34,0x31,0x32,0x2e,0x37,0x33,0x33,0x20, + 0x31,0x35,0x37,0x2e,0x31,0x38,0x32,0x43,0x34,0x33,0x31,0x2e,0x38,0x30,0x38,0x20, + 0x31,0x38,0x38,0x2e,0x39,0x32,0x37,0x20,0x34,0x35,0x33,0x2e,0x32,0x33,0x35,0x20, + 0x32,0x32,0x37,0x2e,0x30,0x35,0x37,0x20,0x35,0x34,0x36,0x2e,0x37,0x35,0x32,0x20, + 0x32,0x37,0x38,0x2e,0x34,0x33,0x38,0x43,0x36,0x32,0x33,0x2e,0x38,0x39,0x37,0x20, + 0x33,0x32,0x30,0x2e,0x38,0x32,0x38,0x20,0x37,0x32,0x39,0x2e,0x32,0x32,0x39,0x20, + 0x33,0x34,0x34,0x2e,0x31,0x34,0x36,0x20,0x37,0x35,0x34,0x2e,0x36,0x36,0x31,0x20, + 0x33,0x34,0x39,0x2e,0x30,0x30,0x34,0x43,0x37,0x32,0x39,0x2e,0x30,0x35,0x34,0x20, + 0x33,0x33,0x31,0x2e,0x38,0x34,0x32,0x20,0x37,0x32,0x30,0x2e,0x32,0x35,0x33,0x20, + 0x32,0x39,0x38,0x2e,0x37,0x30,0x39,0x20,0x37,0x32,0x30,0x2e,0x32,0x35,0x33,0x20, + 0x32,0x39,0x38,0x2e,0x37,0x30,0x39,0x5a,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22, + 0x23,0x44,0x35,0x43,0x42,0x37,0x41,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74, + 0x68,0x20,0x64,0x3d,0x22,0x4d,0x37,0x36,0x32,0x2e,0x30,0x30,0x37,0x20,0x33,0x35, + 0x38,0x2e,0x35,0x39,0x39,0x43,0x36,0x33,0x30,0x2e,0x36,0x37,0x31,0x20,0x33,0x33, + 0x32,0x2e,0x37,0x37,0x37,0x20,0x35,0x37,0x36,0x2e,0x34,0x35,0x38,0x20,0x33,0x30, + 0x35,0x2e,0x33,0x30,0x31,0x20,0x35,0x31,0x37,0x2e,0x36,0x38,0x31,0x20,0x32,0x37, + 0x34,0x2e,0x30,0x34,0x33,0x43,0x34,0x37,0x31,0x2e,0x39,0x35,0x36,0x20,0x32,0x34, + 0x39,0x2e,0x37,0x34,0x34,0x20,0x34,0x33,0x36,0x2e,0x37,0x32,0x33,0x20,0x32,0x31, + 0x34,0x2e,0x34,0x32,0x38,0x20,0x34,0x35,0x34,0x2e,0x33,0x33,0x37,0x20,0x32,0x34, + 0x32,0x2e,0x37,0x34,0x39,0x43,0x34,0x37,0x33,0x2e,0x35,0x31,0x39,0x20,0x32,0x37, + 0x33,0x2e,0x35,0x33,0x31,0x20,0x35,0x30,0x31,0x2e,0x31,0x35,0x35,0x20,0x33,0x30, + 0x36,0x2e,0x37,0x30,0x35,0x20,0x35,0x39,0x37,0x2e,0x38,0x31,0x32,0x20,0x33,0x35, + 0x31,0x2e,0x38,0x31,0x31,0x43,0x36,0x37,0x37,0x2e,0x35,0x39,0x39,0x20,0x33,0x38, + 0x39,0x2e,0x30,0x33,0x20,0x37,0x35,0x35,0x2e,0x39,0x36,0x36,0x20,0x34,0x30,0x32, + 0x2e,0x31,0x37,0x37,0x20,0x38,0x30,0x32,0x2e,0x31,0x32,0x35,0x20,0x34,0x30,0x32, + 0x2e,0x33,0x36,0x39,0x43,0x37,0x37,0x35,0x2e,0x34,0x38,0x32,0x20,0x33,0x38,0x36, + 0x2e,0x39,0x35,0x35,0x20,0x37,0x36,0x32,0x2e,0x30,0x34,0x32,0x20,0x33,0x35,0x38, + 0x2e,0x36,0x33,0x35,0x20,0x37,0x36,0x32,0x2e,0x30,0x34,0x32,0x20,0x33,0x35,0x38, + 0x2e,0x36,0x33,0x35,0x4c,0x37,0x36,0x32,0x2e,0x30,0x30,0x37,0x20,0x33,0x35,0x38, + 0x2e,0x35,0x39,0x39,0x5a,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x44,0x35, + 0x43,0x42,0x37,0x41,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64, + 0x3d,0x22,0x4d,0x38,0x39,0x39,0x2e,0x33,0x30,0x33,0x20,0x31,0x31,0x31,0x31,0x2e, + 0x38,0x33,0x4c,0x31,0x31,0x35,0x30,0x2e,0x33,0x35,0x20,0x38,0x38,0x37,0x2e,0x37, + 0x36,0x37,0x4c,0x31,0x31,0x35,0x30,0x2e,0x33,0x36,0x20,0x38,0x36,0x34,0x2e,0x30, + 0x38,0x37,0x4c,0x39,0x32,0x31,0x2e,0x32,0x31,0x38,0x20,0x31,0x30,0x36,0x36,0x2e, + 0x36,0x32,0x4c,0x38,0x39,0x39,0x2e,0x33,0x30,0x33,0x20,0x31,0x31,0x31,0x31,0x2e, + 0x38,0x33,0x5a,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x44,0x35,0x43,0x42, + 0x37,0x41,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x2f,0x67,0x3e,0xd,0xa,0x3c,0x2f,0x67, + 0x3e,0xd,0xa,0x3c,0x64,0x65,0x66,0x73,0x3e,0xd,0xa,0x3c,0x63,0x6c,0x69,0x70, + 0x50,0x61,0x74,0x68,0x20,0x69,0x64,0x3d,0x22,0x63,0x6c,0x69,0x70,0x30,0x5f,0x31, + 0x5f,0x37,0x39,0x22,0x3e,0xd,0xa,0x3c,0x72,0x65,0x63,0x74,0x20,0x77,0x69,0x64, + 0x74,0x68,0x3d,0x22,0x39,0x35,0x36,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d, + 0x22,0x38,0x38,0x38,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x77,0x68,0x69,0x74, + 0x65,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x2f,0x63,0x6c,0x69,0x70,0x50,0x61,0x74,0x68, + 0x3e,0xd,0xa,0x3c,0x2f,0x64,0x65,0x66,0x73,0x3e,0xd,0xa,0x3c,0x2f,0x73,0x76, + 0x67,0x3e,0xd,0xa, + // map.qml + 0x0,0x0,0x2,0xf5, + 0x0, + 0x0,0xa,0x7,0x78,0xda,0xad,0x55,0x4d,0x6b,0xdb,0x40,0x10,0xbd,0x7,0xf2,0x1f, + 0x16,0x9f,0xec,0x7c,0x6c,0xec,0x80,0xa1,0x28,0xd,0x25,0x38,0x94,0x16,0x1c,0x70, + 0xda,0x43,0xe3,0xe3,0x56,0x9a,0x48,0x4b,0xa5,0xdd,0x65,0x77,0x64,0xc7,0x2d,0xfd, + 0xef,0x9d,0x95,0x2c,0x5b,0xb2,0x64,0x39,0x87,0x2e,0x6,0xcb,0x3b,0xef,0x8d,0xe7, + 0xe3,0xcd,0x48,0x66,0x46,0x5b,0x64,0xcf,0xf8,0x9c,0xcb,0xf0,0x17,0xbb,0xe5,0x93, + 0xe9,0xf9,0x99,0xac,0x2e,0xe7,0x3a,0x14,0x28,0xb5,0x62,0xd3,0xe6,0xfd,0x42,0x3b, + 0xe9,0xef,0xa5,0x8a,0xb7,0xa6,0xf3,0xb3,0xaf,0x8,0x19,0xfb,0x73,0x7e,0xc6,0xe8, + 0x8,0x15,0x26,0xda,0x3a,0xfe,0x2a,0xd3,0x34,0x60,0x46,0x58,0x50,0xe8,0x31,0xde, + 0xf6,0x24,0x4c,0x5,0xf3,0x47,0x46,0x1,0xcb,0x84,0xd9,0x5f,0x74,0x73,0x2b,0xab, + 0x49,0xf3,0x58,0xaa,0x80,0x2d,0x8a,0xef,0xba,0x23,0x7f,0x94,0xc8,0x20,0x60,0x3, + 0xed,0xb2,0x41,0xd3,0x50,0xc2,0x17,0xc2,0x12,0x0,0xc1,0x1e,0xf2,0x9a,0x5c,0x4e, + 0xf1,0x18,0x4a,0x8d,0x87,0xb9,0x43,0x9d,0xf1,0x44,0x3b,0x1c,0xb4,0x9,0x2b,0x91, + 0xe6,0x9e,0x91,0x20,0x1a,0x17,0xdc,0xdc,0xa0,0x4c,0x81,0x6b,0x3,0xca,0xa1,0x5, + 0x40,0x72,0xc2,0xb5,0x8d,0x6f,0xe,0x98,0x7f,0xff,0x47,0x60,0xc6,0xea,0x95,0x8c, + 0xc0,0x3a,0xb,0xc6,0xb7,0x42,0xdb,0xd,0x8f,0xa4,0x13,0x3f,0x53,0x88,0x7a,0x22, + 0x45,0x9b,0xc3,0xf1,0x70,0x6a,0x8f,0x21,0xd5,0x1c,0x6c,0xd0,0xec,0x34,0xf,0xb5, + 0xb6,0x91,0x54,0x2,0x61,0x48,0x81,0xcc,0xa,0xc,0x4f,0x49,0x20,0x98,0x47,0x70, + 0xc5,0x6a,0x77,0x5a,0xc5,0xc5,0xe5,0x68,0xef,0xf2,0xb7,0xd6,0xd9,0x1c,0x56,0x40, + 0x3d,0xf5,0x7a,0xa9,0xae,0xbf,0x81,0x1,0xd1,0x4e,0x3c,0xd3,0x91,0x47,0x1a,0x2d, + 0x15,0xba,0xb9,0x74,0xd8,0x8c,0x9a,0x34,0x54,0xe8,0xb5,0xae,0xb9,0xfa,0xf1,0xa2, + 0x2a,0xb8,0x6d,0xd3,0x3e,0x89,0xa0,0xfc,0x97,0x47,0x81,0xa2,0xd,0x2b,0x55,0xb8, + 0xf0,0x3e,0xf8,0x1b,0x85,0x3c,0xee,0x87,0x6c,0x4a,0x48,0x1b,0xe4,0x74,0x6e,0x43, + 0xf0,0x71,0x6,0x94,0x6b,0x88,0x42,0xc5,0x29,0x74,0x85,0xec,0xcf,0x5a,0x46,0x98, + 0x4,0xec,0x76,0xdc,0x6d,0x4e,0x40,0xc6,0x9,0x1e,0xb7,0x87,0x3a,0xd5,0xd4,0xb4, + 0x81,0xed,0x14,0x81,0x3f,0x56,0x44,0x32,0x77,0xdd,0xe9,0xfc,0xed,0x13,0xc6,0xfe, + 0xc7,0x93,0xce,0x1d,0x3c,0x58,0x10,0x87,0x49,0x14,0x83,0x5c,0x19,0x9b,0xa6,0xfe, + 0x91,0xf6,0x27,0xb2,0x22,0xe6,0x28,0x6c,0xc,0xb8,0x5d,0x7,0x4d,0x3b,0x9,0xde, + 0x80,0xc5,0xd,0x23,0xdf,0x29,0x73,0x84,0xc4,0xb9,0x28,0xa1,0x3c,0x6c,0xa,0xf1, + 0x34,0x51,0xab,0x26,0xb1,0x52,0xeb,0x49,0xe6,0x4b,0xc0,0xc6,0x27,0x41,0xcb,0x2, + 0xd4,0x7,0xf3,0xa3,0xf0,0x59,0x84,0xe8,0x9b,0xf5,0x24,0x30,0xe1,0x46,0xaf,0x87, + 0xb7,0xc5,0x0,0xf1,0xdd,0x98,0xb0,0x6b,0x9a,0x93,0xd1,0xa1,0xa3,0x30,0xb7,0x4e, + 0xdb,0xef,0x89,0x30,0xe0,0xa7,0x93,0x3f,0x58,0xab,0xd7,0xb3,0xe2,0xf2,0x10,0xaa, + 0xd5,0xc2,0x82,0x73,0x40,0x6d,0xe9,0x90,0x5b,0x55,0x42,0x76,0x7f,0xba,0x86,0x7b, + 0x3c,0xbd,0x9,0xee,0xdf,0x51,0xba,0x1d,0xe1,0xc5,0xc3,0x2b,0x4d,0xf0,0xe2,0xe9, + 0xe5,0x8,0x74,0xd9,0x86,0x2e,0x5b,0x8a,0x6c,0x65,0xb8,0xdd,0x4e,0xb3,0x84,0xe6, + 0xea,0x48,0xa6,0x2b,0x61,0x59,0xf4,0xd6,0x11,0x8,0x55,0xb8,0xc,0xf2,0x8,0x67, + 0xd3,0x11,0x51,0xc5,0x59,0x76,0xcd,0xba,0x67,0xbd,0x16,0x7d,0x25,0x66,0xbd,0xb1, + 0x93,0x29,0xf1,0x1a,0xdd,0x1d,0xb1,0xb,0x36,0xe6,0x63,0x3a,0xd3,0xbb,0x2e,0x57, + 0xfb,0x1a,0x93,0xab,0xa3,0x5b,0xb8,0x7b,0xc8,0x77,0xad,0xbd,0xf6,0x39,0x5c,0xb0, + 0xeb,0x32,0xa6,0xab,0x3e,0x34,0x35,0xf6,0xd2,0x57,0x69,0x87,0x6e,0x83,0x47,0x27, + 0xbb,0xf1,0x23,0x1,0xbf,0xb4,0xbb,0xf6,0xf1,0x2b,0x1b,0xae,0xbd,0x95,0x17,0xfb, + 0xef,0x11,0x52,0x14,0x7c,0xc3,0x3e,0xb2,0xf1,0xe8,0xd8,0x2e,0x3c,0x18,0x86,0x7b, + 0x36,0xe9,0x58,0x59,0xc,0x52,0x7,0xef,0xf3,0x70,0xd9,0xed,0xa1,0xbb,0xf4,0x7b, + 0xda,0xb6,0x91,0x99,0x78,0x1b,0x4e,0xae,0xb6,0xcf,0x52,0xd,0x1b,0x20,0x6a,0xf0, + 0x87,0xd1,0xe8,0xee,0x64,0x7d,0x66,0x5a,0xa1,0x90,0xca,0x15,0x2b,0xb4,0x4f,0xb2, + 0xb5,0x29,0x6f,0x68,0x30,0xac,0x3b,0x60,0x9f,0xfc,0x2,0x98,0xa5,0x9a,0x46,0xfc, + 0x8b,0x50,0x51,0xb9,0x5,0x58,0x7b,0x2d,0xf4,0xbf,0xee,0xe9,0x8b,0x3e,0xff,0x0, + 0x94,0xce,0x8c,0xed, + // map.qml + 0x0,0x0,0x2,0xf5, + 0x0, + 0x0,0xa,0x7,0x78,0xda,0xad,0x55,0x4d,0x6b,0xdb,0x40,0x10,0xbd,0x7,0xf2,0x1f, + 0x16,0x9f,0xec,0x7c,0x6c,0xec,0x80,0xa1,0x28,0xd,0x25,0x38,0x94,0x16,0x1c,0x70, + 0xda,0x43,0xe3,0xe3,0x56,0x9a,0x48,0x4b,0xa5,0xdd,0x65,0x77,0x64,0xc7,0x2d,0xfd, + 0xef,0x9d,0x95,0x2c,0x5b,0xb2,0x64,0x39,0x87,0x2e,0x6,0xcb,0x3b,0xef,0x8d,0xe7, + 0xe3,0xcd,0x48,0x66,0x46,0x5b,0x64,0xcf,0xf8,0x9c,0xcb,0xf0,0x17,0xbb,0xe5,0x93, + 0xe9,0xf9,0x99,0xac,0x2e,0xe7,0x3a,0x14,0x28,0xb5,0x62,0xd3,0xe6,0xfd,0x42,0x3b, + 0xe9,0xef,0xa5,0x8a,0xb7,0xa6,0xf3,0xb3,0xaf,0x8,0x19,0xfb,0x73,0x7e,0xc6,0xe8, + 0x8,0x15,0x26,0xda,0x3a,0xfe,0x2a,0xd3,0x34,0x60,0x46,0x58,0x50,0xe8,0x31,0xde, + 0xf6,0x24,0x4c,0x5,0xf3,0x47,0x46,0x1,0xcb,0x84,0xd9,0x5f,0x74,0x73,0x2b,0xab, + 0x49,0xf3,0x58,0xaa,0x80,0x2d,0x8a,0xef,0xba,0x23,0x7f,0x94,0xc8,0x20,0x60,0x3, + 0xed,0xb2,0x41,0xd3,0x50,0xc2,0x17,0xc2,0x12,0x0,0xc1,0x1e,0xf2,0x9a,0x5c,0x4e, + 0xf1,0x18,0x4a,0x8d,0x87,0xb9,0x43,0x9d,0xf1,0x44,0x3b,0x1c,0xb4,0x9,0x2b,0x91, + 0xe6,0x9e,0x91,0x20,0x1a,0x17,0xdc,0xdc,0xa0,0x4c,0x81,0x6b,0x3,0xca,0xa1,0x5, + 0x40,0x72,0xc2,0xb5,0x8d,0x6f,0xe,0x98,0x7f,0xff,0x47,0x60,0xc6,0xea,0x95,0x8c, + 0xc0,0x3a,0xb,0xc6,0xb7,0x42,0xdb,0xd,0x8f,0xa4,0x13,0x3f,0x53,0x88,0x7a,0x22, + 0x45,0x9b,0xc3,0xf1,0x70,0x6a,0x8f,0x21,0xd5,0x1c,0x6c,0xd0,0xec,0x34,0xf,0xb5, + 0xb6,0x91,0x54,0x2,0x61,0x48,0x81,0xcc,0xa,0xc,0x4f,0x49,0x20,0x98,0x47,0x70, + 0xc5,0x6a,0x77,0x5a,0xc5,0xc5,0xe5,0x68,0xef,0xf2,0xb7,0xd6,0xd9,0x1c,0x56,0x40, + 0x3d,0xf5,0x7a,0xa9,0xae,0xbf,0x81,0x1,0xd1,0x4e,0x3c,0xd3,0x91,0x47,0x1a,0x2d, + 0x15,0xba,0xb9,0x74,0xd8,0x8c,0x9a,0x34,0x54,0xe8,0xb5,0xae,0xb9,0xfa,0xf1,0xa2, + 0x2a,0xb8,0x6d,0xd3,0x3e,0x89,0xa0,0xfc,0x97,0x47,0x81,0xa2,0xd,0x2b,0x55,0xb8, + 0xf0,0x3e,0xf8,0x1b,0x85,0x3c,0xee,0x87,0x6c,0x4a,0x48,0x1b,0xe4,0x74,0x6e,0x43, + 0xf0,0x71,0x6,0x94,0x6b,0x88,0x42,0xc5,0x29,0x74,0x85,0xec,0xcf,0x5a,0x46,0x98, + 0x4,0xec,0x76,0xdc,0x6d,0x4e,0x40,0xc6,0x9,0x1e,0xb7,0x87,0x3a,0xd5,0xd4,0xb4, + 0x81,0xed,0x14,0x81,0x3f,0x56,0x44,0x32,0x77,0xdd,0xe9,0xfc,0xed,0x13,0xc6,0xfe, + 0xc7,0x93,0xce,0x1d,0x3c,0x58,0x10,0x87,0x49,0x14,0x83,0x5c,0x19,0x9b,0xa6,0xfe, + 0x91,0xf6,0x27,0xb2,0x22,0xe6,0x28,0x6c,0xc,0xb8,0x5d,0x7,0x4d,0x3b,0x9,0xde, + 0x80,0xc5,0xd,0x23,0xdf,0x29,0x73,0x84,0xc4,0xb9,0x28,0xa1,0x3c,0x6c,0xa,0xf1, + 0x34,0x51,0xab,0x26,0xb1,0x52,0xeb,0x49,0xe6,0x4b,0xc0,0xc6,0x27,0x41,0xcb,0x2, + 0xd4,0x7,0xf3,0xa3,0xf0,0x59,0x84,0xe8,0x9b,0xf5,0x24,0x30,0xe1,0x46,0xaf,0x87, + 0xb7,0xc5,0x0,0xf1,0xdd,0x98,0xb0,0x6b,0x9a,0x93,0xd1,0xa1,0xa3,0x30,0xb7,0x4e, + 0xdb,0xef,0x89,0x30,0xe0,0xa7,0x93,0x3f,0x58,0xab,0xd7,0xb3,0xe2,0xf2,0x10,0xaa, + 0xd5,0xc2,0x82,0x73,0x40,0x6d,0xe9,0x90,0x5b,0x55,0x42,0x76,0x7f,0xba,0x86,0x7b, + 0x3c,0xbd,0x9,0xee,0xdf,0x51,0xba,0x1d,0xe1,0xc5,0xc3,0x2b,0x4d,0xf0,0xe2,0xe9, + 0xe5,0x8,0x74,0xd9,0x86,0x2e,0x5b,0x8a,0x6c,0x65,0xb8,0xdd,0x4e,0xb3,0x84,0xe6, + 0xea,0x48,0xa6,0x2b,0x61,0x59,0xf4,0xd6,0x11,0x8,0x55,0xb8,0xc,0xf2,0x8,0x67, + 0xd3,0x11,0x51,0xc5,0x59,0x76,0xcd,0xba,0x67,0xbd,0x16,0x7d,0x25,0x66,0xbd,0xb1, + 0x93,0x29,0xf1,0x1a,0xdd,0x1d,0xb1,0xb,0x36,0xe6,0x63,0x3a,0xd3,0xbb,0x2e,0x57, + 0xfb,0x1a,0x93,0xab,0xa3,0x5b,0xb8,0x7b,0xc8,0x77,0xad,0xbd,0xf6,0x39,0x5c,0xb0, + 0xeb,0x32,0xa6,0xab,0x3e,0x34,0x35,0xf6,0xd2,0x57,0x69,0x87,0x6e,0x83,0x47,0x27, + 0xbb,0xf1,0x23,0x1,0xbf,0xb4,0xbb,0xf6,0xf1,0x2b,0x1b,0xae,0xbd,0x95,0x17,0xfb, + 0xef,0x11,0x52,0x14,0x7c,0xc3,0x3e,0xb2,0xf1,0xe8,0xd8,0x2e,0x3c,0x18,0x86,0x7b, + 0x36,0xe9,0x58,0x59,0xc,0x52,0x7,0xef,0xf3,0x70,0xd9,0xed,0xa1,0xbb,0xf4,0x7b, + 0xda,0xb6,0x91,0x99,0x78,0x1b,0x4e,0xae,0xb6,0xcf,0x52,0xd,0x1b,0x20,0x6a,0xf0, + 0x87,0xd1,0xe8,0xee,0x64,0x7d,0x66,0x5a,0xa1,0x90,0xca,0x15,0x2b,0xb4,0x4f,0xb2, + 0xb5,0x29,0x6f,0x68,0x30,0xac,0x3b,0x60,0x9f,0xfc,0x2,0x98,0xa5,0x9a,0x46,0xfc, + 0x8b,0x50,0x51,0xb9,0x5,0x58,0x7b,0x2d,0xf4,0xbf,0xee,0xe9,0x8b,0x3e,0xff,0x0, + 0x94,0xce,0x8c,0xed, + +}; + +static const unsigned char qt_resource_name[] = { + // qml + 0x0,0x3, + 0x0,0x0,0x78,0x3c, + 0x0,0x71, + 0x0,0x6d,0x0,0x6c, + // visual + 0x0,0x6, + 0x7,0xd0,0xab,0x7c, + 0x0,0x76, + 0x0,0x69,0x0,0x73,0x0,0x75,0x0,0x61,0x0,0x6c, + // png + 0x0,0x3, + 0x0,0x0,0x77,0x47, + 0x0,0x70, + 0x0,0x6e,0x0,0x67, + // res + 0x0,0x3, + 0x0,0x0,0x78,0xc3, + 0x0,0x72, + 0x0,0x65,0x0,0x73, + // branch-close.png + 0x0,0x10, + 0xf,0xbc,0x41,0x27, + 0x0,0x62, + 0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x63,0x0,0x68,0x0,0x2d,0x0,0x63,0x0,0x6c,0x0,0x6f,0x0,0x73,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // branch-end.png + 0x0,0xe, + 0xd,0x4e,0x7b,0x47, + 0x0,0x62, + 0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x63,0x0,0x68,0x0,0x2d,0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // delete.png + 0x0,0xa, + 0xc,0xad,0xf,0x7, + 0x0,0x64, + 0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x74,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // arrowRight.png + 0x0,0xe, + 0xe,0xda,0xdc,0x87, + 0x0,0x61, + 0x0,0x72,0x0,0x72,0x0,0x6f,0x0,0x77,0x0,0x52,0x0,0x69,0x0,0x67,0x0,0x68,0x0,0x74,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // arrowLeft.png + 0x0,0xd, + 0xa,0xe5,0x8e,0xa7, + 0x0,0x61, + 0x0,0x72,0x0,0x72,0x0,0x6f,0x0,0x77,0x0,0x4c,0x0,0x65,0x0,0x66,0x0,0x74,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // vline.png + 0x0,0x9, + 0x0,0x48,0xad,0x27, + 0x0,0x76, + 0x0,0x6c,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // bell.png + 0x0,0x8, + 0xc,0x2f,0x5a,0x47, + 0x0,0x62, + 0x0,0x65,0x0,0x6c,0x0,0x6c,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // open.png + 0x0,0x8, + 0x6,0xc1,0x59,0x87, + 0x0,0x6f, + 0x0,0x70,0x0,0x65,0x0,0x6e,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // branch-more.png + 0x0,0xf, + 0x6,0x16,0x91,0xe7, + 0x0,0x62, + 0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x63,0x0,0x68,0x0,0x2d,0x0,0x6d,0x0,0x6f,0x0,0x72,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // checked.png + 0x0,0xb, + 0x1,0x64,0x80,0x7, + 0x0,0x63, + 0x0,0x68,0x0,0x65,0x0,0x63,0x0,0x6b,0x0,0x65,0x0,0x64,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // close.png + 0x0,0x9, + 0x6,0x98,0x83,0x27, + 0x0,0x63, + 0x0,0x6c,0x0,0x6f,0x0,0x73,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // svg + 0x0,0x3, + 0x0,0x0,0x7a,0xc7, + 0x0,0x73, + 0x0,0x76,0x0,0x67, + // chevron-down.png + 0x0,0x10, + 0xe,0x17,0xb,0x7, + 0x0,0x63, + 0x0,0x68,0x0,0x65,0x0,0x76,0x0,0x72,0x0,0x6f,0x0,0x6e,0x0,0x2d,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x6e,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // settings.svg + 0x0,0xc, + 0xb,0xdf,0x2c,0xc7, + 0x0,0x73, + 0x0,0x65,0x0,0x74,0x0,0x74,0x0,0x69,0x0,0x6e,0x0,0x67,0x0,0x73,0x0,0x2e,0x0,0x73,0x0,0x76,0x0,0x67, + // fema-wing.svg + 0x0,0xd, + 0x9,0xd0,0xd2,0xc7, + 0x0,0x66, + 0x0,0x65,0x0,0x6d,0x0,0x61,0x0,0x2d,0x0,0x77,0x0,0x69,0x0,0x6e,0x0,0x67,0x0,0x2e,0x0,0x73,0x0,0x76,0x0,0x67, + // map.qml + 0x0,0x7, + 0x3,0x83,0x58,0xdc, + 0x0,0x6d, + 0x0,0x61,0x0,0x70,0x0,0x2e,0x0,0x71,0x0,0x6d,0x0,0x6c, + +}; + +static const unsigned char qt_resource_struct[] = { + // : + 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + // :/png + 0x0,0x0,0x0,0x1e,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xd, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + // :/qml + 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x9, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + // :/visual + 0x0,0x0,0x0,0xc,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + // :/visual/res + 0x0,0x0,0x0,0x2a,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x5, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + // :/visual/res/svg + 0x0,0x0,0x1,0x76,0x0,0x2,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x6, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + // :/visual/res/svg/fema-wing.svg + 0x0,0x0,0x1,0xc6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x1c,0x1c, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x17, + // :/visual/res/svg/settings.svg + 0x0,0x0,0x1,0xa8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x14,0x6c, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x17, + // :/visual/res/svg/chevron-down.png + 0x0,0x0,0x1,0x82,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x13,0x1d, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x16, + // :/qml/res + 0x0,0x0,0x0,0x2a,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xb, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + // :/qml/map.qml + 0x0,0x0,0x1,0xe6,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x50,0x75, +0x0,0x0,0x1,0x94,0x22,0x1f,0xb5,0xe9, + // :/qml/res/qml + 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + // :/qml/res/qml/map.qml + 0x0,0x0,0x1,0xe6,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x53,0x6e, +0x0,0x0,0x1,0x94,0x22,0x1f,0xb5,0xe9, + // :/png/res + 0x0,0x0,0x0,0x2a,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xe, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + // :/png/res/png + 0x0,0x0,0x0,0x1e,0x0,0x2,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0xf, +0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + // :/png/res/png/vline.png + 0x0,0x0,0x0,0xda,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xc,0x13, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x15, + // :/png/res/png/checked.png + 0x0,0x0,0x1,0x42,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x11,0x31, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x14, + // :/png/res/png/branch-more.png + 0x0,0x0,0x1,0x1e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x10,0x7d, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x14, + // :/png/res/png/close.png + 0x0,0x0,0x1,0x5e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x12,0x20, +0x0,0x0,0x1,0x94,0x32,0x40,0x4e,0x90, + // :/png/res/png/open.png + 0x0,0x0,0x1,0x8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xf,0x9b, +0x0,0x0,0x1,0x94,0x32,0x41,0x97,0x64, + // :/png/res/png/arrowLeft.png + 0x0,0x0,0x0,0xba,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xa,0xc3, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x13, + // :/png/res/png/bell.png + 0x0,0x0,0x0,0xf2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xd,0x28, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x13, + // :/png/res/png/delete.png + 0x0,0x0,0x0,0x7e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x5,0x12, +0x0,0x0,0x1,0x94,0x42,0x8d,0x10,0x79, + // :/png/res/png/branch-end.png + 0x0,0x0,0x0,0x5c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x2,0x20, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x14, + // :/png/res/png/arrowRight.png + 0x0,0x0,0x0,0x98,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x9,0x73, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x13, + // :/png/res/png/branch-close.png + 0x0,0x0,0x0,0x36,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, +0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x13, + +}; + +#ifdef QT_NAMESPACE +# define QT_RCC_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name +# define QT_RCC_MANGLE_NAMESPACE0(x) x +# define QT_RCC_MANGLE_NAMESPACE1(a, b) a##_##b +# define QT_RCC_MANGLE_NAMESPACE2(a, b) QT_RCC_MANGLE_NAMESPACE1(a,b) +# define QT_RCC_MANGLE_NAMESPACE(name) QT_RCC_MANGLE_NAMESPACE2( \ + QT_RCC_MANGLE_NAMESPACE0(name), QT_RCC_MANGLE_NAMESPACE0(QT_NAMESPACE)) +#else +# define QT_RCC_PREPEND_NAMESPACE(name) name +# define QT_RCC_MANGLE_NAMESPACE(name) name +#endif + +#if defined(QT_INLINE_NAMESPACE) +inline namespace QT_NAMESPACE { +#elif defined(QT_NAMESPACE) +namespace QT_NAMESPACE { +#endif + +bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); +bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); + +#if defined(__ELF__) || defined(__APPLE__) +static inline unsigned char qResourceFeatureZlib() +{ + extern const unsigned char qt_resourceFeatureZlib; + return qt_resourceFeatureZlib; +} +#else +unsigned char qResourceFeatureZlib(); +#endif + +#ifdef QT_NAMESPACE +} +#endif + +int QT_RCC_MANGLE_NAMESPACE(qInitResources_resources)(); +int QT_RCC_MANGLE_NAMESPACE(qInitResources_resources)() +{ + int version = 3; + QT_RCC_PREPEND_NAMESPACE(qRegisterResourceData) + (version, qt_resource_struct, qt_resource_name, qt_resource_data); + return 1; +} + +int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_resources)(); +int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_resources)() +{ + int version = 3; + version += QT_RCC_PREPEND_NAMESPACE(qResourceFeatureZlib()); + QT_RCC_PREPEND_NAMESPACE(qUnregisterResourceData) + (version, qt_resource_struct, qt_resource_name, qt_resource_data); + return 1; +} + +#ifdef __clang__ +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wexit-time-destructors" +#endif + +namespace { + struct initializer { + initializer() { QT_RCC_MANGLE_NAMESPACE(qInitResources_resources)(); } + ~initializer() { QT_RCC_MANGLE_NAMESPACE(qCleanupResources_resources)(); } + } dummy; +} + +#ifdef __clang__ +# pragma clang diagnostic pop +#endif diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/include/ui_alarmdialog.h b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/include/ui_alarmdialog.h new file mode 100644 index 0000000..4f9a644 --- /dev/null +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/include/ui_alarmdialog.h @@ -0,0 +1,284 @@ +/******************************************************************************** +** Form generated from reading UI file 'alarmdialog.ui' +** +** Created by: Qt User Interface Compiler version 6.8.1 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_ALARMDIALOG_H +#define UI_ALARMDIALOG_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_alarmdialog +{ +public: + QVBoxLayout *verticalLayout; + QHBoxLayout *horizontalLayout_7; + QLabel *label_2; + QLabel *nameHead; + QSpacerItem *horizontalSpacer; + QHBoxLayout *horizontalLayout_6; + QVBoxLayout *verticalLayout_2; + QLabel *dateStart; + QLabel *dateEnd; + QHBoxLayout *horizontalLayout; + QLabel *name; + QHBoxLayout *chartLayout; + QHBoxLayout *horizontalLayout_2; + QQuickWidget *map; + QHBoxLayout *horizontalLayout_5; + QSpacerItem *horizontalSpacer_2; + QPushButton *cancelButton; + QPushButton *statisticButton; + + void setupUi(QWidget *alarmdialog) + { + if (alarmdialog->objectName().isEmpty()) + alarmdialog->setObjectName("alarmdialog"); + alarmdialog->resize(775, 850); + alarmdialog->setMinimumSize(QSize(775, 850)); + alarmdialog->setMaximumSize(QSize(775, 850)); + alarmdialog->setStyleSheet(QString::fromUtf8("QWidget#alarmdialog{\n" +"background: white;\n" +"}")); + verticalLayout = new QVBoxLayout(alarmdialog); + verticalLayout->setSpacing(0); + verticalLayout->setObjectName("verticalLayout"); + verticalLayout->setContentsMargins(0, 0, 0, 0); + horizontalLayout_7 = new QHBoxLayout(); + horizontalLayout_7->setSpacing(20); + horizontalLayout_7->setObjectName("horizontalLayout_7"); + horizontalLayout_7->setContentsMargins(25, -1, -1, 25); + label_2 = new QLabel(alarmdialog); + label_2->setObjectName("label_2"); + label_2->setMinimumSize(QSize(29, 32)); + label_2->setMaximumSize(QSize(29, 32)); + label_2->setPixmap(QPixmap(QString::fromUtf8(":/png/res/png/bell.png"))); + + horizontalLayout_7->addWidget(label_2); + + nameHead = new QLabel(alarmdialog); + nameHead->setObjectName("nameHead"); + QSizePolicy sizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Preferred); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(29); + sizePolicy.setHeightForWidth(nameHead->sizePolicy().hasHeightForWidth()); + nameHead->setSizePolicy(sizePolicy); + nameHead->setMinimumSize(QSize(0, 29)); + nameHead->setMaximumSize(QSize(16777215, 29)); + nameHead->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 24px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_7->addWidget(nameHead); + + horizontalSpacer = new QSpacerItem(40, 29, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_7->addItem(horizontalSpacer); + + + verticalLayout->addLayout(horizontalLayout_7); + + horizontalLayout_6 = new QHBoxLayout(); + horizontalLayout_6->setSpacing(0); + horizontalLayout_6->setObjectName("horizontalLayout_6"); + horizontalLayout_6->setContentsMargins(0, -1, 0, 0); + verticalLayout_2 = new QVBoxLayout(); + verticalLayout_2->setSpacing(0); + verticalLayout_2->setObjectName("verticalLayout_2"); + verticalLayout_2->setContentsMargins(25, -1, 25, 15); + dateStart = new QLabel(alarmdialog); + dateStart->setObjectName("dateStart"); + dateStart->setMinimumSize(QSize(0, 27)); + dateStart->setMaximumSize(QSize(16777215, 27)); + dateStart->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + verticalLayout_2->addWidget(dateStart); + + dateEnd = new QLabel(alarmdialog); + dateEnd->setObjectName("dateEnd"); + dateEnd->setMaximumSize(QSize(16777215, 27)); + dateEnd->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + verticalLayout_2->addWidget(dateEnd); + + + horizontalLayout_6->addLayout(verticalLayout_2); + + + verticalLayout->addLayout(horizontalLayout_6); + + horizontalLayout = new QHBoxLayout(); + horizontalLayout->setSpacing(0); + horizontalLayout->setObjectName("horizontalLayout"); + horizontalLayout->setContentsMargins(25, -1, 25, 15); + name = new QLabel(alarmdialog); + name->setObjectName("name"); + name->setMinimumSize(QSize(0, 27)); + name->setMaximumSize(QSize(16777215, 27)); + name->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout->addWidget(name); + + + verticalLayout->addLayout(horizontalLayout); + + chartLayout = new QHBoxLayout(); + chartLayout->setSpacing(0); + chartLayout->setObjectName("chartLayout"); + chartLayout->setContentsMargins(25, -1, 25, -1); + + verticalLayout->addLayout(chartLayout); + + horizontalLayout_2 = new QHBoxLayout(); + horizontalLayout_2->setSpacing(0); + horizontalLayout_2->setObjectName("horizontalLayout_2"); + horizontalLayout_2->setContentsMargins(25, -1, 25, -1); + map = new QQuickWidget(alarmdialog); + map->setObjectName("map"); + map->setMinimumSize(QSize(710, 320)); + map->setMaximumSize(QSize(710, 320)); + map->setResizeMode(QQuickWidget::ResizeMode::SizeRootObjectToView); + + horizontalLayout_2->addWidget(map); + + + verticalLayout->addLayout(horizontalLayout_2); + + horizontalLayout_5 = new QHBoxLayout(); + horizontalLayout_5->setSpacing(10); + horizontalLayout_5->setObjectName("horizontalLayout_5"); + horizontalLayout_5->setContentsMargins(25, -1, 25, -1); + horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_5->addItem(horizontalSpacer_2); + + cancelButton = new QPushButton(alarmdialog); + cancelButton->setObjectName("cancelButton"); + cancelButton->setMinimumSize(QSize(110, 41)); + cancelButton->setMaximumSize(QSize(110, 41)); + cancelButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #e0f2f7;\n" +" border-color: #1A4A73;\n" +" color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +" color: white; \n" +"}")); + + horizontalLayout_5->addWidget(cancelButton); + + statisticButton = new QPushButton(alarmdialog); + statisticButton->setObjectName("statisticButton"); + statisticButton->setMinimumSize(QSize(266, 41)); + statisticButton->setMaximumSize(QSize(266, 41)); + statisticButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + horizontalLayout_5->addWidget(statisticButton); + + + verticalLayout->addLayout(horizontalLayout_5); + + + retranslateUi(alarmdialog); + + QMetaObject::connectSlotsByName(alarmdialog); + } // setupUi + + void retranslateUi(QWidget *alarmdialog) + { + alarmdialog->setWindowTitle(QCoreApplication::translate("alarmdialog", "Form", nullptr)); + label_2->setText(QString()); + nameHead->setText(QCoreApplication::translate("alarmdialog", "\320\235\320\260\320\267\320\262\320\260\320\275\320\270\320\265 \320\264\320\260\321\202\321\207\320\270\320\272\320\260", nullptr)); + dateStart->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr)); + dateEnd->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr)); + name->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr)); + cancelButton->setText(QCoreApplication::translate("alarmdialog", "\320\236\321\202\320\274\320\265\320\275\320\260", nullptr)); + statisticButton->setText(QCoreApplication::translate("alarmdialog", "\320\237\320\265\321\200\320\265\320\271\321\202\320\270 \320\272 \321\201\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\265", nullptr)); + } // retranslateUi + +}; + +namespace Ui { + class alarmdialog: public Ui_alarmdialog {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_ALARMDIALOG_H diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/include/ui_apiform.h b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/include/ui_apiform.h new file mode 100644 index 0000000..e09959f --- /dev/null +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/include/ui_apiform.h @@ -0,0 +1,201 @@ +/******************************************************************************** +** Form generated from reading UI file 'apiform.ui' +** +** Created by: Qt User Interface Compiler version 6.8.1 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_APIFORM_H +#define UI_APIFORM_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_ApiForm +{ +public: + QVBoxLayout *verticalLayout; + QLabel *label_3; + QHBoxLayout *horizontalLayout; + QLabel *label; + QLabel *label_2; + QHBoxLayout *horizontalLayout_2; + QLineEdit *adres; + QLineEdit *port; + QSpacerItem *verticalSpacer_2; + QPushButton *loginButton; + QSpacerItem *verticalSpacer; + + void setupUi(QWidget *ApiForm) + { + if (ApiForm->objectName().isEmpty()) + ApiForm->setObjectName("ApiForm"); + ApiForm->resize(800, 400); + ApiForm->setMinimumSize(QSize(800, 400)); + ApiForm->setMaximumSize(QSize(800, 400)); + ApiForm->setStyleSheet(QString::fromUtf8("#ApiForm{\n" +" image: url(:/visual/res/svg/fema-wing.svg);\n" +" background-color: #ffffff; \n" +" image-position: bottom right;\n" +" border: none;\n" +"}")); + verticalLayout = new QVBoxLayout(ApiForm); + verticalLayout->setSpacing(0); + verticalLayout->setObjectName("verticalLayout"); + verticalLayout->setContentsMargins(25, 25, 25, 0); + label_3 = new QLabel(ApiForm); + label_3->setObjectName("label_3"); + label_3->setMaximumSize(QSize(16777215, 30)); + label_3->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + verticalLayout->addWidget(label_3); + + horizontalLayout = new QHBoxLayout(); + horizontalLayout->setSpacing(10); + horizontalLayout->setObjectName("horizontalLayout"); + label = new QLabel(ApiForm); + label->setObjectName("label"); + label->setMinimumSize(QSize(0, 40)); + label->setMaximumSize(QSize(16777215, 40)); + label->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 500;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout->addWidget(label); + + label_2 = new QLabel(ApiForm); + label_2->setObjectName("label_2"); + label_2->setMinimumSize(QSize(0, 40)); + label_2->setMaximumSize(QSize(16777215, 40)); + label_2->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 500;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout->addWidget(label_2); + + + verticalLayout->addLayout(horizontalLayout); + + horizontalLayout_2 = new QHBoxLayout(); + horizontalLayout_2->setSpacing(10); + horizontalLayout_2->setObjectName("horizontalLayout_2"); + adres = new QLineEdit(ApiForm); + adres->setObjectName("adres"); + adres->setMinimumSize(QSize(0, 40)); + adres->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_2->addWidget(adres); + + port = new QLineEdit(ApiForm); + port->setObjectName("port"); + port->setMinimumSize(QSize(0, 40)); + port->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_2->addWidget(port); + + + verticalLayout->addLayout(horizontalLayout_2); + + verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Fixed); + + verticalLayout->addItem(verticalSpacer_2); + + loginButton = new QPushButton(ApiForm); + loginButton->setObjectName("loginButton"); + loginButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + verticalLayout->addWidget(loginButton); + + verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Expanding); + + verticalLayout->addItem(verticalSpacer); + + + retranslateUi(ApiForm); + + QMetaObject::connectSlotsByName(ApiForm); + } // setupUi + + void retranslateUi(QWidget *ApiForm) + { + ApiForm->setWindowTitle(QCoreApplication::translate("ApiForm", "Form", nullptr)); + label_3->setText(QCoreApplication::translate("ApiForm", "\320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\271\321\202\320\265! \320\222\320\262\320\265\320\264\320\270\321\202\320\265 \320\277\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260 \320\260\320\264\321\200\320\265\321\201 \320\270 \320\277\320\276\321\200\321\202 \321\203\321\201\321\202\321\200\320\276\320\271\321\201\321\202\320\262\320\260", nullptr)); + label->setText(QCoreApplication::translate("ApiForm", "\320\220\320\264\321\200\320\265\321\201:", nullptr)); + label_2->setText(QCoreApplication::translate("ApiForm", "\320\237\320\276\321\200\321\202:", nullptr)); + loginButton->setText(QCoreApplication::translate("ApiForm", "\320\222\320\276\320\271\321\202\320\270 \320\262 \320\277\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\320\265", nullptr)); + } // retranslateUi + +}; + +namespace Ui { + class ApiForm: public Ui_ApiForm {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_APIFORM_H diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/include/ui_mainwindow.h b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/include/ui_mainwindow.h new file mode 100644 index 0000000..5c87b6e --- /dev/null +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/include/ui_mainwindow.h @@ -0,0 +1,2786 @@ +/******************************************************************************** +** Form generated from reading UI file 'mainwindow.ui' +** +** Created by: Qt User Interface Compiler version 6.8.1 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_MAINWINDOW_H +#define UI_MAINWINDOW_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_MainWindow +{ +public: + QWidget *centralwidget; + QGridLayout *gridLayout_4; + QTabWidget *tabWidget; + QWidget *sensorsTab; + QVBoxLayout *SensorsTabLayout; + QHBoxLayout *nameLayout; + QLabel *group; + QLabel *showHidden; + QSpacerItem *horizontalSpacer_4; + QHBoxLayout *selectLayout; + QComboBox *groupSelect; + QComboBox *showHiddenSelect; + QSpacerItem *horizontalSpacer_2; + QHBoxLayout *searchLayout; + QLineEdit *search; + QSpacerItem *horizontalSpacer_3; + QVBoxLayout *sensorsLayout; + QWidget *incidentsTab; + QVBoxLayout *verticalLayout; + QVBoxLayout *IncidentsSearchLayout; + QHBoxLayout *IncidentsSearchTextLayout; + QLabel *TimeIntrval; + QPushButton *updateTreeButtonIncident; + QSpacerItem *horizontalSpacer_10; + QPushButton *searchIncidents; + QSpacerItem *horizontalSpacer_8; + QHBoxLayout *horizontalLayout_6; + QComboBox *timeIntervalIncedents; + QLineEdit *searchIncedents; + QSpacerItem *horizontalSpacer; + QHBoxLayout *IncidentsDataLayout; + QVBoxLayout *verticalLayout_2; + QWidget *treeBorderIncidents; + QVBoxLayout *verticalLayout_6; + QTreeWidget *treeIncidents; + QVBoxLayout *verticalLayout_7; + QWidget *paginationBorder; + QVBoxLayout *paginationLayout; + QWidget *titleBarIncidents; + QHBoxLayout *horizontalLayout; + QLabel *label; + QLabel *label_5; + QLabel *label_6; + QSpacerItem *horizontalSpacer_5; + QLabel *label_8; + QLabel *label_9; + QScrollArea *scrollAreaIncidents; + QWidget *scrollWidgetIncidents; + QVBoxLayout *scrollLayoutIncidents; + QHBoxLayout *paginationBarIncedentsLayout; + QWidget *statisticsTab; + QVBoxLayout *verticalLayout_4; + QHBoxLayout *horizontalLayout_3; + QLabel *label_7; + QComboBox *sensorSelectStatistic; + QSpacerItem *horizontalSpacer_11; + QHBoxLayout *chartNButtonsLayout; + QVBoxLayout *verticalLayout_8; + QHBoxLayout *horizontalLayout_5; + QPushButton *realTimeButtonStatistic; + QPushButton *archiveButtonStatistic; + QVBoxLayout *verticalLayout_12; + QLabel *label_14; + QDateTimeEdit *startSelectStatistic; + QVBoxLayout *verticalLayout_13; + QLabel *label_16; + QDateTimeEdit *endSelectStatistic; + QVBoxLayout *verticalLayout_14; + QPushButton *showStatisticButton; + QSpacerItem *verticalSpacer_2; + QWidget *pseudoChart; + QWidget *journalTab; + QVBoxLayout *verticalLayout_3; + QVBoxLayout *JournalSearchLayout; + QHBoxLayout *horizontalLayout_8; + QLabel *label_4; + QLabel *label_3; + QLabel *label_2; + QPushButton *updateTreeButtonJournal; + QSpacerItem *horizontalSpacer_9; + QPushButton *searchLogs; + QSpacerItem *horizontalSpacer_6; + QHBoxLayout *horizontalLayout_7; + QComboBox *timeIntervalJournal; + QComboBox *statusJournal; + QComboBox *sortJournal; + QLineEdit *searchJournal; + QSpacerItem *horizontalSpacer_7; + QHBoxLayout *JournalDataLayout; + QVBoxLayout *verticalLayout_5; + QWidget *treeBorderJournal; + QVBoxLayout *verticalLayout_10; + QTreeWidget *treeJournal; + QVBoxLayout *verticalLayout_9; + QWidget *paginationBorderJournal; + QVBoxLayout *verticalLayout_11; + QWidget *titleBarJournal; + QHBoxLayout *horizontalLayout_2; + QLabel *label_10; + QLabel *label_15; + QLabel *label_13; + QLabel *label_12; + QLabel *label_11; + QScrollArea *scrollAreaJournal; + QWidget *scrollWidgetJournal; + QVBoxLayout *scrollLayoutJournal; + QHBoxLayout *paginationBarJournalLayout; + QWidget *settingsTab; + QVBoxLayout *verticalLayout_15; + QPushButton *serverButtonSettings; + QWidget *widget; + QVBoxLayout *verticalLayout_16; + QScrollArea *scrollAreaServers; + QWidget *scrollAreaWidgetContents; + QVBoxLayout *scrollAreaServersLayout; + QFrame *line; + QHBoxLayout *horizontalLayout_16; + QLabel *label_17; + QLabel *label_26; + QSpacerItem *horizontalSpacer_24; + QHBoxLayout *horizontalLayout_14; + QLabel *label_18; + QLineEdit *serialLineEdit; + QSpacerItem *horizontalSpacer_25; + QLabel *label_27; + QLineEdit *adresLineEdit; + QSpacerItem *horizontalSpacer_12; + QHBoxLayout *horizontalLayout_13; + QLabel *label_19; + QLineEdit *factoryLineEdit; + QSpacerItem *horizontalSpacer_26; + QLabel *label_28; + QLineEdit *userNameLineEdit; + QSpacerItem *horizontalSpacer_13; + QHBoxLayout *horizontalLayout_12; + QLabel *label_20; + QLineEdit *exhuyantLineEdit; + QSpacerItem *horizontalSpacer_27; + QLabel *label_29; + QLineEdit *userPasswordLineEdit; + QSpacerItem *horizontalSpacer_14; + QHBoxLayout *horizontalLayout_11; + QLabel *label_21; + QLineEdit *fleetLineEdit; + QSpacerItem *horizontalSpacer_28; + QLabel *label_30; + QLineEdit *argusSerialLineEdit; + QSpacerItem *horizontalSpacer_15; + QHBoxLayout *horizontalLayout_10; + QLabel *label_22; + QLineEdit *sideLineEdit; + QSpacerItem *horizontalSpacer_21; + QLabel *label_31; + QSpacerItem *horizontalSpacer_23; + QPushButton *exportButtonSettings; + QSpacerItem *horizontalSpacer_29; + QPushButton *importButtonSettings; + QSpacerItem *horizontalSpacer_16; + QHBoxLayout *horizontalLayout_9; + QLabel *label_23; + QLineEdit *gosNumberLineEdit; + QSpacerItem *horizontalSpacer_17; + QHBoxLayout *horizontalLayout_4; + QLabel *label_24; + QLineEdit *factoryNumberLineEdit; + QSpacerItem *horizontalSpacer_18; + QHBoxLayout *horizontalLayout_18; + QLabel *label_32; + QLineEdit *groupLineEdit; + QSpacerItem *horizontalSpacer_30; + QHBoxLayout *horizontalLayout_17; + QSpacerItem *horizontalSpacer_22; + QPushButton *cancelButtonSettings; + QPushButton *saveButtonSettings; + QSpacerItem *horizontalSpacer_20; + QSpacerItem *verticalSpacer; + QStatusBar *statusbar; + + void setupUi(QMainWindow *MainWindow) + { + if (MainWindow->objectName().isEmpty()) + MainWindow->setObjectName("MainWindow"); + MainWindow->resize(1580, 750); + QSizePolicy sizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Preferred); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(MainWindow->sizePolicy().hasHeightForWidth()); + MainWindow->setSizePolicy(sizePolicy); + MainWindow->setMinimumSize(QSize(1580, 750)); + MainWindow->setMaximumSize(QSize(16777215, 16777215)); + MainWindow->setBaseSize(QSize(0, 0)); + MainWindow->setStyleSheet(QString::fromUtf8("")); + MainWindow->setTabShape(QTabWidget::TabShape::Rounded); + centralwidget = new QWidget(MainWindow); + centralwidget->setObjectName("centralwidget"); + centralwidget->setAutoFillBackground(false); + centralwidget->setStyleSheet(QString::fromUtf8("QWidget#centralwidget{\n" +" background: #dcd174;\n" +"}\n" +"")); + gridLayout_4 = new QGridLayout(centralwidget); + gridLayout_4->setSpacing(0); + gridLayout_4->setObjectName("gridLayout_4"); + gridLayout_4->setContentsMargins(0, 0, 0, 0); + tabWidget = new QTabWidget(centralwidget); + tabWidget->setObjectName("tabWidget"); + QSizePolicy sizePolicy1(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Expanding); + sizePolicy1.setHorizontalStretch(0); + sizePolicy1.setVerticalStretch(0); + sizePolicy1.setHeightForWidth(tabWidget->sizePolicy().hasHeightForWidth()); + tabWidget->setSizePolicy(sizePolicy1); + tabWidget->setMinimumSize(QSize(488, 60)); + tabWidget->setAutoFillBackground(false); + tabWidget->setStyleSheet(QString::fromUtf8("QTabWidget {\n" +" border: none;\n" +"}\n" +"\n" +"QTabBar::tab{\n" +" background: #dcd174;\n" +" width: 222px;\n" +" height: 44px;\n" +" opacity: 0px;\n" +" border: 1px solid #dcd174; \n" +" padding: 18px 0px;\n" +" color: white; \n" +" font-family: Inter;\n" +" font-size: 36px;\n" +" font-weight: 500;\n" +" line-height: 43.57px;\n" +" text-align: left;\n" +"}\n" +"\n" +"QTabBar::tab:selected {\n" +" background: #dcd174; \n" +" font-size: 36px;\n" +" font-weight: 900;\n" +" line-height: 43.57px;\n" +" text-align: left;\n" +"}\n" +"")); + sensorsTab = new QWidget(); + sensorsTab->setObjectName("sensorsTab"); + QSizePolicy sizePolicy2(QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Expanding); + sizePolicy2.setHorizontalStretch(0); + sizePolicy2.setVerticalStretch(0); + sizePolicy2.setHeightForWidth(sensorsTab->sizePolicy().hasHeightForWidth()); + sensorsTab->setSizePolicy(sizePolicy2); + sensorsTab->setMinimumSize(QSize(0, 0)); + sensorsTab->setStyleSheet(QString::fromUtf8("#sensorsTab {\n" +" image: url(:/visual/res/svg/fema-wing.svg);\n" +" background-color: white; \n" +" image-position: bottom right;\n" +" border: none;\n" +"}")); + SensorsTabLayout = new QVBoxLayout(sensorsTab); + SensorsTabLayout->setSpacing(10); + SensorsTabLayout->setObjectName("SensorsTabLayout"); + SensorsTabLayout->setSizeConstraint(QLayout::SizeConstraint::SetDefaultConstraint); + SensorsTabLayout->setContentsMargins(0, 25, 0, 0); + nameLayout = new QHBoxLayout(); + nameLayout->setSpacing(15); + nameLayout->setObjectName("nameLayout"); + nameLayout->setSizeConstraint(QLayout::SizeConstraint::SetFixedSize); + nameLayout->setContentsMargins(25, -1, -1, -1); + group = new QLabel(sensorsTab); + group->setObjectName("group"); + QSizePolicy sizePolicy3(QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Fixed); + sizePolicy3.setHorizontalStretch(0); + sizePolicy3.setVerticalStretch(0); + sizePolicy3.setHeightForWidth(group->sizePolicy().hasHeightForWidth()); + group->setSizePolicy(sizePolicy3); + group->setMinimumSize(QSize(488, 36)); + group->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 30px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + nameLayout->addWidget(group); + + showHidden = new QLabel(sensorsTab); + showHidden->setObjectName("showHidden"); + sizePolicy3.setHeightForWidth(showHidden->sizePolicy().hasHeightForWidth()); + showHidden->setSizePolicy(sizePolicy3); + showHidden->setMinimumSize(QSize(275, 36)); + showHidden->setStyleSheet(QString::fromUtf8("width: 275px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 30px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + nameLayout->addWidget(showHidden); + + horizontalSpacer_4 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + nameLayout->addItem(horizontalSpacer_4); + + + SensorsTabLayout->addLayout(nameLayout); + + selectLayout = new QHBoxLayout(); + selectLayout->setSpacing(15); + selectLayout->setObjectName("selectLayout"); + selectLayout->setSizeConstraint(QLayout::SizeConstraint::SetFixedSize); + selectLayout->setContentsMargins(25, -1, -1, 10); + groupSelect = new QComboBox(sensorsTab); + groupSelect->setObjectName("groupSelect"); + sizePolicy3.setHeightForWidth(groupSelect->sizePolicy().hasHeightForWidth()); + groupSelect->setSizePolicy(sizePolicy3); + groupSelect->setMinimumSize(QSize(488, 60)); + groupSelect->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n" +" border: 0px;\n" +"}\n" +"\n" +"QComboBox::down-arrow {\n" +" image: url(:/visual/res/svg/chevron-down.png);\n" +"}\n" +"\n" +"QComboBox {\n" +" border: 2px solid #DCD174;\n" +" background: transparent;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 24px;\n" +" font-weight: 400;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView {\n" +" border: 2px solid #DCD174; \n" +" background: white; \n" +" selection-color: red;\n" +" selection-background-color: blue;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item {\n" +" font-family: Inter;\n" +" font-size: 50px;\n" +" font-weight: 400;\n" +" text-align: left;\n" +" padding: 5px;\n" +" color: #13385F;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item:hover {\n" +" background-color: #13385F; \n" +" selection-color: white;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"\n" +"")); + + selectLayout->addWidget(groupSelect); + + showHiddenSelect = new QComboBox(sensorsTab); + showHiddenSelect->setObjectName("showHiddenSelect"); + sizePolicy3.setHeightForWidth(showHiddenSelect->sizePolicy().hasHeightForWidth()); + showHiddenSelect->setSizePolicy(sizePolicy3); + showHiddenSelect->setMinimumSize(QSize(275, 60)); + showHiddenSelect->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n" +" border: 0px;\n" +"}\n" +"\n" +"QComboBox::down-arrow {\n" +" image: url(:/visual/res/svg/chevron-down.png);\n" +"}\n" +"\n" +"QComboBox {\n" +" border: 2px solid #DCD174;\n" +" background: transparent;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 24px;\n" +" font-weight: 400;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView {\n" +" border: 2px solid #DCD174; \n" +" background: white; \n" +" selection-color: red;\n" +" selection-background-color: blue;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item {\n" +" font-family: Inter;\n" +" font-size: 50px;\n" +" font-weight: 400;\n" +" text-align: left;\n" +" padding: 5px;\n" +" color: #13385F;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item:hover {\n" +" background-color: #13385F; \n" +" selection-color: white;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"\n" +"")); + + selectLayout->addWidget(showHiddenSelect); + + horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + selectLayout->addItem(horizontalSpacer_2); + + + SensorsTabLayout->addLayout(selectLayout); + + searchLayout = new QHBoxLayout(); + searchLayout->setSpacing(0); + searchLayout->setObjectName("searchLayout"); + searchLayout->setSizeConstraint(QLayout::SizeConstraint::SetFixedSize); + searchLayout->setContentsMargins(25, -1, -1, 10); + search = new QLineEdit(sensorsTab); + search->setObjectName("search"); + sizePolicy3.setHeightForWidth(search->sizePolicy().hasHeightForWidth()); + search->setSizePolicy(sizePolicy3); + search->setMinimumSize(QSize(778, 60)); + search->setStyleSheet(QString::fromUtf8("QLineEdit {\n" +"width: 778px;\n" +"height: 60px;\n" +"border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 26px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #a6a6a6;\n" +"}\n" +"\n" +"\n" +"")); + + searchLayout->addWidget(search); + + horizontalSpacer_3 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + searchLayout->addItem(horizontalSpacer_3); + + + SensorsTabLayout->addLayout(searchLayout); + + sensorsLayout = new QVBoxLayout(); + sensorsLayout->setSpacing(0); + sensorsLayout->setObjectName("sensorsLayout"); + sensorsLayout->setContentsMargins(25, -1, -1, -1); + + SensorsTabLayout->addLayout(sensorsLayout); + + tabWidget->addTab(sensorsTab, QString()); + incidentsTab = new QWidget(); + incidentsTab->setObjectName("incidentsTab"); + sizePolicy2.setHeightForWidth(incidentsTab->sizePolicy().hasHeightForWidth()); + incidentsTab->setSizePolicy(sizePolicy2); + incidentsTab->setStyleSheet(QString::fromUtf8("#incidentsTab {\n" +" image: url(:/visual/res/svg/fema-wing.svg);\n" +" background-color: #ffffff; \n" +" image-position: bottom right;\n" +" border: none;\n" +"}")); + verticalLayout = new QVBoxLayout(incidentsTab); + verticalLayout->setSpacing(0); + verticalLayout->setObjectName("verticalLayout"); + verticalLayout->setContentsMargins(0, 0, 0, 0); + IncidentsSearchLayout = new QVBoxLayout(); + IncidentsSearchLayout->setObjectName("IncidentsSearchLayout"); + IncidentsSearchTextLayout = new QHBoxLayout(); + IncidentsSearchTextLayout->setSpacing(10); + IncidentsSearchTextLayout->setObjectName("IncidentsSearchTextLayout"); + IncidentsSearchTextLayout->setContentsMargins(25, 25, -1, 0); + TimeIntrval = new QLabel(incidentsTab); + TimeIntrval->setObjectName("TimeIntrval"); + TimeIntrval->setMinimumSize(QSize(488, 60)); + TimeIntrval->setMaximumSize(QSize(488, 16777215)); + TimeIntrval->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 30px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + IncidentsSearchTextLayout->addWidget(TimeIntrval); + + updateTreeButtonIncident = new QPushButton(incidentsTab); + updateTreeButtonIncident->setObjectName("updateTreeButtonIncident"); + updateTreeButtonIncident->setMinimumSize(QSize(200, 35)); + updateTreeButtonIncident->setMaximumSize(QSize(200, 35)); + updateTreeButtonIncident->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + IncidentsSearchTextLayout->addWidget(updateTreeButtonIncident); + + horizontalSpacer_10 = new QSpacerItem(68, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + IncidentsSearchTextLayout->addItem(horizontalSpacer_10); + + searchIncidents = new QPushButton(incidentsTab); + searchIncidents->setObjectName("searchIncidents"); + searchIncidents->setMinimumSize(QSize(200, 35)); + searchIncidents->setMaximumSize(QSize(200, 35)); + searchIncidents->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + IncidentsSearchTextLayout->addWidget(searchIncidents); + + horizontalSpacer_8 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + IncidentsSearchTextLayout->addItem(horizontalSpacer_8); + + + IncidentsSearchLayout->addLayout(IncidentsSearchTextLayout); + + horizontalLayout_6 = new QHBoxLayout(); + horizontalLayout_6->setSpacing(10); + horizontalLayout_6->setObjectName("horizontalLayout_6"); + horizontalLayout_6->setContentsMargins(25, -1, -1, -1); + timeIntervalIncedents = new QComboBox(incidentsTab); + timeIntervalIncedents->setObjectName("timeIntervalIncedents"); + timeIntervalIncedents->setMinimumSize(QSize(488, 60)); + timeIntervalIncedents->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n" +" border: 0px;\n" +"}\n" +"\n" +"QComboBox::down-arrow {\n" +" image: url(:/visual/res/svg/chevron-down.png);\n" +"}\n" +"\n" +"QComboBox {\n" +" border: 2px solid #DCD174;\n" +" background: transparent;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 24px;\n" +" font-weight: 400;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView {\n" +" border: 2px solid #DCD174; \n" +" background: white; \n" +" selection-color: red;\n" +" selection-background-color: blue;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item {\n" +" font-family: Inter;\n" +" font-size: 50px;\n" +" font-weight: 400;\n" +" text-align: left;\n" +" padding: 5px;\n" +" color: #13385F;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item:hover {\n" +" background-color: #13385F; \n" +" selection-color: white;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"\n" +"")); + + horizontalLayout_6->addWidget(timeIntervalIncedents); + + searchIncedents = new QLineEdit(incidentsTab); + searchIncedents->setObjectName("searchIncedents"); + sizePolicy3.setHeightForWidth(searchIncedents->sizePolicy().hasHeightForWidth()); + searchIncedents->setSizePolicy(sizePolicy3); + searchIncedents->setMinimumSize(QSize(488, 60)); + searchIncedents->setMaximumSize(QSize(488, 60)); + searchIncedents->setStyleSheet(QString::fromUtf8("width: 778px;\n" +"height: 60px;\n" +"border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 26px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #a6a6a6;\n" +"\n" +"\n" +"\n" +"")); + + horizontalLayout_6->addWidget(searchIncedents); + + horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_6->addItem(horizontalSpacer); + + + IncidentsSearchLayout->addLayout(horizontalLayout_6); + + + verticalLayout->addLayout(IncidentsSearchLayout); + + IncidentsDataLayout = new QHBoxLayout(); + IncidentsDataLayout->setObjectName("IncidentsDataLayout"); + verticalLayout_2 = new QVBoxLayout(); + verticalLayout_2->setObjectName("verticalLayout_2"); + verticalLayout_2->setContentsMargins(25, 15, -1, 82); + treeBorderIncidents = new QWidget(incidentsTab); + treeBorderIncidents->setObjectName("treeBorderIncidents"); + treeBorderIncidents->setMinimumSize(QSize(272, 0)); + treeBorderIncidents->setMaximumSize(QSize(272, 16777215)); + treeBorderIncidents->setStyleSheet(QString::fromUtf8("QWidget#treeBorderIncidents {\n" +" border: 2px solid #E5E7EB;\n" +" border-radius: 5px;\n" +" background-color: transparent;\n" +"}\n" +"")); + verticalLayout_6 = new QVBoxLayout(treeBorderIncidents); + verticalLayout_6->setSpacing(0); + verticalLayout_6->setObjectName("verticalLayout_6"); + verticalLayout_6->setContentsMargins(0, 0, 0, 0); + treeIncidents = new QTreeWidget(treeBorderIncidents); + QTreeWidgetItem *__qtreewidgetitem = new QTreeWidgetItem(); + __qtreewidgetitem->setText(0, QString::fromUtf8("1")); + treeIncidents->setHeaderItem(__qtreewidgetitem); + treeIncidents->setObjectName("treeIncidents"); + sizePolicy.setHeightForWidth(treeIncidents->sizePolicy().hasHeightForWidth()); + treeIncidents->setSizePolicy(sizePolicy); + treeIncidents->setStyleSheet(QString::fromUtf8(" QTreeView::branch:has-siblings:!adjoins-item {\n" +" border-image: url(:/png/res/png/vline.png) 0;\n" +" }\n" +" QTreeView::branch:has-siblings:adjoins-item {\n" +" border-image: url(:/png/res/png/branch-more.png) 0;\n" +" }\n" +" QTreeView::branch:!has-children:!has-siblings:adjoins-item {\n" +" border-image: url(:/png/res/png/branch-end.png) 0;\n" +" }\n" +" QTreeView::branch:has-children:!has-siblings:closed,\n" +" QTreeView::branch:closed:has-children:has-siblings {\n" +" border-image: none;\n" +" image: url(:/png/res/png/close.png);\n" +" }\n" +" QTreeView::branch:open:has-children:!has-siblings,\n" +" QTreeView::branch:open:has-children:has-siblings {\n" +" border-image: none;\n" +" image: url(:/png/res/png/open.png);\n" +" }\n" +"\n" +"QHeaderView {\n" +" min-height: 0px;\n" +" max-height: 0px;\n" +"}\n" +"\n" +" QTreeView {\n" +" background: transparent;\n" +" border: none;\n" +" font-family: Inter;\n" +" font-size: 16px;\n" +" font-weight:" + " 500;\n" +" line-height: 19.36px;\n" +" text-align: left;\n" +" }\n" +"\n" +" QTreeWidget::indicator:unchecked {\n" +" border: 2px solid #e6e6e6; \n" +" background-color: transparent;\n" +" width: 18px;\n" +" height: 18px;\n" +" border-radius: 4px;\n" +" }\n" +" QTreeWidget::indicator:checked {\n" +" border: 2px solid #c7bf78; \n" +" background-color: rgba(220, 209, 116, 0.85); \n" +" width: 18px;\n" +" height: 18px;\n" +" border-radius: 4px;\n" +" image: url(:/png/res/png/checked.png);\n" +" }\n" +"\n" +" QTreeWidget::item {\n" +" color: #808080;\n" +" }\n" +" QTreeWidget::item:open {\n" +" color: #404040;\n" +" }\n" +" QTreeWidget::item:!has-children {\n" +" color: #808080; \n" +" }\n" +"\n" +" QTreeWidget::item:selected {\n" +" background: transparent;\n" +" }\n" +"")); + + verticalLayout_6->addWidget(treeIncidents); + + + verticalLayout_2->addWidget(treeBorderIncidents); + + + IncidentsDataLayout->addLayout(verticalLayout_2); + + verticalLayout_7 = new QVBoxLayout(); + verticalLayout_7->setSpacing(0); + verticalLayout_7->setObjectName("verticalLayout_7"); + verticalLayout_7->setContentsMargins(15, 15, 25, -1); + paginationBorder = new QWidget(incidentsTab); + paginationBorder->setObjectName("paginationBorder"); + sizePolicy2.setHeightForWidth(paginationBorder->sizePolicy().hasHeightForWidth()); + paginationBorder->setSizePolicy(sizePolicy2); + paginationBorder->setStyleSheet(QString::fromUtf8("QWidget#paginationBorder {\n" +" border: 2px solid #E5E7EB;\n" +" border-radius: 5px;\n" +" background-color: transparent;\n" +"}\n" +"")); + paginationLayout = new QVBoxLayout(paginationBorder); + paginationLayout->setSpacing(0); + paginationLayout->setObjectName("paginationLayout"); + paginationLayout->setContentsMargins(0, 0, 0, 0); + titleBarIncidents = new QWidget(paginationBorder); + titleBarIncidents->setObjectName("titleBarIncidents"); + titleBarIncidents->setMinimumSize(QSize(0, 60)); + titleBarIncidents->setMaximumSize(QSize(16777215, 60)); + titleBarIncidents->setStyleSheet(QString::fromUtf8("QWidget#titleBarIncidents {\n" +" border: 2px solid #E5E7EB;\n" +" border-radius: 5px;\n" +" background-color: transparent;\n" +"}\n" +"")); + horizontalLayout = new QHBoxLayout(titleBarIncidents); + horizontalLayout->setSpacing(70); + horizontalLayout->setObjectName("horizontalLayout"); + horizontalLayout->setContentsMargins(25, 0, 25, 0); + label = new QLabel(titleBarIncidents); + label->setObjectName("label"); + label->setMinimumSize(QSize(100, 27)); + label->setMaximumSize(QSize(250, 27)); + label->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout->addWidget(label); + + label_5 = new QLabel(titleBarIncidents); + label_5->setObjectName("label_5"); + label_5->setMinimumSize(QSize(100, 27)); + label_5->setMaximumSize(QSize(350, 27)); + label_5->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout->addWidget(label_5); + + label_6 = new QLabel(titleBarIncidents); + label_6->setObjectName("label_6"); + label_6->setMinimumSize(QSize(100, 27)); + label_6->setMaximumSize(QSize(150, 27)); + label_6->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout->addWidget(label_6); + + horizontalSpacer_5 = new QSpacerItem(5, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout->addItem(horizontalSpacer_5); + + label_8 = new QLabel(titleBarIncidents); + label_8->setObjectName("label_8"); + QSizePolicy sizePolicy4(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Preferred); + sizePolicy4.setHorizontalStretch(100); + sizePolicy4.setVerticalStretch(27); + sizePolicy4.setHeightForWidth(label_8->sizePolicy().hasHeightForWidth()); + label_8->setSizePolicy(sizePolicy4); + label_8->setMinimumSize(QSize(100, 27)); + label_8->setMaximumSize(QSize(100, 27)); + label_8->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout->addWidget(label_8); + + label_9 = new QLabel(titleBarIncidents); + label_9->setObjectName("label_9"); + label_9->setMinimumSize(QSize(140, 0)); + label_9->setMaximumSize(QSize(140, 16777215)); + + horizontalLayout->addWidget(label_9); + + + paginationLayout->addWidget(titleBarIncidents); + + scrollAreaIncidents = new QScrollArea(paginationBorder); + scrollAreaIncidents->setObjectName("scrollAreaIncidents"); + scrollAreaIncidents->setMinimumSize(QSize(1000, 0)); + scrollAreaIncidents->setStyleSheet(QString::fromUtf8("QScrollArea#scrollAreaIncidents {\n" +" background: transparent; \n" +" border: none;\n" +"}\n" +" \n" +"QScrollBar:vertical { \n" +" background: #ebebeb; width: 10px; border-radius: 5px; \n" +"}\n" +" \n" +"QScrollBar::handle:vertical { \n" +" background: #6d6d6d; \n" +" border-radius: 5px; \n" +" min-height: 20px; \n" +"}\n" +" \n" +"QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { \n" +" border: none; \n" +" background: none; \n" +" color: none; \n" +"} \n" +"\n" +"QScrollBar::sub-line:vertical, QScrollBar::add-line:vertical { \n" +" background: transparent; \n" +" border: none; \n" +"} \n" +"\n" +"QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { \n" +" background: transparent; \n" +"}\n" +"")); + scrollAreaIncidents->setWidgetResizable(true); + scrollWidgetIncidents = new QWidget(); + scrollWidgetIncidents->setObjectName("scrollWidgetIncidents"); + scrollWidgetIncidents->setGeometry(QRect(0, 0, 1232, 369)); + scrollWidgetIncidents->setMinimumSize(QSize(1000, 0)); + scrollWidgetIncidents->setStyleSheet(QString::fromUtf8("QWidget#scrollWidgetIncidents{\n" +" background: transparent\n" +"}")); + scrollLayoutIncidents = new QVBoxLayout(scrollWidgetIncidents); + scrollLayoutIncidents->setSpacing(0); + scrollLayoutIncidents->setObjectName("scrollLayoutIncidents"); + scrollLayoutIncidents->setContentsMargins(0, 0, 0, 0); + scrollAreaIncidents->setWidget(scrollWidgetIncidents); + + paginationLayout->addWidget(scrollAreaIncidents); + + + verticalLayout_7->addWidget(paginationBorder); + + paginationBarIncedentsLayout = new QHBoxLayout(); + paginationBarIncedentsLayout->setSpacing(5); + paginationBarIncedentsLayout->setObjectName("paginationBarIncedentsLayout"); + paginationBarIncedentsLayout->setContentsMargins(0, 20, 0, 22); + + verticalLayout_7->addLayout(paginationBarIncedentsLayout); + + + IncidentsDataLayout->addLayout(verticalLayout_7); + + + verticalLayout->addLayout(IncidentsDataLayout); + + tabWidget->addTab(incidentsTab, QString()); + statisticsTab = new QWidget(); + statisticsTab->setObjectName("statisticsTab"); + sizePolicy2.setHeightForWidth(statisticsTab->sizePolicy().hasHeightForWidth()); + statisticsTab->setSizePolicy(sizePolicy2); + statisticsTab->setStyleSheet(QString::fromUtf8("#statisticsTab {\n" +" image: url(:/visual/res/svg/fema-wing.svg);\n" +" background-color: #ffffff; \n" +" image-position: bottom right;\n" +"}")); + verticalLayout_4 = new QVBoxLayout(statisticsTab); + verticalLayout_4->setSpacing(0); + verticalLayout_4->setObjectName("verticalLayout_4"); + verticalLayout_4->setContentsMargins(0, 0, 0, 0); + horizontalLayout_3 = new QHBoxLayout(); + horizontalLayout_3->setSpacing(20); + horizontalLayout_3->setObjectName("horizontalLayout_3"); + horizontalLayout_3->setContentsMargins(30, 25, -1, 15); + label_7 = new QLabel(statisticsTab); + label_7->setObjectName("label_7"); + label_7->setMinimumSize(QSize(113, 35)); + label_7->setMaximumSize(QSize(113, 35)); + label_7->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 30px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_3->addWidget(label_7); + + sensorSelectStatistic = new QComboBox(statisticsTab); + sensorSelectStatistic->setObjectName("sensorSelectStatistic"); + sensorSelectStatistic->setMinimumSize(QSize(579, 50)); + sensorSelectStatistic->setMaximumSize(QSize(579, 50)); + sensorSelectStatistic->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n" +" border: 0px;\n" +"}\n" +"\n" +"QComboBox::down-arrow {\n" +" image: url(:/visual/res/svg/chevron-down.png);\n" +"}\n" +"\n" +"QComboBox {\n" +" border: 2px solid #DCD174;\n" +" background: transparent;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 24px;\n" +" font-weight: 400;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView {\n" +" border: 2px solid #DCD174; \n" +" background: white; \n" +" selection-color: red;\n" +" selection-background-color: blue;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item {\n" +" font-family: Inter;\n" +" font-size: 50px;\n" +" font-weight: 400;\n" +" text-align: left;\n" +" padding: 5px;\n" +" color: #13385F;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item:hover {\n" +" background-color: #13385F; \n" +" selection-color: white;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"\n" +"")); + + horizontalLayout_3->addWidget(sensorSelectStatistic); + + horizontalSpacer_11 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_3->addItem(horizontalSpacer_11); + + + verticalLayout_4->addLayout(horizontalLayout_3); + + chartNButtonsLayout = new QHBoxLayout(); + chartNButtonsLayout->setSpacing(30); + chartNButtonsLayout->setObjectName("chartNButtonsLayout"); + chartNButtonsLayout->setContentsMargins(25, -1, -1, -1); + verticalLayout_8 = new QVBoxLayout(); + verticalLayout_8->setSpacing(10); + verticalLayout_8->setObjectName("verticalLayout_8"); + horizontalLayout_5 = new QHBoxLayout(); + horizontalLayout_5->setSpacing(0); + horizontalLayout_5->setObjectName("horizontalLayout_5"); + realTimeButtonStatistic = new QPushButton(statisticsTab); + realTimeButtonStatistic->setObjectName("realTimeButtonStatistic"); + realTimeButtonStatistic->setMinimumSize(QSize(300, 0)); + realTimeButtonStatistic->setMaximumSize(QSize(300, 16777215)); + realTimeButtonStatistic->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: solid;\n" +" border-color: #d5cb7a;\n" +" border-width: 2px;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +" border-top-left-radius: 5px; \n" +" border-bottom-left-radius: 5px;\n" +"}")); + + horizontalLayout_5->addWidget(realTimeButtonStatistic); + + archiveButtonStatistic = new QPushButton(statisticsTab); + archiveButtonStatistic->setObjectName("archiveButtonStatistic"); + archiveButtonStatistic->setMinimumSize(QSize(300, 0)); + archiveButtonStatistic->setMaximumSize(QSize(300, 16777215)); + archiveButtonStatistic->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: solid;\n" +" border-color: #d5cb7a;\n" +" border-width: 2px;\n" +" background-color: #d5cb7a;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +" border-top-right-radius: 5px; \n" +" border-bottom-right-radius: 5px;\n" +"}")); + + horizontalLayout_5->addWidget(archiveButtonStatistic); + + + verticalLayout_8->addLayout(horizontalLayout_5); + + verticalLayout_12 = new QVBoxLayout(); + verticalLayout_12->setObjectName("verticalLayout_12"); + label_14 = new QLabel(statisticsTab); + label_14->setObjectName("label_14"); + label_14->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 24px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + verticalLayout_12->addWidget(label_14); + + startSelectStatistic = new QDateTimeEdit(statisticsTab); + startSelectStatistic->setObjectName("startSelectStatistic"); + startSelectStatistic->setMinimumSize(QSize(600, 60)); + startSelectStatistic->setMaximumSize(QSize(600, 60)); + startSelectStatistic->setStyleSheet(QString::fromUtf8("QDateTimeEdit {\n" +" border: 2px solid #d5cb7a;\n" +" border-radius: 5px;\n" +" font-family: Inter;\n" +" color: #a6a6a6;\n" +" font-size: 26px;\n" +" font-weight: 400;\n" +" line-height: 31.47px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QDateTimeEdit::drop-down {\n" +" border: none;\n" +" width: 0px;\n" +"}\n" +"\n" +"QDateTimeEdit::up-button, QDateTimeEdit::down-button {\n" +" border: none;\n" +" width: 0px;\n" +" height: 0px;\n" +"}")); + + verticalLayout_12->addWidget(startSelectStatistic); + + + verticalLayout_8->addLayout(verticalLayout_12); + + verticalLayout_13 = new QVBoxLayout(); + verticalLayout_13->setObjectName("verticalLayout_13"); + label_16 = new QLabel(statisticsTab); + label_16->setObjectName("label_16"); + label_16->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 24px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + verticalLayout_13->addWidget(label_16); + + endSelectStatistic = new QDateTimeEdit(statisticsTab); + endSelectStatistic->setObjectName("endSelectStatistic"); + endSelectStatistic->setMinimumSize(QSize(600, 60)); + endSelectStatistic->setMaximumSize(QSize(600, 60)); + endSelectStatistic->setStyleSheet(QString::fromUtf8("QDateTimeEdit {\n" +" border: 2px solid #d5cb7a;\n" +" border-radius: 5px;\n" +" font-family: Inter;\n" +" color: #a6a6a6;\n" +" font-size: 26px;\n" +" font-weight: 400;\n" +" line-height: 31.47px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QDateTimeEdit::drop-down {\n" +" border: none;\n" +" width: 0px;\n" +"}\n" +"\n" +"QDateTimeEdit::up-button, QDateTimeEdit::down-button {\n" +" border: none;\n" +" width: 0px;\n" +" height: 0px;\n" +"}")); + + verticalLayout_13->addWidget(endSelectStatistic); + + + verticalLayout_8->addLayout(verticalLayout_13); + + verticalLayout_14 = new QVBoxLayout(); + verticalLayout_14->setSpacing(10); + verticalLayout_14->setObjectName("verticalLayout_14"); + showStatisticButton = new QPushButton(statisticsTab); + showStatisticButton->setObjectName("showStatisticButton"); + showStatisticButton->setMinimumSize(QSize(600, 50)); + showStatisticButton->setMaximumSize(QSize(600, 50)); + showStatisticButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + verticalLayout_14->addWidget(showStatisticButton); + + + verticalLayout_8->addLayout(verticalLayout_14); + + verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Expanding); + + verticalLayout_8->addItem(verticalSpacer_2); + + + chartNButtonsLayout->addLayout(verticalLayout_8); + + pseudoChart = new QWidget(statisticsTab); + pseudoChart->setObjectName("pseudoChart"); + sizePolicy2.setHeightForWidth(pseudoChart->sizePolicy().hasHeightForWidth()); + pseudoChart->setSizePolicy(sizePolicy2); + + chartNButtonsLayout->addWidget(pseudoChart); + + + verticalLayout_4->addLayout(chartNButtonsLayout); + + tabWidget->addTab(statisticsTab, QString()); + journalTab = new QWidget(); + journalTab->setObjectName("journalTab"); + sizePolicy2.setHeightForWidth(journalTab->sizePolicy().hasHeightForWidth()); + journalTab->setSizePolicy(sizePolicy2); + journalTab->setStyleSheet(QString::fromUtf8("#journalTab {\n" +" image: url(:/visual/res/svg/fema-wing.svg);\n" +" background-color: #ffffff; \n" +" image-position: bottom right;\n" +"}")); + verticalLayout_3 = new QVBoxLayout(journalTab); + verticalLayout_3->setSpacing(0); + verticalLayout_3->setObjectName("verticalLayout_3"); + verticalLayout_3->setContentsMargins(0, 0, 0, 0); + JournalSearchLayout = new QVBoxLayout(); + JournalSearchLayout->setSpacing(0); + JournalSearchLayout->setObjectName("JournalSearchLayout"); + horizontalLayout_8 = new QHBoxLayout(); + horizontalLayout_8->setSpacing(10); + horizontalLayout_8->setObjectName("horizontalLayout_8"); + horizontalLayout_8->setContentsMargins(25, 25, -1, 0); + label_4 = new QLabel(journalTab); + label_4->setObjectName("label_4"); + sizePolicy3.setHeightForWidth(label_4->sizePolicy().hasHeightForWidth()); + label_4->setSizePolicy(sizePolicy3); + label_4->setMinimumSize(QSize(488, 60)); + label_4->setMaximumSize(QSize(488, 60)); + label_4->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 30px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_8->addWidget(label_4); + + label_3 = new QLabel(journalTab); + label_3->setObjectName("label_3"); + sizePolicy3.setHeightForWidth(label_3->sizePolicy().hasHeightForWidth()); + label_3->setSizePolicy(sizePolicy3); + label_3->setMinimumSize(QSize(270, 60)); + label_3->setMaximumSize(QSize(270, 60)); + label_3->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 30px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_8->addWidget(label_3); + + label_2 = new QLabel(journalTab); + label_2->setObjectName("label_2"); + sizePolicy3.setHeightForWidth(label_2->sizePolicy().hasHeightForWidth()); + label_2->setSizePolicy(sizePolicy3); + label_2->setMinimumSize(QSize(270, 60)); + label_2->setMaximumSize(QSize(270, 60)); + label_2->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 30px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_8->addWidget(label_2); + + updateTreeButtonJournal = new QPushButton(journalTab); + updateTreeButtonJournal->setObjectName("updateTreeButtonJournal"); + updateTreeButtonJournal->setMinimumSize(QSize(200, 35)); + updateTreeButtonJournal->setMaximumSize(QSize(200, 35)); + updateTreeButtonJournal->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + horizontalLayout_8->addWidget(updateTreeButtonJournal); + + horizontalSpacer_9 = new QSpacerItem(58, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_8->addItem(horizontalSpacer_9); + + searchLogs = new QPushButton(journalTab); + searchLogs->setObjectName("searchLogs"); + searchLogs->setMinimumSize(QSize(200, 35)); + searchLogs->setMaximumSize(QSize(200, 35)); + searchLogs->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + horizontalLayout_8->addWidget(searchLogs); + + horizontalSpacer_6 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_8->addItem(horizontalSpacer_6); + + + JournalSearchLayout->addLayout(horizontalLayout_8); + + horizontalLayout_7 = new QHBoxLayout(); + horizontalLayout_7->setSpacing(10); + horizontalLayout_7->setObjectName("horizontalLayout_7"); + horizontalLayout_7->setContentsMargins(25, -1, -1, -1); + timeIntervalJournal = new QComboBox(journalTab); + timeIntervalJournal->setObjectName("timeIntervalJournal"); + sizePolicy3.setHeightForWidth(timeIntervalJournal->sizePolicy().hasHeightForWidth()); + timeIntervalJournal->setSizePolicy(sizePolicy3); + timeIntervalJournal->setMinimumSize(QSize(488, 60)); + timeIntervalJournal->setMaximumSize(QSize(480, 60)); + timeIntervalJournal->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n" +" border: 0px;\n" +"}\n" +"\n" +"QComboBox::down-arrow {\n" +" image: url(:/visual/res/svg/chevron-down.png);\n" +"}\n" +"\n" +"QComboBox {\n" +" border: 2px solid #DCD174;\n" +" background: transparent;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 24px;\n" +" font-weight: 400;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView {\n" +" border: 2px solid #DCD174; \n" +" background: white; \n" +" selection-color: red;\n" +" selection-background-color: blue;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item {\n" +" font-family: Inter;\n" +" font-size: 50px;\n" +" font-weight: 400;\n" +" text-align: left;\n" +" padding: 5px;\n" +" color: #13385F;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item:hover {\n" +" background-color: #13385F; \n" +" selection-color: white;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"\n" +"")); + + horizontalLayout_7->addWidget(timeIntervalJournal); + + statusJournal = new QComboBox(journalTab); + statusJournal->setObjectName("statusJournal"); + sizePolicy3.setHeightForWidth(statusJournal->sizePolicy().hasHeightForWidth()); + statusJournal->setSizePolicy(sizePolicy3); + statusJournal->setMinimumSize(QSize(270, 60)); + statusJournal->setMaximumSize(QSize(270, 60)); + statusJournal->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n" +" border: 0px;\n" +"}\n" +"\n" +"QComboBox::down-arrow {\n" +" image: url(:/visual/res/svg/chevron-down.png);\n" +"}\n" +"\n" +"QComboBox {\n" +" border: 2px solid #DCD174;\n" +" background: transparent;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 24px;\n" +" font-weight: 400;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView {\n" +" border: 2px solid #DCD174; \n" +" background: white; \n" +" selection-color: red;\n" +" selection-background-color: blue;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item {\n" +" font-family: Inter;\n" +" font-size: 50px;\n" +" font-weight: 400;\n" +" text-align: left;\n" +" padding: 5px;\n" +" color: #13385F;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item:hover {\n" +" background-color: #13385F; \n" +" selection-color: white;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"\n" +"")); + + horizontalLayout_7->addWidget(statusJournal); + + sortJournal = new QComboBox(journalTab); + sortJournal->setObjectName("sortJournal"); + sizePolicy3.setHeightForWidth(sortJournal->sizePolicy().hasHeightForWidth()); + sortJournal->setSizePolicy(sizePolicy3); + sortJournal->setMinimumSize(QSize(270, 60)); + sortJournal->setMaximumSize(QSize(270, 60)); + sortJournal->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n" +" border: 0px;\n" +"}\n" +"\n" +"QComboBox::down-arrow {\n" +" image: url(:/visual/res/svg/chevron-down.png);\n" +"}\n" +"\n" +"QComboBox {\n" +" border: 2px solid #DCD174;\n" +" background: transparent;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 24px;\n" +" font-weight: 400;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView {\n" +" border: 2px solid #DCD174; \n" +" background: white; \n" +" selection-color: red;\n" +" selection-background-color: blue;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item {\n" +" font-family: Inter;\n" +" font-size: 50px;\n" +" font-weight: 400;\n" +" text-align: left;\n" +" padding: 5px;\n" +" color: #13385F;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item:hover {\n" +" background-color: #13385F; \n" +" selection-color: white;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"\n" +"")); + + horizontalLayout_7->addWidget(sortJournal); + + searchJournal = new QLineEdit(journalTab); + searchJournal->setObjectName("searchJournal"); + sizePolicy3.setHeightForWidth(searchJournal->sizePolicy().hasHeightForWidth()); + searchJournal->setSizePolicy(sizePolicy3); + searchJournal->setMinimumSize(QSize(480, 60)); + searchJournal->setMaximumSize(QSize(480, 60)); + searchJournal->setStyleSheet(QString::fromUtf8("width: 778px;\n" +"height: 60px;\n" +"border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 26px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #a6a6a6;\n" +"\n" +"\n" +"\n" +"")); + + horizontalLayout_7->addWidget(searchJournal); + + horizontalSpacer_7 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_7->addItem(horizontalSpacer_7); + + + JournalSearchLayout->addLayout(horizontalLayout_7); + + + verticalLayout_3->addLayout(JournalSearchLayout); + + JournalDataLayout = new QHBoxLayout(); + JournalDataLayout->setSpacing(0); + JournalDataLayout->setObjectName("JournalDataLayout"); + verticalLayout_5 = new QVBoxLayout(); + verticalLayout_5->setSpacing(0); + verticalLayout_5->setObjectName("verticalLayout_5"); + verticalLayout_5->setContentsMargins(25, 15, -1, 82); + treeBorderJournal = new QWidget(journalTab); + treeBorderJournal->setObjectName("treeBorderJournal"); + treeBorderJournal->setMinimumSize(QSize(272, 0)); + treeBorderJournal->setMaximumSize(QSize(272, 16777215)); + treeBorderJournal->setStyleSheet(QString::fromUtf8("QWidget#treeBorderJournal {\n" +" border: 2px solid #E5E7EB;\n" +" border-radius: 5px;\n" +" background-color: transparent;\n" +"}\n" +"")); + verticalLayout_10 = new QVBoxLayout(treeBorderJournal); + verticalLayout_10->setSpacing(0); + verticalLayout_10->setObjectName("verticalLayout_10"); + verticalLayout_10->setContentsMargins(0, 0, 0, 0); + treeJournal = new QTreeWidget(treeBorderJournal); + QTreeWidgetItem *__qtreewidgetitem1 = new QTreeWidgetItem(); + __qtreewidgetitem1->setText(0, QString::fromUtf8("1")); + treeJournal->setHeaderItem(__qtreewidgetitem1); + treeJournal->setObjectName("treeJournal"); + sizePolicy1.setHeightForWidth(treeJournal->sizePolicy().hasHeightForWidth()); + treeJournal->setSizePolicy(sizePolicy1); + treeJournal->setStyleSheet(QString::fromUtf8(" QTreeView::branch:has-siblings:!adjoins-item {\n" +" border-image: url(:/png/res/png/vline.png) 0;\n" +" }\n" +" QTreeView::branch:has-siblings:adjoins-item {\n" +" border-image: url(:/png/res/png/branch-more.png) 0;\n" +" }\n" +" QTreeView::branch:!has-children:!has-siblings:adjoins-item {\n" +" border-image: url(:/png/res/png/branch-end.png) 0;\n" +" }\n" +" QTreeView::branch:has-children:!has-siblings:closed,\n" +" QTreeView::branch:closed:has-children:has-siblings {\n" +" border-image: none;\n" +" image: url(:/png/res/png/close.png);\n" +" }\n" +" QTreeView::branch:open:has-children:!has-siblings,\n" +" QTreeView::branch:open:has-children:has-siblings {\n" +" border-image: none;\n" +" image: url(:/png/res/png/open.png);\n" +" }\n" +"\n" +"QHeaderView {\n" +" min-height: 0px;\n" +" max-height: 0px;\n" +"}\n" +"\n" +" QTreeView {\n" +" background: transparent;\n" +" border: none;\n" +" font-family: Inter;\n" +" font-size: 16px;\n" +" font-weight:" + " 500;\n" +" line-height: 19.36px;\n" +" text-align: left;\n" +" }\n" +"\n" +" QTreeWidget::indicator:unchecked {\n" +" border: 2px solid #e6e6e6; \n" +" background-color: transparent;\n" +" width: 18px;\n" +" height: 18px;\n" +" border-radius: 4px;\n" +" }\n" +" QTreeWidget::indicator:checked {\n" +" border: 2px solid #c7bf78; \n" +" background-color: rgba(220, 209, 116, 0.85); \n" +" width: 18px;\n" +" height: 18px;\n" +" border-radius: 4px;\n" +" image: url(:/png/res/png/checked.png);\n" +" }\n" +"\n" +" QTreeWidget::item {\n" +" color: #808080;\n" +" }\n" +" QTreeWidget::item:open {\n" +" color: #404040;\n" +" }\n" +" QTreeWidget::item:!has-children {\n" +" color: #808080; \n" +" }\n" +"\n" +" QTreeWidget::item:selected {\n" +" background: transparent;\n" +" }\n" +"")); + + verticalLayout_10->addWidget(treeJournal); + + + verticalLayout_5->addWidget(treeBorderJournal); + + + JournalDataLayout->addLayout(verticalLayout_5); + + verticalLayout_9 = new QVBoxLayout(); + verticalLayout_9->setSpacing(0); + verticalLayout_9->setObjectName("verticalLayout_9"); + verticalLayout_9->setContentsMargins(15, 15, 25, -1); + paginationBorderJournal = new QWidget(journalTab); + paginationBorderJournal->setObjectName("paginationBorderJournal"); + QSizePolicy sizePolicy5(QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Preferred); + sizePolicy5.setHorizontalStretch(0); + sizePolicy5.setVerticalStretch(0); + sizePolicy5.setHeightForWidth(paginationBorderJournal->sizePolicy().hasHeightForWidth()); + paginationBorderJournal->setSizePolicy(sizePolicy5); + paginationBorderJournal->setStyleSheet(QString::fromUtf8("QWidget#paginationBorderJournal {\n" +" border: 2px solid #E5E7EB;\n" +" border-radius: 5px;\n" +" background-color: transparent;\n" +"}\n" +"")); + verticalLayout_11 = new QVBoxLayout(paginationBorderJournal); + verticalLayout_11->setSpacing(0); + verticalLayout_11->setObjectName("verticalLayout_11"); + verticalLayout_11->setContentsMargins(0, 0, 0, 0); + titleBarJournal = new QWidget(paginationBorderJournal); + titleBarJournal->setObjectName("titleBarJournal"); + sizePolicy.setHeightForWidth(titleBarJournal->sizePolicy().hasHeightForWidth()); + titleBarJournal->setSizePolicy(sizePolicy); + titleBarJournal->setMinimumSize(QSize(0, 60)); + titleBarJournal->setStyleSheet(QString::fromUtf8("QWidget#titleBarJournal {\n" +" border: 2px solid #E5E7EB;\n" +" border-radius: 5px;\n" +" background-color: transparent;\n" +"}\n" +"")); + horizontalLayout_2 = new QHBoxLayout(titleBarJournal); + horizontalLayout_2->setSpacing(70); + horizontalLayout_2->setObjectName("horizontalLayout_2"); + horizontalLayout_2->setContentsMargins(25, 0, 25, 0); + label_10 = new QLabel(titleBarJournal); + label_10->setObjectName("label_10"); + label_10->setMinimumSize(QSize(100, 27)); + label_10->setMaximumSize(QSize(230, 27)); + label_10->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_2->addWidget(label_10); + + label_15 = new QLabel(titleBarJournal); + label_15->setObjectName("label_15"); + label_15->setMinimumSize(QSize(100, 27)); + label_15->setMaximumSize(QSize(250, 27)); + label_15->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_2->addWidget(label_15); + + label_13 = new QLabel(titleBarJournal); + label_13->setObjectName("label_13"); + label_13->setMinimumSize(QSize(220, 27)); + label_13->setMaximumSize(QSize(220, 27)); + label_13->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_2->addWidget(label_13); + + label_12 = new QLabel(titleBarJournal); + label_12->setObjectName("label_12"); + label_12->setMinimumSize(QSize(150, 27)); + label_12->setMaximumSize(QSize(100, 27)); + label_12->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_2->addWidget(label_12); + + label_11 = new QLabel(titleBarJournal); + label_11->setObjectName("label_11"); + label_11->setMinimumSize(QSize(150, 27)); + label_11->setMaximumSize(QSize(120, 27)); + label_11->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_2->addWidget(label_11); + + + verticalLayout_11->addWidget(titleBarJournal); + + scrollAreaJournal = new QScrollArea(paginationBorderJournal); + scrollAreaJournal->setObjectName("scrollAreaJournal"); + scrollAreaJournal->setStyleSheet(QString::fromUtf8("QScrollArea#scrollAreaJournal {\n" +" background: transparent; \n" +" border: none;\n" +"}\n" +" \n" +"QScrollBar:vertical { \n" +" background: #ebebeb; width: 10px; border-radius: 5px; \n" +"}\n" +" \n" +"QScrollBar::handle:vertical { \n" +" background: #6d6d6d; \n" +" border-radius: 5px; \n" +" min-height: 20px; \n" +"}\n" +" \n" +"QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { \n" +" border: none; \n" +" background: none; \n" +" color: none; \n" +"} \n" +"\n" +"QScrollBar::sub-line:vertical, QScrollBar::add-line:vertical { \n" +" background: transparent; \n" +" border: none; \n" +"} \n" +"\n" +"QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { \n" +" background: transparent; \n" +"}\n" +"")); + scrollAreaJournal->setWidgetResizable(true); + scrollWidgetJournal = new QWidget(); + scrollWidgetJournal->setObjectName("scrollWidgetJournal"); + scrollWidgetJournal->setGeometry(QRect(0, 0, 1238, 375)); + scrollWidgetJournal->setStyleSheet(QString::fromUtf8("QWidget#scrollWidgetJournal{\n" +" background: transparent\n" +"}")); + scrollLayoutJournal = new QVBoxLayout(scrollWidgetJournal); + scrollLayoutJournal->setSpacing(0); + scrollLayoutJournal->setObjectName("scrollLayoutJournal"); + scrollLayoutJournal->setContentsMargins(0, 0, 0, 0); + scrollAreaJournal->setWidget(scrollWidgetJournal); + + verticalLayout_11->addWidget(scrollAreaJournal); + + + verticalLayout_9->addWidget(paginationBorderJournal); + + paginationBarJournalLayout = new QHBoxLayout(); + paginationBarJournalLayout->setObjectName("paginationBarJournalLayout"); + paginationBarJournalLayout->setContentsMargins(-1, 20, -1, 22); + + verticalLayout_9->addLayout(paginationBarJournalLayout); + + + JournalDataLayout->addLayout(verticalLayout_9); + + + verticalLayout_3->addLayout(JournalDataLayout); + + tabWidget->addTab(journalTab, QString()); + settingsTab = new QWidget(); + settingsTab->setObjectName("settingsTab"); + sizePolicy2.setHeightForWidth(settingsTab->sizePolicy().hasHeightForWidth()); + settingsTab->setSizePolicy(sizePolicy2); + settingsTab->setStyleSheet(QString::fromUtf8("#settingsTab {\n" +" image: url(:/visual/res/svg/fema-wing.svg);\n" +" background-color: #ffffff; \n" +" image-position: bottom right;\n" +"}")); + verticalLayout_15 = new QVBoxLayout(settingsTab); + verticalLayout_15->setSpacing(0); + verticalLayout_15->setObjectName("verticalLayout_15"); + verticalLayout_15->setContentsMargins(25, 30, 0, 0); + serverButtonSettings = new QPushButton(settingsTab); + serverButtonSettings->setObjectName("serverButtonSettings"); + serverButtonSettings->setMinimumSize(QSize(600, 40)); + serverButtonSettings->setMaximumSize(QSize(600, 40)); + serverButtonSettings->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #e0f2f7;\n" +" border-color: #1A4A73;\n" +" color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +" color: white; \n" +"}")); + + verticalLayout_15->addWidget(serverButtonSettings); + + widget = new QWidget(settingsTab); + widget->setObjectName("widget"); + QSizePolicy sizePolicy6(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Fixed); + sizePolicy6.setHorizontalStretch(0); + sizePolicy6.setVerticalStretch(0); + sizePolicy6.setHeightForWidth(widget->sizePolicy().hasHeightForWidth()); + widget->setSizePolicy(sizePolicy6); + widget->setMinimumSize(QSize(600, 80)); + widget->setMaximumSize(QSize(600, 16777215)); + verticalLayout_16 = new QVBoxLayout(widget); + verticalLayout_16->setObjectName("verticalLayout_16"); + scrollAreaServers = new QScrollArea(widget); + scrollAreaServers->setObjectName("scrollAreaServers"); + scrollAreaServers->setStyleSheet(QString::fromUtf8("QScrollArea#scrollAreaServers {\n" +" background: transparent; \n" +" border: none;\n" +"}\n" +" \n" +"QScrollBar:vertical { \n" +" background: #ebebeb; width: 10px; border-radius: 5px; \n" +"}\n" +" \n" +"QScrollBar::handle:vertical { \n" +" background: #6d6d6d; \n" +" border-radius: 5px; \n" +" min-height: 20px; \n" +"}\n" +" \n" +"QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { \n" +" border: none; \n" +" background: none; \n" +" color: none; \n" +"} \n" +"\n" +"QScrollBar::sub-line:vertical, QScrollBar::add-line:vertical { \n" +" background: transparent; \n" +" border: none; \n" +"} \n" +"\n" +"QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { \n" +" background: transparent; \n" +"}\n" +"")); + scrollAreaServers->setWidgetResizable(true); + scrollAreaWidgetContents = new QWidget(); + scrollAreaWidgetContents->setObjectName("scrollAreaWidgetContents"); + scrollAreaWidgetContents->setGeometry(QRect(0, 0, 582, 62)); + scrollAreaWidgetContents->setStyleSheet(QString::fromUtf8("background: transparent; ")); + scrollAreaServersLayout = new QVBoxLayout(scrollAreaWidgetContents); + scrollAreaServersLayout->setSpacing(5); + scrollAreaServersLayout->setObjectName("scrollAreaServersLayout"); + scrollAreaServersLayout->setContentsMargins(0, 0, 0, 0); + scrollAreaServers->setWidget(scrollAreaWidgetContents); + + verticalLayout_16->addWidget(scrollAreaServers); + + + verticalLayout_15->addWidget(widget); + + line = new QFrame(settingsTab); + line->setObjectName("line"); + line->setMinimumSize(QSize(1250, 0)); + line->setMaximumSize(QSize(922, 16777215)); + line->setFrameShape(QFrame::Shape::HLine); + line->setFrameShadow(QFrame::Shadow::Sunken); + + verticalLayout_15->addWidget(line); + + horizontalLayout_16 = new QHBoxLayout(); + horizontalLayout_16->setSpacing(50); + horizontalLayout_16->setObjectName("horizontalLayout_16"); + label_17 = new QLabel(settingsTab); + label_17->setObjectName("label_17"); + label_17->setMinimumSize(QSize(600, 40)); + label_17->setMaximumSize(QSize(520, 40)); + label_17->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 30px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_16->addWidget(label_17); + + label_26 = new QLabel(settingsTab); + label_26->setObjectName("label_26"); + QSizePolicy sizePolicy7(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Preferred); + sizePolicy7.setHorizontalStretch(0); + sizePolicy7.setVerticalStretch(40); + sizePolicy7.setHeightForWidth(label_26->sizePolicy().hasHeightForWidth()); + label_26->setSizePolicy(sizePolicy7); + label_26->setMinimumSize(QSize(520, 40)); + label_26->setMaximumSize(QSize(520, 40)); + label_26->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 30px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_16->addWidget(label_26); + + horizontalSpacer_24 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_16->addItem(horizontalSpacer_24); + + + verticalLayout_15->addLayout(horizontalLayout_16); + + horizontalLayout_14 = new QHBoxLayout(); + horizontalLayout_14->setObjectName("horizontalLayout_14"); + horizontalLayout_14->setContentsMargins(-1, 10, -1, 10); + label_18 = new QLabel(settingsTab); + label_18->setObjectName("label_18"); + label_18->setMinimumSize(QSize(200, 0)); + label_18->setMaximumSize(QSize(200, 16777215)); + label_18->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_14->addWidget(label_18); + + serialLineEdit = new QLineEdit(settingsTab); + serialLineEdit->setObjectName("serialLineEdit"); + serialLineEdit->setMinimumSize(QSize(394, 0)); + serialLineEdit->setMaximumSize(QSize(394, 16777215)); + serialLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_14->addWidget(serialLineEdit); + + horizontalSpacer_25 = new QSpacerItem(38, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_14->addItem(horizontalSpacer_25); + + label_27 = new QLabel(settingsTab); + label_27->setObjectName("label_27"); + label_27->setMinimumSize(QSize(200, 0)); + label_27->setMaximumSize(QSize(200, 16777215)); + label_27->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_14->addWidget(label_27); + + adresLineEdit = new QLineEdit(settingsTab); + adresLineEdit->setObjectName("adresLineEdit"); + adresLineEdit->setMinimumSize(QSize(394, 0)); + adresLineEdit->setMaximumSize(QSize(394, 16777215)); + adresLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_14->addWidget(adresLineEdit); + + horizontalSpacer_12 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_14->addItem(horizontalSpacer_12); + + + verticalLayout_15->addLayout(horizontalLayout_14); + + horizontalLayout_13 = new QHBoxLayout(); + horizontalLayout_13->setObjectName("horizontalLayout_13"); + horizontalLayout_13->setContentsMargins(-1, -1, -1, 10); + label_19 = new QLabel(settingsTab); + label_19->setObjectName("label_19"); + label_19->setMinimumSize(QSize(200, 0)); + label_19->setMaximumSize(QSize(200, 16777215)); + label_19->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_13->addWidget(label_19); + + factoryLineEdit = new QLineEdit(settingsTab); + factoryLineEdit->setObjectName("factoryLineEdit"); + factoryLineEdit->setMinimumSize(QSize(394, 0)); + factoryLineEdit->setMaximumSize(QSize(394, 16777215)); + factoryLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_13->addWidget(factoryLineEdit); + + horizontalSpacer_26 = new QSpacerItem(38, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_13->addItem(horizontalSpacer_26); + + label_28 = new QLabel(settingsTab); + label_28->setObjectName("label_28"); + label_28->setMinimumSize(QSize(200, 0)); + label_28->setMaximumSize(QSize(200, 16777215)); + label_28->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_13->addWidget(label_28); + + userNameLineEdit = new QLineEdit(settingsTab); + userNameLineEdit->setObjectName("userNameLineEdit"); + userNameLineEdit->setMinimumSize(QSize(394, 0)); + userNameLineEdit->setMaximumSize(QSize(394, 16777215)); + userNameLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_13->addWidget(userNameLineEdit); + + horizontalSpacer_13 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_13->addItem(horizontalSpacer_13); + + + verticalLayout_15->addLayout(horizontalLayout_13); + + horizontalLayout_12 = new QHBoxLayout(); + horizontalLayout_12->setObjectName("horizontalLayout_12"); + horizontalLayout_12->setContentsMargins(-1, -1, -1, 10); + label_20 = new QLabel(settingsTab); + label_20->setObjectName("label_20"); + label_20->setMinimumSize(QSize(200, 0)); + label_20->setMaximumSize(QSize(200, 16777215)); + label_20->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_12->addWidget(label_20); + + exhuyantLineEdit = new QLineEdit(settingsTab); + exhuyantLineEdit->setObjectName("exhuyantLineEdit"); + exhuyantLineEdit->setMinimumSize(QSize(394, 0)); + exhuyantLineEdit->setMaximumSize(QSize(394, 16777215)); + exhuyantLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_12->addWidget(exhuyantLineEdit); + + horizontalSpacer_27 = new QSpacerItem(38, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_12->addItem(horizontalSpacer_27); + + label_29 = new QLabel(settingsTab); + label_29->setObjectName("label_29"); + label_29->setMinimumSize(QSize(200, 0)); + label_29->setMaximumSize(QSize(200, 16777215)); + label_29->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_12->addWidget(label_29); + + userPasswordLineEdit = new QLineEdit(settingsTab); + userPasswordLineEdit->setObjectName("userPasswordLineEdit"); + userPasswordLineEdit->setMinimumSize(QSize(394, 0)); + userPasswordLineEdit->setMaximumSize(QSize(394, 16777215)); + userPasswordLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_12->addWidget(userPasswordLineEdit); + + horizontalSpacer_14 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_12->addItem(horizontalSpacer_14); + + + verticalLayout_15->addLayout(horizontalLayout_12); + + horizontalLayout_11 = new QHBoxLayout(); + horizontalLayout_11->setObjectName("horizontalLayout_11"); + horizontalLayout_11->setContentsMargins(-1, -1, -1, 10); + label_21 = new QLabel(settingsTab); + label_21->setObjectName("label_21"); + label_21->setMinimumSize(QSize(200, 0)); + label_21->setMaximumSize(QSize(200, 16777215)); + label_21->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_11->addWidget(label_21); + + fleetLineEdit = new QLineEdit(settingsTab); + fleetLineEdit->setObjectName("fleetLineEdit"); + fleetLineEdit->setMinimumSize(QSize(394, 0)); + fleetLineEdit->setMaximumSize(QSize(394, 16777215)); + fleetLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_11->addWidget(fleetLineEdit); + + horizontalSpacer_28 = new QSpacerItem(38, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_11->addItem(horizontalSpacer_28); + + label_30 = new QLabel(settingsTab); + label_30->setObjectName("label_30"); + label_30->setMinimumSize(QSize(200, 0)); + label_30->setMaximumSize(QSize(200, 16777215)); + label_30->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_11->addWidget(label_30); + + argusSerialLineEdit = new QLineEdit(settingsTab); + argusSerialLineEdit->setObjectName("argusSerialLineEdit"); + argusSerialLineEdit->setMinimumSize(QSize(394, 0)); + argusSerialLineEdit->setMaximumSize(QSize(394, 16777215)); + argusSerialLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_11->addWidget(argusSerialLineEdit); + + horizontalSpacer_15 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_11->addItem(horizontalSpacer_15); + + + verticalLayout_15->addLayout(horizontalLayout_11); + + horizontalLayout_10 = new QHBoxLayout(); + horizontalLayout_10->setObjectName("horizontalLayout_10"); + horizontalLayout_10->setContentsMargins(-1, -1, -1, 10); + label_22 = new QLabel(settingsTab); + label_22->setObjectName("label_22"); + label_22->setMinimumSize(QSize(200, 0)); + label_22->setMaximumSize(QSize(200, 16777215)); + label_22->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_10->addWidget(label_22); + + sideLineEdit = new QLineEdit(settingsTab); + sideLineEdit->setObjectName("sideLineEdit"); + sideLineEdit->setMinimumSize(QSize(394, 0)); + sideLineEdit->setMaximumSize(QSize(394, 16777215)); + sideLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_10->addWidget(sideLineEdit); + + horizontalSpacer_21 = new QSpacerItem(38, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_10->addItem(horizontalSpacer_21); + + label_31 = new QLabel(settingsTab); + label_31->setObjectName("label_31"); + label_31->setStyleSheet(QString::fromUtf8("width: 488px;\n" +"height: 36px;\n" +"background: transparent;\n" +"font-family: Inter;\n" +"font-size: 30px;\n" +"font-weight: 400;\n" +"line-height: 36.31px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_10->addWidget(label_31); + + horizontalSpacer_23 = new QSpacerItem(3, 20, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_10->addItem(horizontalSpacer_23); + + exportButtonSettings = new QPushButton(settingsTab); + exportButtonSettings->setObjectName("exportButtonSettings"); + exportButtonSettings->setMinimumSize(QSize(235, 40)); + exportButtonSettings->setMaximumSize(QSize(235, 40)); + exportButtonSettings->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #e0f2f7;\n" +" border-color: #1A4A73;\n" +" color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +" color: white; \n" +"}")); + + horizontalLayout_10->addWidget(exportButtonSettings); + + horizontalSpacer_29 = new QSpacerItem(3, 0, QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Minimum); + + horizontalLayout_10->addItem(horizontalSpacer_29); + + importButtonSettings = new QPushButton(settingsTab); + importButtonSettings->setObjectName("importButtonSettings"); + importButtonSettings->setMinimumSize(QSize(235, 40)); + importButtonSettings->setMaximumSize(QSize(235, 40)); + importButtonSettings->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + horizontalLayout_10->addWidget(importButtonSettings); + + horizontalSpacer_16 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_10->addItem(horizontalSpacer_16); + + + verticalLayout_15->addLayout(horizontalLayout_10); + + horizontalLayout_9 = new QHBoxLayout(); + horizontalLayout_9->setObjectName("horizontalLayout_9"); + horizontalLayout_9->setContentsMargins(-1, -1, -1, 10); + label_23 = new QLabel(settingsTab); + label_23->setObjectName("label_23"); + label_23->setMinimumSize(QSize(200, 0)); + label_23->setMaximumSize(QSize(200, 16777215)); + label_23->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_9->addWidget(label_23); + + gosNumberLineEdit = new QLineEdit(settingsTab); + gosNumberLineEdit->setObjectName("gosNumberLineEdit"); + gosNumberLineEdit->setMinimumSize(QSize(394, 0)); + gosNumberLineEdit->setMaximumSize(QSize(394, 16777215)); + gosNumberLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_9->addWidget(gosNumberLineEdit); + + horizontalSpacer_17 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_9->addItem(horizontalSpacer_17); + + + verticalLayout_15->addLayout(horizontalLayout_9); + + horizontalLayout_4 = new QHBoxLayout(); + horizontalLayout_4->setObjectName("horizontalLayout_4"); + horizontalLayout_4->setContentsMargins(-1, -1, -1, 10); + label_24 = new QLabel(settingsTab); + label_24->setObjectName("label_24"); + label_24->setMinimumSize(QSize(200, 0)); + label_24->setMaximumSize(QSize(200, 16777215)); + label_24->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_4->addWidget(label_24); + + factoryNumberLineEdit = new QLineEdit(settingsTab); + factoryNumberLineEdit->setObjectName("factoryNumberLineEdit"); + factoryNumberLineEdit->setMinimumSize(QSize(394, 0)); + factoryNumberLineEdit->setMaximumSize(QSize(394, 16777215)); + factoryNumberLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_4->addWidget(factoryNumberLineEdit); + + horizontalSpacer_18 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_4->addItem(horizontalSpacer_18); + + + verticalLayout_15->addLayout(horizontalLayout_4); + + horizontalLayout_18 = new QHBoxLayout(); + horizontalLayout_18->setObjectName("horizontalLayout_18"); + horizontalLayout_18->setContentsMargins(-1, -1, -1, 10); + label_32 = new QLabel(settingsTab); + label_32->setObjectName("label_32"); + label_32->setMinimumSize(QSize(200, 0)); + label_32->setMaximumSize(QSize(200, 16777215)); + label_32->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 29.05px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_18->addWidget(label_32); + + groupLineEdit = new QLineEdit(settingsTab); + groupLineEdit->setObjectName("groupLineEdit"); + groupLineEdit->setMinimumSize(QSize(394, 0)); + groupLineEdit->setMaximumSize(QSize(394, 16777215)); + groupLineEdit->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 20px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_18->addWidget(groupLineEdit); + + horizontalSpacer_30 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_18->addItem(horizontalSpacer_30); + + + verticalLayout_15->addLayout(horizontalLayout_18); + + horizontalLayout_17 = new QHBoxLayout(); + horizontalLayout_17->setSpacing(15); + horizontalLayout_17->setObjectName("horizontalLayout_17"); + horizontalLayout_17->setContentsMargins(-1, -1, -1, 10); + horizontalSpacer_22 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_17->addItem(horizontalSpacer_22); + + cancelButtonSettings = new QPushButton(settingsTab); + cancelButtonSettings->setObjectName("cancelButtonSettings"); + cancelButtonSettings->setMinimumSize(QSize(235, 40)); + cancelButtonSettings->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #e0f2f7;\n" +" border-color: #1A4A73;\n" +" color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +" color: white; \n" +"}")); + + horizontalLayout_17->addWidget(cancelButtonSettings); + + saveButtonSettings = new QPushButton(settingsTab); + saveButtonSettings->setObjectName("saveButtonSettings"); + saveButtonSettings->setMinimumSize(QSize(235, 40)); + saveButtonSettings->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + horizontalLayout_17->addWidget(saveButtonSettings); + + horizontalSpacer_20 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_17->addItem(horizontalSpacer_20); + + + verticalLayout_15->addLayout(horizontalLayout_17); + + verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Expanding); + + verticalLayout_15->addItem(verticalSpacer); + + tabWidget->addTab(settingsTab, QString()); + + gridLayout_4->addWidget(tabWidget, 0, 0, 1, 1); + + MainWindow->setCentralWidget(centralwidget); + statusbar = new QStatusBar(MainWindow); + statusbar->setObjectName("statusbar"); + MainWindow->setStatusBar(statusbar); + + retranslateUi(MainWindow); + + tabWidget->setCurrentIndex(4); + + + QMetaObject::connectSlotsByName(MainWindow); + } // setupUi + + void retranslateUi(QMainWindow *MainWindow) + { + MainWindow->setWindowTitle(QCoreApplication::translate("MainWindow", "FemaLocal", nullptr)); + group->setText(QCoreApplication::translate("MainWindow", "\320\223\321\200\321\203\320\277\320\277\320\260:", nullptr)); + showHidden->setText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\272\320\260\320\267\320\260\321\202\321\214 \321\201\320\272\321\200\321\213\321\202\321\213\320\265", nullptr)); + search->setText(QString()); + search->setPlaceholderText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\270\321\201\320\272...", nullptr)); + tabWidget->setTabText(tabWidget->indexOf(sensorsTab), QCoreApplication::translate("MainWindow", "\320\224\320\260\321\202\321\207\320\270\320\272\320\270", nullptr)); + TimeIntrval->setText(QCoreApplication::translate("MainWindow", "\320\222\321\200\320\265\320\274\320\265\320\275\320\275\320\276\320\271 \320\277\321\200\320\276\320\274\320\265\320\266\321\203\321\202\320\276\320\272:", nullptr)); + updateTreeButtonIncident->setText(QCoreApplication::translate("MainWindow", "\320\236\320\261\320\275\320\276\320\262\320\270\321\202\321\214 \320\264\320\265\321\200\320\265\320\262\320\276", nullptr)); + searchIncidents->setText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\270\321\201\320\272", nullptr)); + searchIncedents->setPlaceholderText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\270\321\201\320\272...", nullptr)); + label->setText(QCoreApplication::translate("MainWindow", "\320\223\321\200\321\203\320\277\320\277\320\260", nullptr)); + label_5->setText(QCoreApplication::translate("MainWindow", "\320\224\320\260\321\202\321\207\320\270\320\272", nullptr)); + label_6->setText(QCoreApplication::translate("MainWindow", "\320\224\320\260\321\202\320\260", nullptr)); + label_8->setText(QCoreApplication::translate("MainWindow", "\320\222\321\200\320\265\320\274\321\217", nullptr)); + label_9->setText(QString()); + tabWidget->setTabText(tabWidget->indexOf(incidentsTab), QCoreApplication::translate("MainWindow", "\320\230\320\275\321\206\320\270\320\264\320\265\320\275\321\202\321\213", nullptr)); + label_7->setText(QCoreApplication::translate("MainWindow", "\320\224\320\260\321\202\321\207\320\270\320\272:", nullptr)); + realTimeButtonStatistic->setText(QCoreApplication::translate("MainWindow", "\320\222 \321\200\320\265\320\260\320\273\321\214\320\275\320\276\320\274 \320\262\321\200\320\265\320\274\320\265\320\275\320\270", nullptr)); + archiveButtonStatistic->setText(QCoreApplication::translate("MainWindow", "\320\230\320\267 \320\260\321\200\321\205\320\270\320\262\320\260", nullptr)); + label_14->setText(QCoreApplication::translate("MainWindow", "\320\235\320\260\321\207\320\260\320\273\320\276 \320\277\321\200\320\276\320\274\320\265\320\266\321\203\321\202\320\272\320\260:", nullptr)); + label_16->setText(QCoreApplication::translate("MainWindow", "\320\232\320\276\320\275\320\265\321\206 \320\277\321\200\320\276\320\274\320\265\320\266\321\203\321\202\320\272\320\260:", nullptr)); + showStatisticButton->setText(QCoreApplication::translate("MainWindow", "\320\236\321\202\320\276\320\261\321\200\320\260\320\267\320\270\321\202\321\214 \320\264\320\260\320\275\320\275\321\213\320\265", nullptr)); + tabWidget->setTabText(tabWidget->indexOf(statisticsTab), QCoreApplication::translate("MainWindow", "\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260", nullptr)); + label_4->setText(QCoreApplication::translate("MainWindow", "\320\222\321\200\320\265\320\274\320\265\320\275\320\275\320\276\320\271 \320\277\321\200\320\276\320\274\320\265\320\266\321\203\321\202\320\276\320\272:", nullptr)); + label_3->setText(QCoreApplication::translate("MainWindow", "\320\241\321\202\320\260\321\202\321\203\321\201:", nullptr)); + label_2->setText(QCoreApplication::translate("MainWindow", "\320\241\320\276\321\200\321\202\320\270\321\200\320\276\320\262\320\272\320\260", nullptr)); + updateTreeButtonJournal->setText(QCoreApplication::translate("MainWindow", "\320\236\320\261\320\275\320\276\320\262\320\270\321\202\321\214 \320\264\320\265\321\200\320\265\320\262\320\276", nullptr)); + searchLogs->setText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\270\321\201\320\272", nullptr)); + searchJournal->setPlaceholderText(QCoreApplication::translate("MainWindow", "\320\237\320\276\320\270\321\201\320\272...", nullptr)); + label_10->setText(QCoreApplication::translate("MainWindow", "\320\222\321\200\320\265\320\274\321\217", nullptr)); + label_15->setText(QCoreApplication::translate("MainWindow", "\320\233\320\276\320\263", nullptr)); + label_13->setText(QCoreApplication::translate("MainWindow", "\320\236\321\202\320\277\321\200\320\260\320\262\320\270\321\202\320\265\320\273\321\214", nullptr)); + label_12->setText(QCoreApplication::translate("MainWindow", "\320\240\320\260\320\267\320\264\320\265\320\273", nullptr)); + label_11->setText(QCoreApplication::translate("MainWindow", "\320\241\321\202\320\260\321\202\321\203\321\201", nullptr)); + tabWidget->setTabText(tabWidget->indexOf(journalTab), QCoreApplication::translate("MainWindow", "\320\226\321\203\321\200\320\275\320\260\320\273", nullptr)); + serverButtonSettings->setText(QCoreApplication::translate("MainWindow", "\320\224\320\276\320\261\320\260\320\262\320\270\321\202\321\214 \321\201\320\265\321\200\320\262\320\265\321\200", nullptr)); + label_17->setText(QCoreApplication::translate("MainWindow", "\320\241\320\265\321\200\320\262\320\265\321\200\321\213", nullptr)); + label_26->setText(QCoreApplication::translate("MainWindow", "\320\220\321\200\320\263\321\203\321\201", nullptr)); + label_18->setText(QCoreApplication::translate("MainWindow", "\320\241\320\265\321\200\320\270\320\271\320\275\321\213\320\271 \320\275\320\276\320\274\320\265\321\200", nullptr)); + label_27->setText(QCoreApplication::translate("MainWindow", "\320\220\320\264\321\200\320\265\321\201 \321\201\320\265\321\200\320\262\320\265\321\200\320\260", nullptr)); + label_19->setText(QCoreApplication::translate("MainWindow", "\320\227\320\260\320\262\320\276\320\264 \320\270\320\267\320\263\320\276\321\202\320\276\320\262\320\270\321\202\320\265\320\273\321\214", nullptr)); + label_28->setText(QCoreApplication::translate("MainWindow", "\320\230\320\274\321\217 \320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217", nullptr)); + label_20->setText(QCoreApplication::translate("MainWindow", "\320\255\320\272\321\201\320\277\320\273\321\203\320\260\321\202\320\260\320\275\321\202", nullptr)); + label_29->setText(QCoreApplication::translate("MainWindow", "\320\237\320\260\321\200\320\276\320\273\321\214 \320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\320\265\320\273\321\217", nullptr)); + label_21->setText(QCoreApplication::translate("MainWindow", "\320\242\321\200\320\260\320\275\321\201\320\277\320\276\321\200\321\202\320\275\321\213\320\271 \320\277\320\260\321\200\320\272", nullptr)); + label_30->setText(QCoreApplication::translate("MainWindow", "\320\241\320\265\321\200\320\270\320\271\320\275\321\213\320\271 \320\275\320\276\320\274\320\265\321\200", nullptr)); + label_22->setText(QCoreApplication::translate("MainWindow", "\320\221\320\276\321\200\321\202\320\276\320\262\320\276\320\271 \320\275\320\276\320\274\320\265\321\200", nullptr)); + label_31->setText(QCoreApplication::translate("MainWindow", "\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\206\320\270\321\217", nullptr)); + exportButtonSettings->setText(QCoreApplication::translate("MainWindow", "\320\255\320\272\321\201\320\277\320\276\321\200\321\202", nullptr)); + importButtonSettings->setText(QCoreApplication::translate("MainWindow", "\320\230\320\274\320\277\320\276\321\200\321\202", nullptr)); + label_23->setText(QCoreApplication::translate("MainWindow", "\320\223\320\276\321\201.\320\275\320\276\320\274\320\265\321\200", nullptr)); + label_24->setText(QCoreApplication::translate("MainWindow", "\320\227\320\260\320\262\320\276\320\264\321\201\320\272\320\276\320\271 \320\275\320\276\320\274\320\265\321\200", nullptr)); + label_32->setText(QCoreApplication::translate("MainWindow", "\320\223\321\200\321\203\320\277\320\277\320\260", nullptr)); + cancelButtonSettings->setText(QCoreApplication::translate("MainWindow", "\320\236\321\202\320\274\320\265\320\275\320\260", nullptr)); + saveButtonSettings->setText(QCoreApplication::translate("MainWindow", "\320\241\320\276\321\205\321\200\320\260\320\275\320\270\321\202\321\214", nullptr)); + tabWidget->setTabText(tabWidget->indexOf(settingsTab), QCoreApplication::translate("MainWindow", "\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270", nullptr)); + } // retranslateUi + +}; + +namespace Ui { + class MainWindow: public Ui_MainWindow {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_MAINWINDOW_H diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/include/ui_sensordialog.h b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/include/ui_sensordialog.h new file mode 100644 index 0000000..0d75c6d --- /dev/null +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/include/ui_sensordialog.h @@ -0,0 +1,792 @@ +/******************************************************************************** +** Form generated from reading UI file 'sensordialog.ui' +** +** Created by: Qt User Interface Compiler version 6.8.1 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_SENSORDIALOG_H +#define UI_SENSORDIALOG_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_SensorDialog +{ +public: + QVBoxLayout *verticalLayout; + QHBoxLayout *horizontalLayout_18; + QLabel *label_14; + QLabel *nameHeader; + QSpacerItem *horizontalSpacer_2; + QHBoxLayout *horizontalLayout_17; + QLabel *label; + QLineEdit *name; + QHBoxLayout *horizontalLayout_16; + QLabel *label_2; + QLineEdit *unitName; + QHBoxLayout *horizontalLayout_15; + QLabel *label_3; + QComboBox *isBooled; + QHBoxLayout *horizontalLayout_14; + QLabel *label_4; + QComboBox *isAlarm; + QHBoxLayout *horizontalLayout_13; + QLabel *label_5; + QLineEdit *alarmLow; + QHBoxLayout *horizontalLayout_12; + QLabel *label_6; + QLineEdit *alarmUp; + QHBoxLayout *horizontalLayout_11; + QLabel *label_7; + QLineEdit *alarmCooldown; + QHBoxLayout *horizontalLayout_10; + QLabel *label_8; + QHBoxLayout *horizontalLayout_9; + QTextEdit *logError; + QHBoxLayout *horizontalLayout_8; + QLabel *label_9; + QHBoxLayout *horizontalLayout_7; + QTextEdit *logManual; + QHBoxLayout *horizontalLayout_6; + QLabel *label_10; + QLineEdit *alarmSleepage; + QHBoxLayout *horizontalLayout_5; + QLabel *label_11; + QHBoxLayout *horizontalLayout_4; + QTextEdit *logHugeError; + QHBoxLayout *horizontalLayout_3; + QLabel *label_12; + QComboBox *isVisible; + QHBoxLayout *horizontalLayout_2; + QSpacerItem *horizontalSpacer; + QPushButton *cancelButton; + QPushButton *saveButton; + + void setupUi(QDialog *SensorDialog) + { + if (SensorDialog->objectName().isEmpty()) + SensorDialog->setObjectName("SensorDialog"); + SensorDialog->resize(759, 947); + QSizePolicy sizePolicy(QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Fixed); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(SensorDialog->sizePolicy().hasHeightForWidth()); + SensorDialog->setSizePolicy(sizePolicy); + SensorDialog->setStyleSheet(QString::fromUtf8("background-color: white;")); + verticalLayout = new QVBoxLayout(SensorDialog); + verticalLayout->setSpacing(0); + verticalLayout->setObjectName("verticalLayout"); + verticalLayout->setContentsMargins(25, 0, 25, 0); + horizontalLayout_18 = new QHBoxLayout(); + horizontalLayout_18->setSpacing(20); + horizontalLayout_18->setObjectName("horizontalLayout_18"); + horizontalLayout_18->setContentsMargins(-1, 25, -1, 25); + label_14 = new QLabel(SensorDialog); + label_14->setObjectName("label_14"); + sizePolicy.setHeightForWidth(label_14->sizePolicy().hasHeightForWidth()); + label_14->setSizePolicy(sizePolicy); + label_14->setMinimumSize(QSize(32, 32)); + label_14->setMaximumSize(QSize(32, 32)); + label_14->setStyleSheet(QString::fromUtf8("")); + label_14->setPixmap(QPixmap(QString::fromUtf8(":/visual/res/svg/settings.svg"))); + + horizontalLayout_18->addWidget(label_14); + + nameHeader = new QLabel(SensorDialog); + nameHeader->setObjectName("nameHeader"); + nameHeader->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_18->addWidget(nameHeader); + + horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_18->addItem(horizontalSpacer_2); + + + verticalLayout->addLayout(horizontalLayout_18); + + horizontalLayout_17 = new QHBoxLayout(); + horizontalLayout_17->setSpacing(15); + horizontalLayout_17->setObjectName("horizontalLayout_17"); + horizontalLayout_17->setContentsMargins(-1, -1, -1, 10); + label = new QLabel(SensorDialog); + label->setObjectName("label"); + label->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_17->addWidget(label); + + name = new QLineEdit(SensorDialog); + name->setObjectName("name"); + name->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 26px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_17->addWidget(name); + + + verticalLayout->addLayout(horizontalLayout_17); + + horizontalLayout_16 = new QHBoxLayout(); + horizontalLayout_16->setSpacing(15); + horizontalLayout_16->setObjectName("horizontalLayout_16"); + horizontalLayout_16->setContentsMargins(-1, -1, -1, 10); + label_2 = new QLabel(SensorDialog); + label_2->setObjectName("label_2"); + label_2->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_16->addWidget(label_2); + + unitName = new QLineEdit(SensorDialog); + unitName->setObjectName("unitName"); + unitName->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 26px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_16->addWidget(unitName); + + + verticalLayout->addLayout(horizontalLayout_16); + + horizontalLayout_15 = new QHBoxLayout(); + horizontalLayout_15->setSpacing(15); + horizontalLayout_15->setObjectName("horizontalLayout_15"); + horizontalLayout_15->setContentsMargins(-1, -1, -1, 10); + label_3 = new QLabel(SensorDialog); + label_3->setObjectName("label_3"); + QSizePolicy sizePolicy1(QSizePolicy::Policy::Maximum, QSizePolicy::Policy::Preferred); + sizePolicy1.setHorizontalStretch(0); + sizePolicy1.setVerticalStretch(0); + sizePolicy1.setHeightForWidth(label_3->sizePolicy().hasHeightForWidth()); + label_3->setSizePolicy(sizePolicy1); + label_3->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_15->addWidget(label_3); + + isBooled = new QComboBox(SensorDialog); + isBooled->setObjectName("isBooled"); + isBooled->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n" +" border: 0px;\n" +"}\n" +"\n" +"QComboBox::down-arrow {\n" +" image: url(:/visual/res/svg/chevron-down.png);\n" +"}\n" +"\n" +"QComboBox {\n" +" border: 2px solid #DCD174;\n" +" background: transparent;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 20px;\n" +" font-weight: 400;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView {\n" +" border: 2px solid #DCD174; \n" +" background: white; \n" +" selection-color: red;\n" +" selection-background-color: blue;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item {\n" +" font-family: Inter;\n" +" font-size: 50px;\n" +" font-weight: 400;\n" +" text-align: left;\n" +" padding: 5px;\n" +" color: #13385F;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item:hover {\n" +" background-color: #13385F; \n" +" selection-color: white;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"\n" +"")); + + horizontalLayout_15->addWidget(isBooled); + + + verticalLayout->addLayout(horizontalLayout_15); + + horizontalLayout_14 = new QHBoxLayout(); + horizontalLayout_14->setSpacing(15); + horizontalLayout_14->setObjectName("horizontalLayout_14"); + horizontalLayout_14->setContentsMargins(-1, -1, -1, 10); + label_4 = new QLabel(SensorDialog); + label_4->setObjectName("label_4"); + sizePolicy1.setHeightForWidth(label_4->sizePolicy().hasHeightForWidth()); + label_4->setSizePolicy(sizePolicy1); + label_4->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_14->addWidget(label_4); + + isAlarm = new QComboBox(SensorDialog); + isAlarm->setObjectName("isAlarm"); + isAlarm->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n" +" border: 0px;\n" +"}\n" +"\n" +"QComboBox::down-arrow {\n" +" image: url(:/visual/res/svg/chevron-down.png);\n" +"}\n" +"\n" +"QComboBox {\n" +" border: 2px solid #DCD174;\n" +" background: transparent;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 20px;\n" +" font-weight: 400;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView {\n" +" border: 2px solid #DCD174; \n" +" background: white; \n" +" selection-color: red;\n" +" selection-background-color: blue;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item {\n" +" font-family: Inter;\n" +" font-size: 50px;\n" +" font-weight: 400;\n" +" text-align: left;\n" +" padding: 5px;\n" +" color: #13385F;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item:hover {\n" +" background-color: #13385F; \n" +" selection-color: white;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"\n" +"")); + + horizontalLayout_14->addWidget(isAlarm); + + + verticalLayout->addLayout(horizontalLayout_14); + + horizontalLayout_13 = new QHBoxLayout(); + horizontalLayout_13->setSpacing(15); + horizontalLayout_13->setObjectName("horizontalLayout_13"); + horizontalLayout_13->setContentsMargins(-1, -1, -1, 10); + label_5 = new QLabel(SensorDialog); + label_5->setObjectName("label_5"); + sizePolicy1.setHeightForWidth(label_5->sizePolicy().hasHeightForWidth()); + label_5->setSizePolicy(sizePolicy1); + label_5->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_13->addWidget(label_5); + + alarmLow = new QLineEdit(SensorDialog); + alarmLow->setObjectName("alarmLow"); + alarmLow->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 26px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_13->addWidget(alarmLow); + + + verticalLayout->addLayout(horizontalLayout_13); + + horizontalLayout_12 = new QHBoxLayout(); + horizontalLayout_12->setSpacing(15); + horizontalLayout_12->setObjectName("horizontalLayout_12"); + horizontalLayout_12->setContentsMargins(-1, -1, -1, 10); + label_6 = new QLabel(SensorDialog); + label_6->setObjectName("label_6"); + sizePolicy1.setHeightForWidth(label_6->sizePolicy().hasHeightForWidth()); + label_6->setSizePolicy(sizePolicy1); + label_6->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_12->addWidget(label_6); + + alarmUp = new QLineEdit(SensorDialog); + alarmUp->setObjectName("alarmUp"); + alarmUp->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 26px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_12->addWidget(alarmUp); + + + verticalLayout->addLayout(horizontalLayout_12); + + horizontalLayout_11 = new QHBoxLayout(); + horizontalLayout_11->setSpacing(15); + horizontalLayout_11->setObjectName("horizontalLayout_11"); + horizontalLayout_11->setContentsMargins(-1, -1, -1, 10); + label_7 = new QLabel(SensorDialog); + label_7->setObjectName("label_7"); + label_7->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_11->addWidget(label_7); + + alarmCooldown = new QLineEdit(SensorDialog); + alarmCooldown->setObjectName("alarmCooldown"); + alarmCooldown->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 26px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_11->addWidget(alarmCooldown); + + + verticalLayout->addLayout(horizontalLayout_11); + + horizontalLayout_10 = new QHBoxLayout(); + horizontalLayout_10->setObjectName("horizontalLayout_10"); + horizontalLayout_10->setContentsMargins(-1, -1, -1, 5); + label_8 = new QLabel(SensorDialog); + label_8->setObjectName("label_8"); + label_8->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_10->addWidget(label_8); + + + verticalLayout->addLayout(horizontalLayout_10); + + horizontalLayout_9 = new QHBoxLayout(); + horizontalLayout_9->setObjectName("horizontalLayout_9"); + horizontalLayout_9->setContentsMargins(-1, -1, -1, 10); + logError = new QTextEdit(SensorDialog); + logError->setObjectName("logError"); + QSizePolicy sizePolicy2(QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Fixed); + sizePolicy2.setHorizontalStretch(0); + sizePolicy2.setVerticalStretch(0); + sizePolicy2.setHeightForWidth(logError->sizePolicy().hasHeightForWidth()); + logError->setSizePolicy(sizePolicy2); + logError->setMinimumSize(QSize(707, 80)); + logError->setMaximumSize(QSize(16777215, 80)); + logError->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 26px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_9->addWidget(logError); + + + verticalLayout->addLayout(horizontalLayout_9); + + horizontalLayout_8 = new QHBoxLayout(); + horizontalLayout_8->setObjectName("horizontalLayout_8"); + horizontalLayout_8->setContentsMargins(-1, -1, -1, 5); + label_9 = new QLabel(SensorDialog); + label_9->setObjectName("label_9"); + label_9->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_8->addWidget(label_9); + + + verticalLayout->addLayout(horizontalLayout_8); + + horizontalLayout_7 = new QHBoxLayout(); + horizontalLayout_7->setObjectName("horizontalLayout_7"); + horizontalLayout_7->setContentsMargins(-1, -1, -1, 10); + logManual = new QTextEdit(SensorDialog); + logManual->setObjectName("logManual"); + sizePolicy2.setHeightForWidth(logManual->sizePolicy().hasHeightForWidth()); + logManual->setSizePolicy(sizePolicy2); + logManual->setMinimumSize(QSize(707, 80)); + logManual->setMaximumSize(QSize(16777215, 80)); + logManual->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 26px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_7->addWidget(logManual); + + + verticalLayout->addLayout(horizontalLayout_7); + + horizontalLayout_6 = new QHBoxLayout(); + horizontalLayout_6->setSpacing(15); + horizontalLayout_6->setObjectName("horizontalLayout_6"); + horizontalLayout_6->setContentsMargins(-1, -1, -1, 10); + label_10 = new QLabel(SensorDialog); + label_10->setObjectName("label_10"); + label_10->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_6->addWidget(label_10); + + alarmSleepage = new QLineEdit(SensorDialog); + alarmSleepage->setObjectName("alarmSleepage"); + alarmSleepage->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 26px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_6->addWidget(alarmSleepage); + + + verticalLayout->addLayout(horizontalLayout_6); + + horizontalLayout_5 = new QHBoxLayout(); + horizontalLayout_5->setObjectName("horizontalLayout_5"); + horizontalLayout_5->setContentsMargins(-1, -1, -1, 5); + label_11 = new QLabel(SensorDialog); + label_11->setObjectName("label_11"); + label_11->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_5->addWidget(label_11); + + + verticalLayout->addLayout(horizontalLayout_5); + + horizontalLayout_4 = new QHBoxLayout(); + horizontalLayout_4->setObjectName("horizontalLayout_4"); + horizontalLayout_4->setContentsMargins(-1, -1, -1, 10); + logHugeError = new QTextEdit(SensorDialog); + logHugeError->setObjectName("logHugeError"); + sizePolicy2.setHeightForWidth(logHugeError->sizePolicy().hasHeightForWidth()); + logHugeError->setSizePolicy(sizePolicy2); + logHugeError->setMinimumSize(QSize(707, 80)); + logHugeError->setMaximumSize(QSize(16777215, 80)); + logHugeError->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n" +"font-family: Inter;\n" +"font-size: 26px;\n" +"font-weight: 400;\n" +"line-height: 31.47px;\n" +"text-align: left;\n" +"background: #00000000;\n" +"color: #13385F;\n" +"")); + + horizontalLayout_4->addWidget(logHugeError); + + + verticalLayout->addLayout(horizontalLayout_4); + + horizontalLayout_3 = new QHBoxLayout(); + horizontalLayout_3->setSpacing(15); + horizontalLayout_3->setObjectName("horizontalLayout_3"); + horizontalLayout_3->setContentsMargins(-1, -1, -1, 25); + label_12 = new QLabel(SensorDialog); + label_12->setObjectName("label_12"); + sizePolicy1.setHeightForWidth(label_12->sizePolicy().hasHeightForWidth()); + label_12->setSizePolicy(sizePolicy1); + label_12->setStyleSheet(QString::fromUtf8("background: transparent;\n" +"font-family: Inter;\n" +"font-size: 22px;\n" +"font-weight: 400;\n" +"line-height: 26.63px;\n" +"text-align: left;\n" +"color: #FF453A;\n" +"")); + + horizontalLayout_3->addWidget(label_12); + + isVisible = new QComboBox(SensorDialog); + isVisible->setObjectName("isVisible"); + isVisible->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n" +" border: 0px;\n" +"}\n" +"\n" +"QComboBox::down-arrow {\n" +" image: url(:/visual/res/svg/chevron-down.png);\n" +"}\n" +"\n" +"QComboBox {\n" +" border: 2px solid #DCD174;\n" +" background: transparent;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 20px;\n" +" font-weight: 400;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView {\n" +" border: 2px solid #DCD174; \n" +" background: white; \n" +" selection-color: red;\n" +" selection-background-color: blue;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item {\n" +" font-family: Inter;\n" +" font-size: 50px;\n" +" font-weight: 400;\n" +" text-align: left;\n" +" padding: 5px;\n" +" color: #13385F;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"QComboBox QAbstractItemView::item:hover {\n" +" background-color: #13385F; \n" +" selection-color: white;\n" +" outline: 0px;;\n" +"}\n" +"\n" +"\n" +"")); + + horizontalLayout_3->addWidget(isVisible); + + + verticalLayout->addLayout(horizontalLayout_3); + + horizontalLayout_2 = new QHBoxLayout(); + horizontalLayout_2->setSpacing(15); + horizontalLayout_2->setObjectName("horizontalLayout_2"); + horizontalLayout_2->setContentsMargins(-1, -1, -1, 25); + horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); + + horizontalLayout_2->addItem(horizontalSpacer); + + cancelButton = new QPushButton(SensorDialog); + cancelButton->setObjectName("cancelButton"); + sizePolicy.setHeightForWidth(cancelButton->sizePolicy().hasHeightForWidth()); + cancelButton->setSizePolicy(sizePolicy); + cancelButton->setMinimumSize(QSize(110, 41)); + cancelButton->setMaximumSize(QSize(110, 41)); + cancelButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" color: #13385F;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #e0f2f7;\n" +" border-color: #1A4A73;\n" +" color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +" color: white; \n" +"}")); + + horizontalLayout_2->addWidget(cancelButton); + + saveButton = new QPushButton(SensorDialog); + saveButton->setObjectName("saveButton"); + sizePolicy.setHeightForWidth(saveButton->sizePolicy().hasHeightForWidth()); + saveButton->setSizePolicy(sizePolicy); + saveButton->setMinimumSize(QSize(143, 41)); + saveButton->setMaximumSize(QSize(143, 41)); + saveButton->setStyleSheet(QString::fromUtf8("QPushButton {\n" +" border-style: outset;\n" +" border-radius: 5px;\n" +" border-color: #13385F;\n" +" border-width: 1px;\n" +" background-color: #13385F;\n" +" color: white;\n" +" font-family: Inter;\n" +" font-size: 22px;\n" +" font-weight: 500;\n" +" line-height: 26.63px;\n" +" text-align: center;\n" +"}\n" +"\n" +"QPushButton:hover {\n" +" background-color: #1A4A73;\n" +" border-color: #1A4A73;\n" +"}\n" +"\n" +"QPushButton:pressed {\n" +" background-color: #102E47;\n" +" border-color: #102E47;\n" +"}")); + + horizontalLayout_2->addWidget(saveButton); + + + verticalLayout->addLayout(horizontalLayout_2); + + + retranslateUi(SensorDialog); + + QMetaObject::connectSlotsByName(SensorDialog); + } // setupUi + + void retranslateUi(QDialog *SensorDialog) + { + SensorDialog->setWindowTitle(QCoreApplication::translate("SensorDialog", "Dialog", nullptr)); + label_14->setText(QString()); + nameHeader->setText(QCoreApplication::translate("SensorDialog", "TextLabel", nullptr)); + label->setText(QCoreApplication::translate("SensorDialog", "\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\320\265", nullptr)); + label_2->setText(QCoreApplication::translate("SensorDialog", "\320\225\320\264\320\270\320\275\320\270\321\206\320\260 \320\270\320\267\320\274\320\265\321\200\320\265\320\275\320\270\321\217", nullptr)); + label_3->setText(QCoreApplication::translate("SensorDialog", "\320\236\321\202\320\276\320\261\321\200\320\260\320\266\320\260\321\202\321\214 \321\202\320\276\320\273\321\214\320\272\320\276 \320\224\320\260/\320\235\320\265\321\202 \320\262\320\274\320\265\321\201\321\202\320\276 \320\267\320\275\320\260\321\207\320\265\320\275\320\270\320\271 \320\264\320\260\321\202\321\207\320\270\320\272\320\260", nullptr)); + label_4->setText(QCoreApplication::translate("SensorDialog", "\320\230\320\274\320\265\320\265\321\202 \320\273\320\270 \320\277\320\276\321\200\320\276\320\263\320\276\320\262\321\213\320\265 \320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217", nullptr)); + label_5->setText(QCoreApplication::translate("SensorDialog", "\320\237\320\276\321\200\320\276\320\263\320\276\320\262\320\276\320\265 \320\267\320\275\320\260\321\207\320\265\320\275\320\270\320\265 (\320\274\320\270\320\275\320\270\320\274\321\203\320\274)", nullptr)); + label_6->setText(QCoreApplication::translate("SensorDialog", "\320\237\320\276\321\200\320\276\320\263\320\276\320\262\320\276\320\265 \320\267\320\275\320\260\321\207\320\265\320\275\320\270\320\265 (\320\274\320\260\320\272\321\201\320\270\320\274\321\203\320\274)", nullptr)); + label_7->setText(QCoreApplication::translate("SensorDialog", "\320\224\320\273\320\270\321\202\320\265\320\273\321\214\320\275\320\276\321\201\321\202\321\214, \321\201\320\265\320\272\321\203\320\275\320\264", nullptr)); + label_8->setText(QCoreApplication::translate("SensorDialog", "\320\233\320\276\320\263 \320\276\321\210\320\270\320\261\320\272\320\270", nullptr)); + label_9->setText(QCoreApplication::translate("SensorDialog", "\320\233\320\276\320\263 \320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\320\270", nullptr)); + label_10->setText(QCoreApplication::translate("SensorDialog", "\320\222\321\200\320\265\320\274\321\217 \320\277\320\276\320\262\321\202\320\276\321\200\320\260, \321\201\320\265\320\272\321\203\320\275\320\264", nullptr)); + label_11->setText(QCoreApplication::translate("SensorDialog", "\320\233\320\276\320\263 \320\277\320\276\320\262\321\202\320\276\321\200\321\217\321\216\321\211\320\265\320\271\321\201\321\217 \320\276\321\210\320\270\320\261\320\272\320\270", nullptr)); + label_12->setText(QCoreApplication::translate("SensorDialog", "\320\241\320\272\321\200\321\213\321\202\321\214 \320\264\320\260\321\202\321\207\320\270\320\272?", nullptr)); + cancelButton->setText(QCoreApplication::translate("SensorDialog", "\320\236\321\202\320\274\320\265\320\275\320\260", nullptr)); + saveButton->setText(QCoreApplication::translate("SensorDialog", "\320\241\320\276\321\205\321\200\320\260\320\275\320\270\321\202\321\214", nullptr)); + } // retranslateUi + +}; + +namespace Ui { + class SensorDialog: public Ui_SensorDialog {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_SENSORDIALOG_H diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/mocs_compilation.cpp b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/mocs_compilation.cpp new file mode 100644 index 0000000..d7328ca --- /dev/null +++ b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/mocs_compilation.cpp @@ -0,0 +1,19 @@ +// This file is autogenerated. Changes will be overwritten. +#include "EWIEGA46WW/moc_alarmdialog.cpp" +#include "EWIEGA46WW/moc_alarmsservice.cpp" +#include "EWIEGA46WW/moc_alarmwidget.cpp" +#include "EWIEGA46WW/moc_apiform.cpp" +#include "EWIEGA46WW/moc_httpclient.cpp" +#include "EWIEGA46WW/moc_incedentwidget.cpp" +#include "EWIEGA46WW/moc_journalservice.cpp" +#include "EWIEGA46WW/moc_logwidget.cpp" +#include "EWIEGA46WW/moc_mainwindow.cpp" +#include "EWIEGA46WW/moc_paginationbar.cpp" +#include "EWIEGA46WW/moc_plotservice.cpp" +#include "EWIEGA46WW/moc_qcustomplot.cpp" +#include "EWIEGA46WW/moc_savesensorservice.cpp" +#include "EWIEGA46WW/moc_sensordialog.cpp" +#include "EWIEGA46WW/moc_sensorlogervice.cpp" +#include "EWIEGA46WW/moc_sensorservice.cpp" +#include "EWIEGA46WW/moc_sensorwidget.cpp" +#include "EWIEGA46WW/moc_serverwidget.cpp" diff --git a/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/timestamp b/build/Desktop_Qt_6_8_1_MinGW_64_bit-Release/FemaSoftware_autogen/timestamp new file mode 100644 index 0000000..e69de29 diff --git a/flowlayout.cpp b/flowlayout.cpp index 0ddbc92..e038ed5 100644 --- a/flowlayout.cpp +++ b/flowlayout.cpp @@ -4,18 +4,23 @@ #include FlowLayout::FlowLayout(QWidget *parent, int margin, int hSpacing, int vSpacing) - : QLayout(parent), m_hSpacing(hSpacing), m_vSpacing(vSpacing) { + : QLayout(parent) + , m_hSpacing(hSpacing) + , m_vSpacing(vSpacing) +{ setContentsMargins(margin, margin, margin, margin); } -FlowLayout::~FlowLayout() { +FlowLayout::~FlowLayout() +{ QLayoutItem *item; while ((item = takeAt(0))) { delete item; } } -void FlowLayout::clear() { +void FlowLayout::clear() +{ while (QLayoutItem *item = takeAt(0)) { if (item->widget()) { item->widget()->hide(); @@ -24,44 +29,54 @@ void FlowLayout::clear() { } } -void FlowLayout::addItem(QLayoutItem *item) { +void FlowLayout::addItem(QLayoutItem *item) +{ m_items.append(item); } -int FlowLayout::count() const { +int FlowLayout::count() const +{ return m_items.size(); } -QLayoutItem *FlowLayout::itemAt(int index) const { +QLayoutItem *FlowLayout::itemAt(int index) const +{ return m_items.value(index); } -QLayoutItem *FlowLayout::takeAt(int index) { +QLayoutItem *FlowLayout::takeAt(int index) +{ return (index >= 0 && index < m_items.size()) ? m_items.takeAt(index) : nullptr; } -Qt::Orientations FlowLayout::expandingDirections() const { +Qt::Orientations FlowLayout::expandingDirections() const +{ return Qt::Orientation(0); } -bool FlowLayout::hasHeightForWidth() const { +bool FlowLayout::hasHeightForWidth() const +{ return true; } -int FlowLayout::heightForWidth(int width) const { +int FlowLayout::heightForWidth(int width) const +{ return doLayout(QRect(0, 0, width, 0), true); } -void FlowLayout::setGeometry(const QRect &rect) { +void FlowLayout::setGeometry(const QRect &rect) +{ QLayout::setGeometry(rect); doLayout(rect, false); } -QSize FlowLayout::sizeHint() const { +QSize FlowLayout::sizeHint() const +{ return minimumSize(); } -QSize FlowLayout::minimumSize() const { +QSize FlowLayout::minimumSize() const +{ QSize size; for (const QLayoutItem *item : std::as_const(m_items)) { size = size.expandedTo(item->minimumSize()); @@ -71,7 +86,8 @@ QSize FlowLayout::minimumSize() const { return size; } -int FlowLayout::doLayout(const QRect &rect, bool testOnly) const { +int FlowLayout::doLayout(const QRect &rect, bool testOnly) const +{ int x = rect.x(); int y = rect.y(); int lineHeight = 0; @@ -98,20 +114,25 @@ int FlowLayout::doLayout(const QRect &rect, bool testOnly) const { return y + lineHeight - rect.y(); } -int FlowLayout::horizontalSpacing() const { +int FlowLayout::horizontalSpacing() const +{ return (m_hSpacing >= 0) ? m_hSpacing : smartSpacing(QStyle::PM_LayoutHorizontalSpacing); } -int FlowLayout::verticalSpacing() const { +int FlowLayout::verticalSpacing() const +{ return (m_vSpacing >= 0) ? m_vSpacing : smartSpacing(QStyle::PM_LayoutVerticalSpacing); } -int FlowLayout::smartSpacing(QStyle::PixelMetric pm) const { +int FlowLayout::smartSpacing(QStyle::PixelMetric pm) const +{ QObject *parent = this->parent(); if (!parent) { return -1; } else if (parent->isWidgetType()) { - return static_cast(parent)->style()->pixelMetric(pm, nullptr, static_cast(parent)); + return static_cast(parent)->style()->pixelMetric(pm, + nullptr, + static_cast(parent)); } else { return static_cast(parent)->spacing(); } diff --git a/flowlayout.h b/flowlayout.h index 0595523..1c43269 100644 --- a/flowlayout.h +++ b/flowlayout.h @@ -2,13 +2,17 @@ #define FLOWLAYOUT_H #include -#include -#include #include +#include +#include -class FlowLayout : public QLayout { +class FlowLayout : public QLayout +{ public: - explicit FlowLayout(QWidget *parent = nullptr, int margin = 0, int hSpacing = -1, int vSpacing = -1); + explicit FlowLayout(QWidget *parent = nullptr, + int margin = 0, + int hSpacing = -1, + int vSpacing = -1); ~FlowLayout() override; void clear(); diff --git a/getsensors_p.h b/getsensors_p.h index 49645a4..c323e3e 100644 --- a/getsensors_p.h +++ b/getsensors_p.h @@ -1,19 +1,19 @@ #ifndef GETSENSORS_P_H #define GETSENSORS_P_H -#include +#include #include #include -#include +#include -class GetSensorsP { +class GetSensorsP +{ public: GetSensorsP() = default; - void setGroup(const QString& group) { - this->group = group; - } + void setGroup(const QString &group) { this->group = group; } - QByteArray createRequestJson() const { + QByteArray createRequestJson() const + { QJsonObject obj; obj["group"] = group; diff --git a/getsensors_r.h b/getsensors_r.h index 93dcb99..539bca1 100644 --- a/getsensors_r.h +++ b/getsensors_r.h @@ -1,19 +1,20 @@ #ifndef GETSENSORS_R_H #define GETSENSORS_R_H -#include +#include #include #include -#include #include +#include -class Sensor { +class Sensor +{ public: int alarmCooldown; double alarmLowerBound; double alarmUpperBound; bool isBooled; // Поле из EXTRA - bool isHide; // Поле из EXTRA + bool isHide; // Поле из EXTRA QString group; QString id; bool isAlarmEnabled; @@ -22,7 +23,8 @@ public: QString name; QString unitName; - void parseSensor(const QJsonObject& sensorObj) { + void parseSensor(const QJsonObject &sensorObj) + { alarmCooldown = sensorObj["ALARM_COOLDOWN"].toInt(); alarmLowerBound = sensorObj["ALARM_LOWERBOUND"].toDouble(); alarmUpperBound = sensorObj["ALARM_UPPERBOUND"].toDouble(); @@ -55,14 +57,16 @@ public: } }; -class GetSensorsR { +class GetSensorsR +{ public: GetSensorsR() = default; - void parseResponse(const QJsonObject& responseObj) { + void parseResponse(const QJsonObject &responseObj) + { if (responseObj.contains("sensors") && responseObj["sensors"].isArray()) { QJsonArray sensorsArray = responseObj["sensors"].toArray(); - for (const QJsonValue& value : sensorsArray) { + for (const QJsonValue &value : sensorsArray) { if (value.isObject()) { Sensor sensor; sensor.parseSensor(value.toObject()); @@ -72,9 +76,7 @@ public: } } - const QList& getSensors() const { - return sensors; - } + const QList &getSensors() const { return sensors; } private: QList sensors; diff --git a/httpclient.cpp b/httpclient.cpp index 18768a8..4d950c0 100644 --- a/httpclient.cpp +++ b/httpclient.cpp @@ -2,10 +2,10 @@ #include #include #include +#include #include #include #include -#include HttpClient::HttpClient(QObject *parent) : QObject(parent) diff --git a/incedentwidget.cpp b/incedentwidget.cpp index 74b30e8..3b0449b 100644 --- a/incedentwidget.cpp +++ b/incedentwidget.cpp @@ -1,7 +1,11 @@ #include "incedentwidget.h" -IncedentWidget::IncedentWidget(const QString& time, const QString& log, const QString& sender, - const QString& section, const QString& status, QWidget *parent) +IncedentWidget::IncedentWidget(const QString &time, + const QString &log, + const QString &sender, + const QString §ion, + const QString &status, + QWidget *parent) : QWidget(parent) { setAttribute(Qt::WA_StyledBackground); @@ -15,8 +19,8 @@ IncedentWidget::IncedentWidget(const QString& time, const QString& log, const QS // Горизонтальный layout QHBoxLayout *mainLayout = new QHBoxLayout(this); - mainLayout->setSpacing(70); // Отступы между элементами - mainLayout->setContentsMargins(25, 5, 25, 5); // Внутренние отступы + mainLayout->setSpacing(70); // Отступы между элементами + mainLayout->setContentsMargins(25, 5, 25, 5); // Внутренние отступы setLayout(mainLayout); // Создаем лейблы @@ -32,10 +36,9 @@ IncedentWidget::IncedentWidget(const QString& time, const QString& log, const QS mainLayout->addWidget(senderLabel); mainLayout->addWidget(sectionLabel); mainLayout->addWidget(statusLabel); - } -QLabel* IncedentWidget::createLabel(const QString &text, int minSize, int maxSize) +QLabel *IncedentWidget::createLabel(const QString &text, int minSize, int maxSize) { QLabel *label = new QLabel(text); label->setAlignment(Qt::AlignLeft); diff --git a/incedentwidget.h b/incedentwidget.h index 408eaf6..799b0ee 100644 --- a/incedentwidget.h +++ b/incedentwidget.h @@ -1,20 +1,24 @@ #ifndef INCEDENTWIDGET_H #define INCEDENTWIDGET_H -#include +#include +#include #include #include #include -#include -#include +#include class IncedentWidget : public QWidget { Q_OBJECT public: - explicit IncedentWidget(const QString& time, const QString& log, const QString& sender, - const QString& section, const QString& status, QWidget *parent = nullptr); + explicit IncedentWidget(const QString &time, + const QString &log, + const QString &sender, + const QString §ion, + const QString &status, + QWidget *parent = nullptr); private: QLabel *createLabel(const QString &text, int minSize = 100, int maxSize = 250); @@ -27,5 +31,4 @@ private: QLabel *statusLabel; }; - #endif // INCEDENTWIDGET_H diff --git a/journalservice.h b/journalservice.h index ebf3eb7..009c509 100644 --- a/journalservice.h +++ b/journalservice.h @@ -1,42 +1,68 @@ #ifndef JOURNALSERVICE_H #define JOURNALSERVICE_H -#include "utils.h" #include "HttpClient.h" #include "logs_r.h" +#include "utils.h" +#include +#include +#include +#include #include #include -#include -#include -#include #include -#include + +struct JournalSettings{ + QMap> groupsWithSensors; + qint64 start_time; + qint64 end_time; + bool cmp; + QList status; + JournalSettings(QMap> a, qint64 b, qint64 c, bool d, QList e) { + groupsWithSensors = a; + start_time = b; + end_time = c; + cmp = d; + status = e; + } +}; class JournalService : public QObject { Q_OBJECT public: - explicit JournalService(HttpClient* client, QObject *parent = nullptr) - : QObject(parent), httpClient(client) {} + explicit JournalService(HttpClient *client, QObject *parent = nullptr) + : QObject(parent) + , httpClient(client) + {} - int getLogsAmount(const QMap& groupWithSensors, qint64 start, qint64 end) { + int getLogsAmount(const QMap> &groupWithSensors, const QList &threatLevels, + qint64 start, qint64 end) + { QJsonObject rootObj; rootObj["start_time"] = start; rootObj["end_time"] = end; + QJsonArray threatLevelsArray; + for (int level : threatLevels) { + threatLevelsArray.append(level); + } + rootObj["threat_levels"] = threatLevelsArray; QJsonObject sensorsObj; for (auto it = groupWithSensors.constBegin(); it != groupWithSensors.constEnd(); ++it) { QJsonArray sensorArray; - sensorArray.append(it.value()); + for (QString sensorId : it.value()) { + sensorArray.append(sensorId); + } sensorsObj[it.key()] = sensorArray; } rootObj["sensors"] = sensorsObj; QJsonDocument doc(rootObj); QByteArray requestData = doc.toJson(); - QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogsAmount", QJsonDocument::fromJson(requestData).object()); - + QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogsAmount", + QJsonDocument::fromJson(requestData).object()); if (responseJson.contains("amount")) { return responseJson["amount"].toInt(); @@ -44,52 +70,14 @@ public: return 0; } - QList tmpB(int pageNum, int pageSize, qint64 start = 1734063255, qint64 end = 1735392656) { - QJsonObject rootObj; - rootObj["start_time"] = start; - rootObj["end_time"] = end; - rootObj["page_number"] = pageNum; - rootObj["page_size"] = pageSize; - QJsonDocument doc(rootObj); - QByteArray requestData = doc.toJson(); - - - QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogs", QJsonDocument::fromJson(requestData).object()); - - QList logList; - - if (responseJson.contains("logs") && responseJson["logs"].isArray()) { - QJsonArray alarmsArray = responseJson["logs"].toArray(); - - for (const QJsonValue& value : alarmsArray) { - if (value.isObject()) { - LogsR log; - log.parseResponse(value.toObject()); - logList.append(log); - } - } - } - - return logList; - } - - int tmpA(qint64 start = 1734063255, qint64 end = 1735392656) { - QJsonObject rootObj; - rootObj["start_time"] = start; - rootObj["end_time"] = end; - QJsonDocument doc(rootObj); - QByteArray requestData = doc.toJson(); - - - QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogsAmount", QJsonDocument::fromJson(requestData).object()); - - if (responseJson.contains("amount")) { - return responseJson["amount"].toInt(); - } - return 0; - } - - QStringList getLogs(const QMap& groupWithSensors, const QList& threatLevels, qint64 start, qint64 end, int pageNum, int pageSize) { + QList getLogs(const QMap> &groupWithSensors, + const QList &threatLevels, + bool cmp, + qint64 start, + qint64 end, + int pageNum, + int pageSize) + { QJsonObject rootObj; QJsonArray threatLevelsArray; for (int level : threatLevels) { @@ -103,26 +91,34 @@ public: QJsonObject sensorsObj; for (auto it = groupWithSensors.constBegin(); it != groupWithSensors.constEnd(); ++it) { QJsonArray sensorArray; - sensorArray.append(it.value()); + for (QString sensorId : it.value()) { + sensorArray.append(sensorId); + } sensorsObj[it.key()] = sensorArray; } rootObj["sensors"] = sensorsObj; + QJsonArray orderArray; + QJsonArray orderItem; + cmp ? orderItem.append("threat_level") : orderItem.append("date"); + orderItem.append("-"); + orderArray.append(orderItem); + rootObj["order"] = orderArray; QJsonDocument doc(rootObj); QByteArray requestData = doc.toJson(); + QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogs", + QJsonDocument::fromJson(requestData).object()); - QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogs", QJsonDocument::fromJson(requestData).object()); - - QStringList logsList; + QList logsList; if (responseJson.contains("logs") && responseJson["logs"].isArray()) { QJsonArray logsArray = responseJson["logs"].toArray(); - for (const QJsonValue& logValue : logsArray) { + for (const QJsonValue &logValue : logsArray) { if (logValue.isObject()) { LogsR log; log.parseResponse(logValue.toObject()); - logsList.append(log.getMark() + " - " + log.getMessage()); + logsList.append(log); } } } @@ -131,7 +127,7 @@ public: } private: - HttpClient* httpClient; + HttpClient *httpClient; }; #endif // JOURNALSERVICE_H diff --git a/logs_r.h b/logs_r.h index 3243752..9a77fcb 100644 --- a/logs_r.h +++ b/logs_r.h @@ -1,21 +1,34 @@ #ifndef LOGS_R_H #define LOGS_R_H -#include -#include #include +#include #include +#include -class LogsR { +class LogsR +{ public: LogsR() = default; - LogsR(const QString& mark, const QString& message, const QString& sensorGroup, - const QString& sensorId, const QString& serial, int threatLevel, const QString& time) - : mark(mark), message(message), sensor_group(sensorGroup), sensor_id(sensorId), - serial(serial), threat_level(threatLevel), time(time) {} + LogsR(const QString &mark, + const QString &message, + const QString &sensorGroup, + const QString &sensorId, + const QString &serial, + int threatLevel, + const QString &time) + : mark(mark) + , message(message) + , sensor_group(sensorGroup) + , sensor_id(sensorId) + , serial(serial) + , threat_level(threatLevel) + , time(time) + {} - void parseResponse(const QJsonObject& json) { + void parseResponse(const QJsonObject &json) + { if (json.contains("mark") && json["mark"].isString()) { mark = json["mark"].toString(); } @@ -34,8 +47,10 @@ public: if (json.contains("threat_level") && json["threat_level"].isDouble()) { threat_level = json["threat_level"].toInt(); } - if (json.contains("time") && json["time"].isString()) { - time = json["time"].toString(); + if (json.contains("time") && json["time"].isDouble()) { + qint64 unixTime = json["time"].toVariant().toLongLong(); + QDateTime dateTime = QDateTime::fromSecsSinceEpoch(unixTime); + time = dateTime.toString("HH:mm dd.MM.yyyy"); } } diff --git a/logwidget.cpp b/logwidget.cpp new file mode 100644 index 0000000..8fa761a --- /dev/null +++ b/logwidget.cpp @@ -0,0 +1,71 @@ +#include "logwidget.h" + +#include + +LogWidget::LogWidget(QMap>> &translate, + const QString &time, + const QString &log, + const QString &sensorId, + const QString &group, + const int status, + QWidget *parent) + : QWidget(parent) + , _translate(translate) +{ + setAttribute(Qt::WA_StyledBackground); + setStyleSheet(R"( + QWidget { + border: 1px solid #E5E7EB; + background-color: transparent; + } + )"); + + QHBoxLayout *mainLayout = new QHBoxLayout(this); + mainLayout->setSpacing(70); + mainLayout->setContentsMargins(25, 5, 25, 5); + setLayout(mainLayout); + + timeLabel = createLabel(time, 100, 230); + logLabel = createLabel(log, 100, 250); + sensorIdLabel = createLabel(translate[group][sensorId].second, 150, 220); + groupLabel = createLabel(translate[group][sensorId].first, 150, 100); + QString msg; + if (status == 0) { + msg = "Отладка"; + } else if (status == 1) { + msg = "Информация"; + } else if (status == 2) { + msg = "Предупреждение"; + } else if (status == 3) { + msg = "Ошибка"; + } else { + msg = "Экстренно"; + } + statusLabel = createLabel(msg, 100, 120); + + mainLayout->addWidget(timeLabel); + mainLayout->addWidget(logLabel); + mainLayout->addWidget(sensorIdLabel); + mainLayout->addWidget(groupLabel); + mainLayout->addWidget(statusLabel); +} + +QLabel *LogWidget::createLabel(const QString &text, int minSize, int maxSize) +{ + QLabel *label = new QLabel(text); + label->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); + label->setWordWrap(true); + label->setMinimumWidth(minSize); + label->setMaximumWidth(maxSize); + label->setFixedHeight(200); + label->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); + label->setStyleSheet(R"( + background: transparent; + font-family: Inter; + font-size: 20px; + font-weight: 400; + color: #13385F; + border: none; + )"); + return label; +} diff --git a/logwidget.h b/logwidget.h new file mode 100644 index 0000000..518fbbe --- /dev/null +++ b/logwidget.h @@ -0,0 +1,31 @@ +#ifndef LOGWIDGET_H +#define LOGWIDGET_H + +#include +#include + +class LogWidget : public QWidget +{ + Q_OBJECT +public: + explicit LogWidget(QMap>> &translate, + const QString &time = "", + const QString &log = "", + const QString &sensorId = "", + const QString &group = "", + const int status = 4, + QWidget *parent = nullptr); + +private: + QLabel *createLabel(const QString &text, int minSize = 100, int maxSize = 250); + +private: + QMap>> _translate; + QLabel *timeLabel; + QLabel *logLabel; + QLabel *sensorIdLabel; + QLabel *groupLabel; + QLabel *statusLabel; +}; + +#endif // LOGWIDGET_H diff --git a/main.cpp b/main.cpp index 2ab59ce..f3a2f8d 100644 --- a/main.cpp +++ b/main.cpp @@ -1,29 +1,44 @@ #include "mainwindow.h" -#include "sensordialog.h" -#include "alarmdialog.h" +#include "apiform.h" +#include "utils.h" #include +#include #include #include - -#include -#include -#include +#include +#include +#include int main(int argc, char *argv[]) { QApplication a(argc, argv); - QTranslator translator; - const QStringList uiLanguages = QLocale::system().uiLanguages(); - for (const QString &locale : uiLanguages) { - const QString baseName = "FemaSoftware_" + QLocale(locale).name(); - if (translator.load(":/i18n/" + baseName)) { - a.installTranslator(&translator); - break; + try { + QTranslator translator; + const QStringList uiLanguages = QLocale::system().uiLanguages(); + for (const QString &locale : uiLanguages) { + const QString baseName = "FemaSoftware_" + QLocale(locale).name(); + if (translator.load(":/i18n/" + baseName)) { + a.installTranslator(&translator); + break; + } } + + ApiForm *apiForm = new ApiForm(); + apiForm->exec(); + + if (!utils::API_URL.isEmpty()) { + MainWindow *mainWindow = new MainWindow(); + mainWindow->show(); + } else { + throw std::runtime_error("Invalid API URL or parameters."); + } + + } catch (const std::exception &e) { + QMessageBox::critical(nullptr, "Ошибка", "Произошла ошибка: " + QString::fromStdString(e.what())); + return 1; } - MainWindow w; - w.show(); + return a.exec(); } diff --git a/mainwindow.cpp b/mainwindow.cpp index c2d52e3..cdc3c32 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -1,23 +1,24 @@ #include "mainwindow.h" #include "./ui_mainwindow.h" -#include "sensordialog.h" +#include "alarmsservice.h" #include "flowlayout.h" #include "paginationbar.h" +#include "sensordialog.h" #include "alarmwidget.h" -#include "incedentwidget.h" -#include "alarmsservice.h" -//#include "journalservice.h" +#include "journalservice.h" +#include "logwidget.h" +#include "qcustomplot.h" +#include "serverwidget.h" #include +#include #include +#include #include #include -#include #include #include - - -#include +#include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) @@ -27,197 +28,846 @@ MainWindow::MainWindow(QWidget *parent) httpClient = new HttpClient(this); sensorService = new SensorService(httpClient, this); + alarmsService = new AlarmsService(httpClient, this); + journalService = new JournalService(httpClient, this); - //sensor tab - //какая-то лажа при запуске + TranslateUpdate(); SetupSensorTab(); - startSensorTabRefreshTimer(); -//------------------------------------------------------------------------------ + startRefreshTimer(); + SetupIncidentTab(); + SetupStatisticTab(); + SetupJournalTab(); + //------------------------------------------------------------------------------ + settings = sensorService->getSettings(); + ui->serialLineEdit->setText(settings.serial); + ui->factoryLineEdit->setText(settings.factory); + ui->exhuyantLineEdit->setText(settings.exhuyant); + ui->fleetLineEdit->setText(settings.fleet); + ui->sideLineEdit->setText(settings.side); + ui->gosNumberLineEdit->setText(settings.gosNumber); + ui->factoryNumberLineEdit->setText(settings.factoryNumber); + ui->groupLineEdit->setText(settings.group); + ui->adresLineEdit->setText(settings.adres); + ui->userNameLineEdit->setText(settings.userName); + ui->userPasswordLineEdit->setText(settings.userPassword); + ui->argusSerialLineEdit->setText(settings.argusSerial); - //loadSenorsTree(ui->treeIncidents); - //loadSenorsTree(ui->treeJournal); + QLayoutItem *child; + while ((child = ui->scrollAreaServersLayout->takeAt(0)) != nullptr) { + if (child->widget()) { + child->widget()->deleteLater(); + } + } - connect(ui->treeIncidents, &QTreeWidget::itemChanged, this, &MainWindow::onTreeIncidentsChanged); - connect(ui->treeJournal, &QTreeWidget::itemChanged, this, &MainWindow::onTreeJournalChanged); + for (const auto &server : settings.servers) { + QString domain = server.first; + int port = server.second.toInt(); - connect(ui->searchIncedents, &QLineEdit::textChanged, this, &MainWindow::onSearchIncedentsTextChanged); - connect(ui->searchJournal, &QLineEdit::textChanged, this, &MainWindow::onSearchJournalTextChanged); + ServerWidget *serverWidget = new ServerWidget(domain, port, this); - ui->timeIntervalIncedents->addItems({"За всё время", "За сегодня", "За вчера", "За последние 7 дней"}); - ui->timeIntervalJournal->addItems({"За всё время", "За сегодня", "За вчера", "За последние 7 дней"}); - ui->statusJournal->addItems({"Все статусы", "Отладка", "Информация", "Предупреждение", "Ошибка", "Экстренно"}); + connect(serverWidget, &ServerWidget::removeWidget, this, [this, serverWidget]() { + serverWidget->deleteLater(); + }); + + ui->scrollAreaServersLayout->addWidget(serverWidget); + } + + connect(ui->tabWidget, &QTabWidget::currentChanged, this, [this](int index) { + if (index == 4) { + settings = sensorService->getSettings(); + } + }); + connect(ui->serverButtonSettings, &QPushButton::clicked, this, &MainWindow::onServerButtonSettings); + connect(ui->saveButtonSettings, &QPushButton::clicked, this, &MainWindow::onSaveButtonSettings); + connect(ui->cancelButtonSettings, &QPushButton::clicked, this, &MainWindow::onCancelButtonSettings); + connect(ui->importButtonSettings, &QPushButton::clicked, this, &MainWindow::onImportButtonSettings); + connect(ui->exportButtonSettings, &QPushButton::clicked, this, &MainWindow::onExportButtonSettings); +} + +void MainWindow::onServerButtonSettings() { + ServerWidget *serverWidget = new ServerWidget("", 0000, this); + + connect(serverWidget, &ServerWidget::removeWidget, this, [this, serverWidget]() { + serverWidget->deleteLater(); + }); + + ui->scrollAreaServersLayout->addWidget(serverWidget); +} + +void MainWindow::onSaveButtonSettings(){ + settings.serial = ui->serialLineEdit->text(); + settings.factory = ui->factoryLineEdit->text(); + settings.exhuyant = ui->exhuyantLineEdit->text(); + settings.fleet = ui->fleetLineEdit->text(); + settings.side = ui->sideLineEdit->text(); + settings.gosNumber = ui->gosNumberLineEdit->text(); + settings.factoryNumber = ui->factoryNumberLineEdit->text(); + settings.group = ui->groupLineEdit->text(); + settings.adres = ui->adresLineEdit->text(); + settings.userName = ui->userNameLineEdit->text(); + settings.userPassword = ui->userPasswordLineEdit->text(); + settings.argusSerial = ui->argusSerialLineEdit->text(); + settings.servers.clear(); + QList> updatedServers; + for (int i = 0; i < ui->scrollAreaServersLayout->count(); ++i) { + if (auto *serverWidget = qobject_cast(ui->scrollAreaServersLayout->itemAt(i)->widget())) { + if (!serverWidget->deleted) { + qDebug() << serverWidget->getDomain() << ' ' << serverWidget->deleted; + updatedServers.append(qMakePair(serverWidget->getDomain(), serverWidget->getPort())); + } + } + } + + settings.servers = updatedServers; + sensorService->updateSettings(settings); + onCancelButtonSettings(); +} + +void MainWindow::onCancelButtonSettings(){ + settings = sensorService->getSettings(); + ui->serialLineEdit->setText(settings.serial); + ui->factoryLineEdit->setText(settings.factory); + ui->exhuyantLineEdit->setText(settings.exhuyant); + ui->fleetLineEdit->setText(settings.fleet); + ui->sideLineEdit->setText(settings.side); + ui->gosNumberLineEdit->setText(settings.gosNumber); + ui->factoryNumberLineEdit->setText(settings.factoryNumber); + ui->groupLineEdit->setText(settings.group); + ui->adresLineEdit->setText(settings.adres); + ui->userNameLineEdit->setText(settings.userName); + ui->userPasswordLineEdit->setText(settings.userPassword); + ui->argusSerialLineEdit->setText(settings.argusSerial); + QLayoutItem *child; + while ((child = ui->scrollAreaServersLayout->takeAt(0)) != nullptr) { + if (child->widget()) { + child->widget()->deleteLater(); + } + } + for (const auto &server : settings.servers) { + QString domain = server.first; + int port = server.second.toInt(); + + ServerWidget *serverWidget = new ServerWidget(domain, port, this); + + connect(serverWidget, &ServerWidget::removeWidget, this, [this, serverWidget]() { + serverWidget->deleteLater(); + }); + + ui->scrollAreaServersLayout->addWidget(serverWidget); + } +} + +void MainWindow::onImportButtonSettings() { + QString filePath = QFileDialog::getOpenFileName( + this, + "Открыть файл настроек", + QDir::homePath(), + "JSON файлы (*.json);;Все файлы (*)" + ); + + if (filePath.isEmpty()) { + return; + } + + QFile file(filePath); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + QMessageBox::critical(this, "Ошибка", "Не удалось открыть файл настроек."); + return; + } + + QByteArray fileData = file.readAll(); + file.close(); + + QJsonParseError parseError; + QJsonDocument jsonDoc = QJsonDocument::fromJson(fileData, &parseError); + if (parseError.error != QJsonParseError::NoError) { + QMessageBox::critical(this, "Ошибка", "Файл содержит некорректный JSON: " + parseError.errorString()); + return; + } + + if (!jsonDoc.isObject()) { + QMessageBox::critical(this, "Ошибка", "Файл настроек должен содержать JSON-объект."); + return; + } + + QJsonObject settingsJson = jsonDoc.object(); + + QJsonObject response = httpClient->post(utils::API_URL + "/settings/deviceSettings", settingsJson); + + if (response.isEmpty()) { + QMessageBox::critical(this, "Ошибка", "Не удалось отправить настройки на сервер."); + } else { + QMessageBox::information(this, "Успех", "Настройки успешно импортированы."); + } + onCancelButtonSettings(); +} + +void MainWindow::onExportButtonSettings(){ + QJsonObject responseJson = httpClient->get(utils::API_URL + "/settings/deviceSettings"); + if (responseJson.isEmpty()) { + QMessageBox::warning(this, "Ошибка", "Не удалось получить настройки с сервера."); + return; + } + QString filePath = QFileDialog::getSaveFileName( + this, + "Сохранить файл настроек", + QDir::homePath() + "/settings.json", + "JSON файлы (*.json);;Все файлы (*)" + ); + + // Если путь не выбран, выходим + if (filePath.isEmpty()) { + return; + } + + // Конвертируем JSON в строку + QJsonDocument jsonDoc(responseJson); + QByteArray jsonData = jsonDoc.toJson(QJsonDocument::Indented); + + // Сохраняем JSON в файл + QFile file(filePath); + if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { + file.write(jsonData); + file.close(); + QMessageBox::information(this, "Успех", "Настройки успешно сохранены в файл."); + } else { + QMessageBox::critical(this, "Ошибка", "Не удалось сохранить настройки в файл."); + } +} + +void MainWindow::SetupStatisticTab() { + statisticType = 0; + + ui->startSelectStatistic->setDisplayFormat("dd/MM/yyyy HH:mm"); + ui->endSelectStatistic->setDisplayFormat("dd/MM/yyyy HH:mm"); + updateComboboxStatistic(); + + realTimeChartTimer = new QTimer(this); + statisticChart = new QCustomPlot(this); + statisticChart->setFixedSize(1210, 650); + statisticChart->addGraph(); + + QPen pen; + pen.setColor(QColor(19, 58, 97)); + pen.setWidth(2); + statisticChart->graph(0)->setPen(pen); + + QSharedPointer dateTimeTicker(new QCPAxisTickerDateTime); + dateTimeTicker->setDateTimeFormat("HH:mm:ss dd.MM.yyyy"); + statisticChart->xAxis->setTicker(dateTimeTicker); + + statisticChart->axisRect()->setupFullAxesBox(); + statisticChart->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); + + ui->chartNButtonsLayout->addWidget(statisticChart); + statisticChart->hide(); + + connect(realTimeChartTimer, &QTimer::timeout, this, &MainWindow::updateRealTimeChart); + + connect(ui->sensorSelectStatistic, QOverload::of(&QComboBox::currentIndexChanged), this, &MainWindow::onSensorSelectStatisticChanged); + connect(ui->realTimeButtonStatistic, &QPushButton::clicked, this, &MainWindow::onRealTimeStatisticClicked); + connect(ui->archiveButtonStatistic, &QPushButton::clicked, this, &MainWindow::onArchiveStatisticClicked); + connect(ui->showStatisticButton, &QPushButton::clicked, this, &MainWindow::onShowStatisticClicked); +} + +void MainWindow::ondialogClosedFromWidget(QString groupWithSensor, QDateTime start, QDateTime end) { + ui->tabWidget->setCurrentIndex(2); + ui->sensorSelectStatistic->setCurrentIndex(groupWithSensorToIndex[groupWithSensor]); + ui->startSelectStatistic->setDateTime(start); + ui->endSelectStatistic->setDateTime(end); + onArchiveStatisticClicked(); + onShowStatisticClicked(); +} + +void MainWindow::onSensorSelectStatisticChanged(int index) { + if(statisticType) { + onRealTimeStatisticClicked(); + } +} + +void MainWindow::updateRealTimeChart() { + if (!statisticChart) return; + qint64 endTime = QDateTime::currentSecsSinceEpoch(); + qint64 startTime = endTime - 5; + + PlotData newData = sensorService->getDeviceSensorData( + groupWithSensor[ui->sensorSelectStatistic->currentIndex()], startTime, endTime); + + if (!newData.X.isEmpty() && !newData.Y.isEmpty()) { + + for(size_t i = 0; i < newData.X.size(); ++i) { + statisticChart->graph(0)->addData(newData.X[i], newData.Y[i]); + } + + statisticChart->replot(); + } +} + +void MainWindow::onRealTimeStatisticClicked() { + statisticType = 1; + ui->startSelectStatistic->hide(); + ui->endSelectStatistic->hide(); + ui->showStatisticButton->hide(); + ui->label_16->hide(); + ui->label_14->hide(); + + if (statisticType) { + ui->realTimeButtonStatistic->setStyleSheet(R"( + QPushButton { + border-style: solid; + border-color: #d5cb7a; + border-width: 2px; + background-color: #d5cb7a; + color: #13385F; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + } + )"); + ui->archiveButtonStatistic->setStyleSheet(R"( + QPushButton { + border-style: solid; + border-color: #d5cb7a; + border-width: 2px; + color: #13385F; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + } + )"); + } + + + + ui->pseudoChart->hide(); + statisticChart->show(); + + + qint64 currentTime = QDateTime::currentSecsSinceEpoch(); + qint64 initialStartTime = 1; + + PlotData initialData = sensorService->getDeviceSensorData( + groupWithSensor[ui->sensorSelectStatistic->currentIndex()], initialStartTime, currentTime); + + if (!initialData.X.isEmpty() && !initialData.Y.isEmpty()) { + statisticChart->graph(0)->setData(initialData.X, initialData.Y); + + statisticChart->xAxis->setRange(initialData.X.last() - 600, initialData.X.last()); + statisticChart->yAxis->setRange(*std::min_element(initialData.Y.begin(), initialData.Y.end()) - 10, + *std::max_element(initialData.Y.begin(), initialData.Y.end()) + 10); + + statisticChart->replot(); + } + + realTimeChartTimer->start(5000); +} + +void MainWindow::onArchiveStatisticClicked() { + if (realTimeChartTimer && realTimeChartTimer->isActive()) { + realTimeChartTimer->stop(); + } + statisticType = 0; + statisticChart->hide(); + ui->pseudoChart->show(); + ui->startSelectStatistic->show(); + ui->endSelectStatistic->show(); + ui->showStatisticButton->show(); + ui->label_16->show(); + ui->label_14->show(); + if(!statisticType) { + ui->realTimeButtonStatistic->setStyleSheet(R"( + QPushButton { + border-style: solid; + border-color: #d5cb7a; + border-width: 2px; + color: #13385F; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + } + )"); + ui->archiveButtonStatistic->setStyleSheet(R"( + QPushButton { + border-style: solid; + border-color: #d5cb7a; + border-width: 2px; + background-color: #d5cb7a; + color: #13385F; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + } + )"); + } +} + +void MainWindow::onShowStatisticClicked() { + qDebug() << "1"; + ui->pseudoChart->hide(); + qDebug() << "2"; + if (!statisticChart) { + qDebug() << "statisticChart is nullptr!"; + return; + } + statisticChart->show(); + qDebug() << "3"; + + qint64 start = ui->startSelectStatistic->dateTime().toSecsSinceEpoch(); + if(!start) { + start = 1; + } + qint64 end = ui->endSelectStatistic->dateTime().toSecsSinceEpoch(); + if(!end) { + end = QDateTime::currentMSecsSinceEpoch(); + } + PlotData data = sensorService->getDeviceSensorData(groupWithSensor[ui->sensorSelectStatistic->currentIndex()], start, end); + + qDebug() << "3"; + statisticChart->graph(0)->setData(data.X, data.Y); + + statisticChart->yAxis->setRange(*std::min_element(data.Y.begin(), data.Y.end()) - 10, + *std::max_element(data.Y.begin(), data.Y.end()) + 10); + + + statisticChart->graph(0)->rescaleAxes(); + statisticChart->replot(); +} + +void MainWindow::updateComboboxStatistic() { + ui->sensorSelectStatistic->clear(); + groupWithSensor.clear(); + + sensorGroupTree tree = sensorService->getSensorGroupsTree(); + + QStringList groups = tree.groupToLocalGroup.keys(); + + std::sort(groups.begin(), groups.end(), [&tree](const QString &a, const QString &b) { + return tree.groupToLocalGroup[a] < tree.groupToLocalGroup[b]; + }); + + int index = 0; + for (const QString &group : groups) { + const QString &localizedGroupName = tree.groupToLocalGroup[group]; + + if (tree.groupToSensorWithLocal.contains(group)) { + const QMap &sensors = tree.groupToSensorWithLocal[group]; + + for (auto it = sensors.begin(); it != sensors.end(); ++it) { + const QString &sensorId = it.key(); + const QString &sensorName = it.value(); + + QString itemData = group + '/' + sensorId; + + groupWithSensorToIndex[itemData] = index; + groupWithSensor.append(itemData); + ui->sensorSelectStatistic->addItem(localizedGroupName + '/' + sensorName, QVariant::fromValue(itemData)); + index++; + } + } + } +} + + +void MainWindow::SetupJournalTab() { + loadSensorsTree(ui->treeJournal); + + connect(ui->searchJournal, + &QLineEdit::textChanged, + this, + &MainWindow::onSearchJournalTextChanged); + + ui->timeIntervalJournal->addItems( + {"За всё время", "За сегодня", "За вчера", "За последние 7 дней"}); + ui->statusJournal->addItems( + {"Все статусы", "Отладка", "Информация", "Предупреждение", "Ошибка", "Экстренно"}); ui->sortJournal->addItems({"По времени", "По критичности"}); + journalSettings = getJournalDataSettings(); - asr = new AlarmsService(httpClient, this); - int totalPages = asr->tmpA() / 12; - auto *paginationBarIncidents = new PaginationBar(totalPages, this); - QList arr = asr->tmpB(1, 12); - /* - for(int i = 0; i < 12; ++i) { - AlarmWidget *a = new AlarmWidget(arr[i].getSerial(), arr[i].getSensorGroup(), arr[i].getSensorId(), arr[i].getEndTime().left(10), arr[i].getEndTime().mid(11, 12), ui->scrollWidgetIncidents); - a->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - ui->scrollLayoutIncidents->addWidget(a); - } - ui->paginationBarIncedentsLayout->addStretch(); - ui->paginationBarIncedentsLayout->addWidget(paginationBarIncidents); - ui->paginationBarIncedentsLayout->addStretch(); - */ + int amount = journalService->getLogsAmount(journalSettings->groupsWithSensors, journalSettings->status, + journalSettings->start_time, journalSettings->end_time); - jsr = new JournalService(httpClient, this); - totalPages = jsr->tmpA() / 12; - auto *paginationBarJournal = new PaginationBar(totalPages, this); + paginationBarJournal = new PaginationBar((amount + 24 - 1)/ 24); ui->paginationBarJournalLayout->addStretch(); ui->paginationBarJournalLayout->addWidget(paginationBarJournal); ui->paginationBarJournalLayout->addStretch(); - /* - QList arrl = jsr->tmpB(1, 12); - for(int i = 0; i < 12; ++i) { - IncedentWidget *a = new IncedentWidget(arrl[i].getTime(), arrl[i].getMessage(), arrl[i].getSensorId(), arrl[i].getSensorGroup(), QString::number(arrl[i].getThreatLevel()), ui->scrollWidgetJournal); - a->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - ui->scrollLayoutJournal->addWidget(a); + + QList arr = journalService->getLogs(journalSettings->groupsWithSensors, journalSettings->status, + journalSettings->cmp, journalSettings->start_time, + journalSettings->end_time, 1, 24); + + for(int i = 0; i < arr.size(); ++i) { + LogWidget *logWidget = new LogWidget(translate, arr[i].getTime(), arr[i].getMessage(), + arr[i].getSensorId(), arr[i].getSensorGroup(), + arr[i].getThreatLevel(), ui->scrollWidgetJournal); + logWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + ui->scrollLayoutJournal->addWidget(logWidget); } - */ - connect(paginationBarIncidents, &PaginationBar::pageChanged, this, &MainWindow::onIncidentsPageChanged); - connect(paginationBarJournal, &PaginationBar::pageChanged, this, &MainWindow::onJournalPageChanged); + if (arr.size() < 24) { + QSpacerItem *spacer = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); + ui->scrollLayoutJournal->addSpacerItem(spacer); + } + + connect(ui->searchLogs, &QPushButton::clicked, this, &MainWindow::onSearchJournalClicked); + connect(ui->updateTreeButtonJournal, &QPushButton::clicked, this, &MainWindow::updateTreeClicked); + + connect(paginationBarJournal, + &PaginationBar::pageChanged, + this, + &MainWindow::onJournalPageChanged); } -void MainWindow::onIncidentsPageChanged(int page) { - // Удаляем все элементы из scrollLayoutIncidents - QLayoutItem* item; - while ((item = ui->scrollLayoutIncidents->takeAt(0)) != nullptr) { - if (QWidget* widget = item->widget()) { - widget->deleteLater(); // Удаляем виджет +void MainWindow::onJournalPageChanged(int page) +{ + while (QLayoutItem *item = ui->scrollLayoutJournal->takeAt(0)) { + if (QWidget *widget = item->widget()) { + widget->deleteLater(); } - delete item; // Удаляем сам item + delete item; } - // Загружаем данные для текущей страницы - int itemsPerPage = 12; - QList arr = asr->tmpB(page, 12); + QList arr = journalService->getLogs(journalSettings->groupsWithSensors, journalSettings->status, + journalSettings->cmp, journalSettings->start_time, + journalSettings->end_time, page, 24); + for(int i = 0; i < arr.size(); ++i) { + LogWidget *logWidget = new LogWidget(translate, arr[i].getTime(), arr[i].getMessage(), + arr[i].getSensorId(), arr[i].getSensorGroup(), + arr[i].getThreatLevel(), ui->scrollWidgetJournal); + logWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + ui->scrollLayoutJournal->addWidget(logWidget); + } + if (arr.size() < 24) { + QSpacerItem *spacer = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); + ui->scrollLayoutJournal->addSpacerItem(spacer); + } +} - // Добавляем новые элементы в scrollLayoutIncidents - for (int i = 0; i < arr.size(); ++i) { - AlarmWidget* a = new AlarmWidget( - arr[i].getSerial(), - arr[i].getSensorGroup(), - arr[i].getSensorId(), - arr[i].getEndTime().left(10), // Дата - arr[i].getEndTime().mid(11, 12), // Время - ui->scrollWidgetIncidents - ); +void MainWindow::onSearchJournalClicked() { + while (QLayoutItem *item = ui->scrollLayoutJournal->takeAt(0)) { + if (QWidget *widget = item->widget()) { + widget->deleteLater(); + } + delete item; + } + + journalSettings = getJournalDataSettings(); + + int amount = journalService->getLogsAmount(journalSettings->groupsWithSensors, journalSettings->status, + journalSettings->start_time, journalSettings->end_time); + paginationBarJournal->setTotalPages((amount + 24 - 1)/ 24); + + QList arr = journalService->getLogs(journalSettings->groupsWithSensors, journalSettings->status, + journalSettings->cmp, journalSettings->start_time, + journalSettings->end_time, 1, 24); + + for(int i = 0; i < arr.size(); ++i) { + LogWidget *logWidget = new LogWidget(translate, arr[i].getTime(), arr[i].getMessage(), + arr[i].getSensorId(), arr[i].getSensorGroup(), + arr[i].getThreatLevel(), ui->scrollWidgetJournal); + logWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + ui->scrollLayoutJournal->addWidget(logWidget); + } + if (arr.size() < 24) { + QSpacerItem *spacer = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); + ui->scrollLayoutJournal->addSpacerItem(spacer); + } +} + +JournalSettings* MainWindow::getJournalDataSettings() { + QString time = ui->timeIntervalJournal->currentText(); + + qint64 start_time, end_time; + QTimeZone systemTimeZone = QTimeZone::systemTimeZone(); + QTimeZone spbTimeZone("Europe/Moscow"); + + QDateTime now = QDateTime::currentDateTime(); + now.setTimeZone(systemTimeZone); + now = now.toTimeZone(spbTimeZone); + + if (time == "За всё время") { + start_time = 1; + end_time = now.toSecsSinceEpoch(); + } else if (time == "За сегодня") { + QDateTime startOfDay = now.date().startOfDay(); + start_time = startOfDay.toSecsSinceEpoch(); + end_time = now.toSecsSinceEpoch(); + } else if (time == "За вчера") { + QDateTime startOfYesterday = now.addDays(-1).date().startOfDay(); + QDateTime endOfYesterday = startOfYesterday.addDays(1).addSecs(-1); + start_time = startOfYesterday.toSecsSinceEpoch(); + end_time = endOfYesterday.toSecsSinceEpoch(); + } else if (time == "За последние 7 дней") { + QDateTime startOf7DaysAgo = now.addDays(-6).date().startOfDay(); + start_time = startOf7DaysAgo.toSecsSinceEpoch(); + end_time = now.toSecsSinceEpoch(); + } else { + start_time = 1; + end_time = now.toSecsSinceEpoch(); + } + + QString searchQuery = ui->searchJournal->text().trimmed(); + searchQuery = searchQuery.toLower(); + + QMap> sensorsMap; + + for (int i = 0; i < ui->treeJournal->topLevelItemCount(); ++i) { + QTreeWidgetItem *groupItem = ui->treeJournal->topLevelItem(i); + QString groupName = groupItem->data(0, Qt::UserRole).toString(); + + QList sensorIds; + for (int j = 0; j < groupItem->childCount(); ++j) { + QTreeWidgetItem *sensorItem = groupItem->child(j); + + if (sensorItem->checkState(0) == Qt::Checked) { + QString sensorId = sensorItem->data(0, Qt::UserRole).toString(); + if (searchQuery.isEmpty() || sensorId.toLower().contains(searchQuery)) { + sensorIds.append(sensorId); + } + } + } + + if (!sensorIds.isEmpty()) { + sensorsMap[groupName] = sensorIds; + } + } + + bool cmp = ui->sortJournal->currentText() == "По времени" ? 0 : 1; + + QList status; + QString statusText = ui->statusJournal->currentText(); + if (statusText == "Отладка"){ + status = {0}; + } else if (statusText == "Информация"){ + status = {1}; + } else if (statusText == "Предупреждение"){ + status = {2}; + } else if (statusText == "Ошибка"){ + status = {3}; + } else if (statusText == "Экстренно"){ + status = {4}; + } + + return new JournalSettings(sensorsMap, start_time, end_time, cmp, status); +} + +void MainWindow::onTreeJournalChanged(QTreeWidgetItem *item, int column) +{ + Q_UNUSED(column); +} + +void MainWindow::onSearchJournalTextChanged(const QString &text) +{ + Q_UNUSED(text); + if (text.isEmpty()) { + ui->searchJournal->setStyleSheet(R"( + QLineEdit { + width: 778px; + height: 60px; + border: 2px solid #DCD174; + font-family: Inter; + font-size: 26px; + font-weight: 400; + line-height: 31.47px; + text-align: left; + background: #00000000; + color: #a6a6a6; + } + + )"); + } else { + ui->searchJournal->setStyleSheet(R"( + QLineEdit { + width: 778px; + height: 60px; + border: 2px solid #DCD174; + font-family: Inter; + font-size: 26px; + font-weight: 400; + line-height: 31.47px; + text-align: left; + background: #00000000; + color: #13385F; + } + )"); + } +} + +void MainWindow::SetupIncidentTab() { + loadSensorsTree(ui->treeIncidents); + + connect(ui->treeIncidents, &QTreeWidget::itemChanged, this, &MainWindow::onTreeIncidentsChanged); + + connect(ui->searchIncedents, + &QLineEdit::textChanged, + this, + &MainWindow::onSearchIncedentsTextChanged); + + ui->timeIntervalIncedents->addItems( + {"За всё время", "За сегодня", "За вчера", "За последние 7 дней"}); + + settingsIncident = getIncidentDataSettings(); + int amount = alarmsService->getAlarmsAmount(settingsIncident->groupsWithSensors, settingsIncident->start_time, settingsIncident->end_time); + paginationBarIncident = new PaginationBar((amount + 24 - 1)/ 24, this); + QList arr = alarmsService->getAlarms(settingsIncident->groupsWithSensors, settingsIncident->start_time, + settingsIncident->end_time, 1, 24); + for(int i = 0; i < arr.size(); ++i) { + AlarmWidget *a = new AlarmWidget(translate, arr[i].getSensorId(), arr[i].getSensorGroup(), + arr[i].getStartTime().left(10), arr[i].getStartTime().mid(11, 15), + arr[i].getEndTime(), sensorService, ui->scrollWidgetIncidents); + connect(a, &AlarmWidget::dialogClosedFromWidget, this, &MainWindow::ondialogClosedFromWidget); a->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); ui->scrollLayoutIncidents->addWidget(a); } + if (arr.size() < 24) { + QSpacerItem *spacer = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); + ui->scrollLayoutIncidents->addSpacerItem(spacer); + } + ui->paginationBarIncedentsLayout->addStretch(); + ui->paginationBarIncedentsLayout->addWidget(paginationBarIncident); + ui->paginationBarIncedentsLayout->addStretch(); + + connect(ui->searchIncidents, &QPushButton::clicked, this, &MainWindow::onSearchIncidentsClicked); + connect(ui->updateTreeButtonIncident, &QPushButton::clicked, this, &MainWindow::updateTreeClicked); + + connect(paginationBarIncident, + &PaginationBar::pageChanged, + this, + &MainWindow::onIncidentsPageChanged); } -void MainWindow::onJournalPageChanged(int page) { - QLayoutItem* item; - while ((item = ui->scrollLayoutJournal->takeAt(0)) != nullptr) { - if (QWidget* widget = item->widget()) { - widget->deleteLater(); // Удаляем виджет +void MainWindow::onIncidentsPageChanged(int page) +{ + while (QLayoutItem *item = ui->scrollLayoutIncidents->takeAt(0)) { + if (QWidget *widget = item->widget()) { + widget->deleteLater(); } - delete item; // Удаляем сам item + delete item; } - // Загружаем данные для текущей страницы - int itemsPerPage = 12; - QList arrl = jsr->tmpB(page, 12); + QList arr = alarmsService->getAlarms(settingsIncident->groupsWithSensors, settingsIncident->start_time, + settingsIncident->end_time, page, 24); + for(int i = 0; i < arr.size(); ++i) { + AlarmWidget *alarmWidget = new AlarmWidget(translate, arr[i].getSensorId(), arr[i].getSensorGroup(), + arr[i].getStartTime().left(10), arr[i].getStartTime().mid(11, 15), + arr[i].getEndTime(), sensorService, ui->scrollWidgetIncidents); + alarmWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + ui->scrollLayoutIncidents->addWidget(alarmWidget); + } + if (arr.size() < 24) { + QSpacerItem *spacer = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); + ui->scrollLayoutIncidents->addSpacerItem(spacer); + } +} - // Добавляем новые элементы в scrollLayoutJournal - for (int i = 0; i < arrl.size(); ++i) { - IncedentWidget* a = new IncedentWidget( - arrl[i].getTime(), arrl[i].getMessage(), arrl[i].getSensorId(), arrl[i].getSensorGroup(), QString::number(arrl[i].getThreatLevel()), - ui->scrollWidgetIncidents - ); +void MainWindow::onSearchIncidentsClicked() { + while (QLayoutItem *item = ui->scrollLayoutIncidents->takeAt(0)) { + if (QWidget *widget = item->widget()) { + widget->deleteLater(); + } + delete item; + } + settingsIncident = getIncidentDataSettings(); + int amount = alarmsService->getAlarmsAmount(settingsIncident->groupsWithSensors, settingsIncident->start_time, settingsIncident->end_time); + paginationBarIncident->setTotalPages((amount + 24 - 1)/ 24); + QList arr = alarmsService->getAlarms(settingsIncident->groupsWithSensors, settingsIncident->start_time, + settingsIncident->end_time, 1, 24); + for(int i = 0; i < arr.size(); ++i) { + AlarmWidget *a = new AlarmWidget(translate, arr[i].getSensorId(), arr[i].getSensorGroup(), + arr[i].getStartTime().left(10), arr[i].getStartTime().mid(11, 15), + arr[i].getEndTime(), sensorService, ui->scrollWidgetIncidents); a->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - ui->scrollLayoutJournal->addWidget(a); + ui->scrollLayoutIncidents->addWidget(a); } - - -} - -void MainWindow::onTreeIncidentsChanged(QTreeWidgetItem *item, int column) { - Q_UNUSED(column); - - QMap> sensorsMap; - - if (item->parent() == nullptr) { - // Это группа, получаем её имя - QString groupName = item->text(0); - QList sensorIds; - - // Пройдем по дочерним элементам и добавим ID сенсоров - for (int i = 0; i < item->childCount(); ++i) { - QTreeWidgetItem *sensorItem = item->child(i); - if (sensorItem->checkState(0) == Qt::Checked) { - int sensorId = sensorItem->data(0, Qt::UserRole).toInt(); // Предполагаем, что ID сенсора сохранены в Qt::UserRole - sensorIds.append(sensorId); - } - } - - // Добавляем в карту - sensorsMap[groupName] = sensorIds; + if (arr.size() < 24) { + QSpacerItem *spacer = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); + ui->scrollLayoutIncidents->addSpacerItem(spacer); } } -void MainWindow::onTreeJournalChanged(QTreeWidgetItem *item, int column) { - Q_UNUSED(column); +AlarmSettings* MainWindow::getIncidentDataSettings() { + QString time = ui->timeIntervalIncedents->currentText(); + qint64 start_time, end_time; + QTimeZone systemTimeZone = QTimeZone::systemTimeZone(); + QTimeZone spbTimeZone("Europe/Moscow"); - if (item->parent() == nullptr) { - QString groupName = item->text(0); - QList sensorIds; + QDateTime now = QDateTime::currentDateTime(); + now.setTimeZone(systemTimeZone); + now = now.toTimeZone(spbTimeZone); - for (int i = 0; i < item->childCount(); ++i) { - QTreeWidgetItem *sensorItem = item->child(i); - if (sensorItem->checkState(0) == Qt::Checked) { - int sensorId = sensorItem->data(0, Qt::UserRole).toInt(); // Получаем ID сенсора - sensorIds.append(sensorId); - } - } - - } -} - -void MainWindow::onSearchJournalTextChanged(const QString &text) { - Q_UNUSED(text); - if (text.isEmpty()) { - ui->searchJournal->setStyleSheet(R"( - QLineEdit { - width: 778px; - height: 60px; - border: 2px solid #DCD174; - font-family: Inter; - font-size: 26px; - font-weight: 400; - line-height: 31.47px; - text-align: left; - background: #00000000; - color: #a6a6a6; - } - - )"); + if (time == "За всё время") { + start_time = 1; + end_time = now.toSecsSinceEpoch(); + } else if (time == "За сегодня") { + QDateTime startOfDay = now.date().startOfDay(); + start_time = startOfDay.toSecsSinceEpoch(); + end_time = now.toSecsSinceEpoch(); + } else if (time == "За вчера") { + QDateTime startOfYesterday = now.addDays(-1).date().startOfDay(); + QDateTime endOfYesterday = startOfYesterday.addDays(1).addSecs(-1); + start_time = startOfYesterday.toSecsSinceEpoch(); + end_time = endOfYesterday.toSecsSinceEpoch(); + } else if (time == "За последние 7 дней") { + QDateTime startOf7DaysAgo = now.addDays(-6).date().startOfDay(); + start_time = startOf7DaysAgo.toSecsSinceEpoch(); + end_time = now.toSecsSinceEpoch(); } else { - ui->searchJournal->setStyleSheet(R"( - QLineEdit { - width: 778px; - height: 60px; - border: 2px solid #DCD174; - font-family: Inter; - font-size: 26px; - font-weight: 400; - line-height: 31.47px; - text-align: left; - background: #00000000; - color: #13385F; - } - )"); + start_time = 1; + end_time = now.toSecsSinceEpoch(); } - //updateDisplayedWidgets(); + + QString searchQuery = ui->searchIncedents->text().trimmed(); + searchQuery = searchQuery.toLower(); + + QMap> sensorsMap; + + for (int i = 0; i < ui->treeIncidents->topLevelItemCount(); ++i) { + QTreeWidgetItem *groupItem = ui->treeIncidents->topLevelItem(i); + QString groupName = groupItem->data(0, Qt::UserRole).toString(); + + QList sensorIds; + for (int j = 0; j < groupItem->childCount(); ++j) { + QTreeWidgetItem *sensorItem = groupItem->child(j); + + if (sensorItem->checkState(0) == Qt::Checked) { + QString sensorId = sensorItem->data(0, Qt::UserRole).toString(); + if (searchQuery.isEmpty() || sensorId.toLower().contains(searchQuery)) { + sensorIds.append(sensorId); + } + } + } + + if (!sensorIds.isEmpty()) { + sensorsMap[groupName] = sensorIds; + } + } + + return new AlarmSettings(sensorsMap, start_time, end_time); } -void MainWindow::onSearchIncedentsTextChanged(const QString &text) { +void MainWindow::onTreeIncidentsChanged(QTreeWidgetItem *item, int column) +{ + Q_UNUSED(column); +} + +void MainWindow::onSearchIncedentsTextChanged(const QString &text) +{ Q_UNUSED(text); if (text.isEmpty()) { ui->searchIncedents->setStyleSheet(R"( @@ -251,58 +901,87 @@ void MainWindow::onSearchIncedentsTextChanged(const QString &text) { } )"); } - //updateDisplayedWidgets(); } -void MainWindow::loadSenorsTree(QTreeWidget* tree){ - tree->clear(); +void MainWindow::loadSensorsTree(QTreeWidget *treeWidget) +{ + if (!treeWidget) return; - QStringList groups = sensorService->getSensorGroups(); + QTreeWidget *bufferTree = new QTreeWidget(); + + sensorGroupTree tree = sensorService->getSensorGroupsTree(); + + QStringList groups = tree.groupToLocalGroup.keys(); + std::sort(groups.begin(), groups.end()); for (const QString &group : groups) { - QTreeWidgetItem *groupItem = new QTreeWidgetItem(tree); - groupItem->setText(0, group); + QTreeWidgetItem *groupItem = new QTreeWidgetItem(bufferTree); - QList sensors = sensorService->getSensors(group); + const QString &localizedGroupName = tree.groupToLocalGroup[group]; + groupItem->setText(0, localizedGroupName); + groupItem->setData(0, Qt::UserRole, group); - for (const Sensor &sensor : sensors) { - nameToId[sensor.name] = sensor.id; - QTreeWidgetItem *sensorItem = new QTreeWidgetItem(groupItem); - sensorItem->setText(0, sensor.name); - sensorItem->setCheckState(0, Qt::Checked); + if (tree.groupToSensorWithLocal.contains(group)) { + const QMap &sensors = tree.groupToSensorWithLocal[group]; + + for (auto it = sensors.begin(); it != sensors.end(); ++it) { + const QString &sensorId = it.key(); + const QString &sensorName = it.value(); + + nameToId[sensorName] = sensorId; + + QTreeWidgetItem *sensorItem = new QTreeWidgetItem(groupItem); + sensorItem->setText(0, sensorName); + sensorItem->setCheckState(0, Qt::Checked); + sensorItem->setData(0, Qt::UserRole, sensorId); + } } } + + treeWidget->clear(); + moveTopLevelItems(bufferTree, treeWidget); + + delete bufferTree; +} + + +void MainWindow::moveTopLevelItems(QTreeWidget *source, QTreeWidget *destination) +{ + while (source->topLevelItemCount() > 0) { + QTreeWidgetItem *item = source->takeTopLevelItem(0); + destination->addTopLevelItem(item); + } } -void MainWindow::SetupSensorTab() { +void MainWindow::SetupSensorTab() +{ QScrollArea *scrollArea = new QScrollArea(this); - scrollArea->setStyleSheet( - "QScrollArea {" - " background: transparent;" - "}" - "QScrollBar:vertical {" - " background: #ebebeb;" - " width: 10px;" - " border-radius: 5px;" - "}" - "QScrollBar::handle:vertical {" - " background: #6d6d6d;" - " border-radius: 5px;" - " min-height: 20px;" - "}" - "QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {" - " border: none;" - " background: none;" - " color: none;" - "}" - "QScrollBar::sub-line:vertical, QScrollBar::add-line:vertical {" - " background: transparent;" - " border: none;" - "}" - "QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {" - " background: transparent;" - "}" - ); + scrollArea->setStyleSheet("QScrollArea {" + " background: transparent;" + " border: none;" + "}" + "QScrollBar:vertical {" + " background: #ebebeb;" + " width: 10px;" + " border-radius: 5px;" + "}" + "QScrollBar::handle:vertical {" + " background: #6d6d6d;" + " border-radius: 5px;" + " min-height: 20px;" + "}" + "QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {" + " border: none;" + " background: none;" + " color: none;" + "}" + "QScrollBar::sub-line:vertical, QScrollBar::add-line:vertical {" + " background: transparent;" + " border: none;" + "}" + "QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {" + " background: transparent;" + "}"); scrollArea->setWidgetResizable(true); scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); @@ -317,33 +996,60 @@ void MainWindow::SetupSensorTab() { connect(ui->search, &QLineEdit::textChanged, this, &MainWindow::onSearchTextChanged); ui->showHiddenSelect->addItems({"Да", "Нет"}); - connect(ui->groupSelect, QOverload::of(&QComboBox::currentIndexChanged), - this, &MainWindow::onGroupSelected); - connect(ui->showHiddenSelect, QOverload::of(&QComboBox::currentIndexChanged), - this, &MainWindow::onShowHiddenSelected); + connect(ui->groupSelect, + QOverload::of(&QComboBox::currentIndexChanged), + this, + &MainWindow::onGroupSelected); + connect(ui->showHiddenSelect, + QOverload::of(&QComboBox::currentIndexChanged), + this, + &MainWindow::onShowHiddenSelected); loadSensorGroups(); } -void MainWindow::startSensorTabRefreshTimer() { +void MainWindow::updateTreeClicked() +{ + QObject *senderObj = sender(); + if (!senderObj) return; + + if (senderObj == ui->updateTreeButtonJournal) { + ui->treeJournal->hide(); + loadSensorsTree(ui->treeJournal); + ui->treeJournal->show(); + } else if (senderObj == ui->updateTreeButtonIncident) { + ui->treeIncidents->hide(); + loadSensorsTree(ui->treeIncidents); + ui->treeIncidents->show(); + } +} + +//TODO: посмотреть что с таймером + +void MainWindow::startRefreshTimer() +{ QTimer *refreshTimer = new QTimer(this); connect(refreshTimer, &QTimer::timeout, this, [this]() { if (ui->tabWidget->currentWidget() == ui->sensorsTab) { updateDisplayedWidgets(); } + TranslateUpdate(); }); refreshTimer->start(5000); //5 sec } + +void MainWindow::TranslateUpdate() { + translate = sensorService->getTranslate(); +} + void MainWindow::showSensorDialog(SensorWidget *sensor) { SensorDialog *dialog = new SensorDialog(this, sensor, httpClient); dialog->setWindowModality(Qt::ApplicationModal); - this->setStyleSheet("QMainWindow { background-color: rgba(0, 0, 0, 1); }"); - connect(dialog, &SensorDialog::resultReady, this, &MainWindow::onSensorDialogFinished); dialog->exec(); @@ -351,8 +1057,6 @@ void MainWindow::showSensorDialog(SensorWidget *sensor) void MainWindow::onSensorDialogFinished(int result) { - this->setStyleSheet(""); - switch (result) { case SensorDialog::SaveSuccess: updateDisplayedWidgets(); @@ -371,24 +1075,30 @@ void MainWindow::onSensorDialogFinished(int result) } } -void MainWindow::loadSensorGroups() { - QStringList groups = sensorService->getSensorGroups(); +void MainWindow::loadSensorGroups() +{ + QMap groupsMap = sensorService->getLocalizedSensorGroups(); - if (groups.isEmpty()) { + if (groupsMap.isEmpty()) { QTimer::singleShot(5000, this, &MainWindow::loadSensorGroups); return; } - groups.sort(Qt::CaseInsensitive); ui->groupSelect->clear(); - ui->groupSelect->addItems(groups); + for (auto it = groupsMap.begin(); it != groupsMap.end(); ++it) { + if(it.key() == "*SYSTEM") { + continue; + } + ui->groupSelect->addItem(it.key(), it.value()); + } - if (!groups.isEmpty()) { - loadSensors(groups.first()); + if (!groupsMap.isEmpty()) { + loadSensors(groupsMap[groupsMap.firstKey()]); } } -void MainWindow::loadSensors(const QString& group) { +void MainWindow::loadSensors(const QString &group) +{ QList sensors = sensorService->getSensors(group); const auto &existingWidgets = widgetContainer->findChildren(); @@ -398,8 +1108,11 @@ void MainWindow::loadSensors(const QString& group) { layout->clear(); - for (const Sensor& sensor : sensors) { - SensorWidget* s = new SensorWidget(nullptr, sensor); + for (const Sensor &sensor : sensors) { + if(sensor.id == "*NAME") { + continue; + } + SensorWidget *s = new SensorWidget(nullptr, sensor); layout->addWidget(s); connect(s, &SensorWidget::clicked, this, &MainWindow::showSensorDialog); @@ -410,7 +1123,7 @@ void MainWindow::loadSensors(const QString& group) { void MainWindow::updateDisplayedWidgets() { - QString selectedGroup = ui->groupSelect->currentText(); + QString selectedGroup = ui->groupSelect->currentData().toString(); QString showHidden = ui->showHiddenSelect->currentText(); QString searchText = ui->search->text(); @@ -418,7 +1131,7 @@ void MainWindow::updateDisplayedWidgets() QList sensors = sensorService->getSensors(selectedGroup); // Храним уже добавленные виджеты - QMap existingWidgets; + QMap existingWidgets; // Сохраняем существующие виджеты и их сенсоры для последующего обновления const auto &widgets = widgetContainer->findChildren(); @@ -426,16 +1139,20 @@ void MainWindow::updateDisplayedWidgets() existingWidgets[widget->getSensor().id] = widget; } - layout->clear(); // Очищаем layout, но не удаляем сами виджеты + layout->clear(); // Очищаем layout, но не удаляем сами виджеты // Проходим по новым датчикам и добавляем их в layout, если они ещё не добавлены - for (const Sensor& sensor : sensors) { - SensorWidget* widget = nullptr; + for (const Sensor &sensor : sensors) { + SensorWidget *widget = nullptr; + + if(sensor.id == "*NAME") { + continue; + } // Проверяем, существует ли виджет для данного сенсора if (existingWidgets.contains(sensor.id)) { widget = existingWidgets[sensor.id]; - widget->setSensor(sensor); // Обновляем данные существующего виджета + widget->setSensor(sensor); // Обновляем данные существующего виджета } else { widget = new SensorWidget(nullptr, sensor); connect(widget, &SensorWidget::clicked, this, &MainWindow::showSensorDialog); @@ -453,7 +1170,7 @@ void MainWindow::updateDisplayedWidgets() } } - widgetContainer->update(); // Обновляем виджеты в контейнере + widgetContainer->update(); // Обновляем виджеты в контейнере } void MainWindow::onGroupSelected(int index) diff --git a/mainwindow.h b/mainwindow.h index 44e9ad0..bc6736b 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -1,18 +1,20 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H -#include "flowlayout.h" -#include "sensorwidget.h" -#include "sensorservice.h" -#include "httpclient.h" #include "alarmsservice.h" +#include "flowlayout.h" +#include "httpclient.h" #include "journalservice.h" +#include "sensorservice.h" +#include "sensorwidget.h" +#include "paginationbar.h" +#include "qcustomplot.h" #include -#include -#include -#include #include +#include +#include +#include #ifdef Q_OS_WIN #include @@ -40,6 +42,20 @@ class MainWindow : public QMainWindow private slots: void onIncidentsPageChanged(int page); void onJournalPageChanged(int page); + void onSearchIncidentsClicked(); + void onSearchJournalClicked(); + void updateTreeClicked(); + void onRealTimeStatisticClicked(); + void onArchiveStatisticClicked(); + void onShowStatisticClicked(); + void updateRealTimeChart(); + void onSensorSelectStatisticChanged(int index); + void ondialogClosedFromWidget(QString groupWithSensor, QDateTime start, QDateTime end); + void onSaveButtonSettings(); + void onCancelButtonSettings(); + void onImportButtonSettings(); + void onExportButtonSettings(); + void onServerButtonSettings(); public: MainWindow(QWidget *parent = nullptr); @@ -53,14 +69,30 @@ private: JournalService *jsr; HttpClient *httpClient; QWidget *widgetContainer; + PaginationBar *paginationBarIncident; + PaginationBar *paginationBarJournal; FlowLayout *layout; SensorService *sensorService; + JournalService *journalService; + AlarmsService *alarmsService; QMap nameToId; - + AlarmSettings *settingsIncident; + JournalSettings *journalSettings; + bool statisticType; + QMap groupWithSensorToIndex; + QList groupWithSensor; + QTimer *realTimeChartTimer; + QCustomPlot *statisticChart; + QMap>> translate; + Settings settings; private: //COMMON------------------------------------------------------ - void loadSenorsTree(QTreeWidget* tree); + void loadSensorsTree(QTreeWidget *treeWidget); + void moveTopLevelItems(QTreeWidget *source, QTreeWidget *destination); + void startTranslateUpdateTimer(); + void TranslateUpdate(); + void startRefreshTimer(); //------------------------------------------------------------ //SENSOR------------------------------------------------------ @@ -68,7 +100,7 @@ private: void showSensorDialog(SensorWidget *sensor); void onSensorDialogFinished(int result); //api requests - void loadSensors(const QString& group); + void loadSensors(const QString &group); void loadSensorGroups(); //update widgets void updateDisplayedWidgets(); @@ -76,7 +108,6 @@ private: void onGroupSelected(int index); void onShowHiddenSelected(int index); //utility - void startSensorTabRefreshTimer(); void SetupSensorTab(); //------------------------------------------------------------ @@ -84,13 +115,26 @@ private: //update widgets void onSearchIncedentsTextChanged(const QString &text); void onTreeIncidentsChanged(QTreeWidgetItem *item, int column); + void onTimeIntervalChanged(const QString &selectedInterval); + AlarmSettings* getIncidentDataSettings(); + //utility + void SetupIncidentTab(); //------------------------------------------------------------ //JOURNAL----------------------------------------------------- //update widgets void onSearchJournalTextChanged(const QString &text); void onTreeJournalChanged(QTreeWidgetItem *item, int column); + JournalSettings* getJournalDataSettings(); + //utility + void SetupJournalTab(); //------------------------------------------------------------ + //Statistic--------------------------------------------------- + //update widgets + void updateComboboxStatistic(); + //utility + void SetupStatisticTab(); + //------------------------------------------------------------ }; #endif // MAINWINDOW_H diff --git a/mainwindow.ui b/mainwindow.ui index d584f2f..1f6c555 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -6,8 +6,8 @@ 0 0 - 1632 - 896 + 1580 + 750 @@ -18,7 +18,7 @@ - 1400 + 1580 750 @@ -99,7 +99,6 @@ QTabBar::tab{ border: 1px solid #dcd174; padding: 18px 0px; color: white; - font-family: Inter; font-family: Inter; font-size: 36px; font-weight: 500; @@ -117,7 +116,7 @@ QTabBar::tab:selected { - 0 + 4 @@ -520,7 +519,7 @@ color: #a6a6a6; - 0 + 10 25 @@ -535,10 +534,16 @@ color: #a6a6a6; - 0 + 488 60 + + + 488 + 16777215 + + width: 488px; height: 36px; @@ -556,6 +561,123 @@ color: #13385F; + + + + + 200 + 35 + + + + + 200 + 35 + + + + QPushButton { + border-style: outset; + border-radius: 5px; + border-color: #13385F; + border-width: 1px; + background-color: #13385F; + color: white; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; +} + +QPushButton:hover { + background-color: #1A4A73; + border-color: #1A4A73; +} + +QPushButton:pressed { + background-color: #102E47; + border-color: #102E47; +} + + + Обновить дерево + + + + + + + Qt::Orientation::Horizontal + + + QSizePolicy::Policy::Fixed + + + + 68 + 20 + + + + + + + + + 200 + 35 + + + + + 200 + 35 + + + + QPushButton { + border-style: outset; + border-radius: 5px; + border-color: #13385F; + border-width: 1px; + background-color: #13385F; + color: white; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; +} + +QPushButton:hover { + background-color: #1A4A73; + border-color: #1A4A73; +} + +QPushButton:pressed { + background-color: #102E47; + border-color: #102E47; +} + + + Поиск + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + @@ -750,11 +872,13 @@ color: #a6a6a6; } QTreeView::branch:has-children:!has-siblings:closed, QTreeView::branch:closed:has-children:has-siblings { - border-image: url(:/png/res/png/branch-more.png); + border-image: none; + image: url(:/png/res/png/close.png); } QTreeView::branch:open:has-children:!has-siblings, QTreeView::branch:open:has-children:has-siblings { - border-image: url(:/png/res/png/branch-more.png); + border-image: none; + image: url(:/png/res/png/open.png); } QHeaderView { @@ -762,10 +886,10 @@ QHeaderView { max-height: 0px; } - QTreeWidget { + QTreeView { background: transparent; border: none; - font-family: 'Inter'; + font-family: Inter; font-size: 16px; font-weight: 500; line-height: 19.36px; @@ -899,37 +1023,6 @@ QHeaderView { 0 - - - - - 100 - 30 - - - - - 230 - 27 - - - - width: 488px; -height: 36px; -background: transparent; -font-family: Inter; -font-size: 22px; -font-weight: 400; -line-height: 36.31px; -text-align: left; -color: #13385F; - - - - ТС - - - @@ -971,7 +1064,7 @@ color: #13385F; - 250 + 350 27 @@ -1023,6 +1116,22 @@ color: #13385F; + + + + Qt::Orientation::Horizontal + + + QSizePolicy::Policy::Fixed + + + + 5 + 20 + + + + @@ -1093,6 +1202,7 @@ color: #13385F; QScrollArea#scrollAreaIncidents { background: transparent; + border: none; } QScrollBar:vertical { @@ -1129,8 +1239,8 @@ QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { 0 0 - 1284 - 514 + 1232 + 369 @@ -1209,7 +1319,431 @@ QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { Статистика - + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 20 + + + 30 + + + 25 + + + 15 + + + + + + 113 + 35 + + + + + 113 + 35 + + + + width: 488px; +height: 36px; +background: transparent; +font-family: Inter; +font-size: 30px; +font-weight: 400; +line-height: 36.31px; +text-align: left; +color: #13385F; + + + + Датчик: + + + + + + + + 579 + 50 + + + + + 579 + 50 + + + + QComboBox::drop-down { + border: 0px; +} + +QComboBox::down-arrow { + image: url(:/visual/res/svg/chevron-down.png); +} + +QComboBox { + border: 2px solid #DCD174; + background: transparent; + color: #13385F; + font-family: Inter; + font-size: 24px; + font-weight: 400; +} + +QComboBox QAbstractItemView { + border: 2px solid #DCD174; + background: white; + selection-color: red; + selection-background-color: blue; + outline: 0px;; +} + +QComboBox QAbstractItemView::item { + font-family: Inter; + font-size: 50px; + font-weight: 400; + text-align: left; + padding: 5px; + color: #13385F; + outline: 0px;; +} + +QComboBox QAbstractItemView::item:hover { + background-color: #13385F; + selection-color: white; + outline: 0px;; +} + + + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + 30 + + + 25 + + + + + 10 + + + + + 0 + + + + + + 300 + 0 + + + + + 300 + 16777215 + + + + QPushButton { + border-style: solid; + border-color: #d5cb7a; + border-width: 2px; + color: #13385F; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; +} + + + В реальном времени + + + + + + + + 300 + 0 + + + + + 300 + 16777215 + + + + QPushButton { + border-style: solid; + border-color: #d5cb7a; + border-width: 2px; + background-color: #d5cb7a; + color: #13385F; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; +} + + + Из архива + + + + + + + + + + + background: transparent; +font-family: Inter; +font-size: 24px; +font-weight: 400; +line-height: 29.05px; +text-align: left; +color: #13385F; + + + + Начало промежутка: + + + + + + + + 600 + 60 + + + + + 600 + 60 + + + + QDateTimeEdit { + border: 2px solid #d5cb7a; + border-radius: 5px; + font-family: Inter; + color: #a6a6a6; + font-size: 26px; + font-weight: 400; + line-height: 31.47px; + text-align: center; +} + +QDateTimeEdit::drop-down { + border: none; + width: 0px; +} + +QDateTimeEdit::up-button, QDateTimeEdit::down-button { + border: none; + width: 0px; + height: 0px; +} + + + + + + + + + + + background: transparent; +font-family: Inter; +font-size: 24px; +font-weight: 400; +line-height: 29.05px; +text-align: left; +color: #13385F; + + + + Конец промежутка: + + + + + + + + 600 + 60 + + + + + 600 + 60 + + + + QDateTimeEdit { + border: 2px solid #d5cb7a; + border-radius: 5px; + font-family: Inter; + color: #a6a6a6; + font-size: 26px; + font-weight: 400; + line-height: 31.47px; + text-align: center; +} + +QDateTimeEdit::drop-down { + border: none; + width: 0px; +} + +QDateTimeEdit::up-button, QDateTimeEdit::down-button { + border: none; + width: 0px; + height: 0px; +} + + + + + + + + + 10 + + + + + + 600 + 50 + + + + + 600 + 50 + + + + QPushButton { + border-style: outset; + border-radius: 5px; + border-color: #13385F; + border-width: 1px; + background-color: #13385F; + color: white; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; +} + +QPushButton:hover { + background-color: #1A4A73; + border-color: #1A4A73; +} + +QPushButton:pressed { + background-color: #102E47; + border-color: #102E47; +} + + + Отобразить данные + + + + + + + + + Qt::Orientation::Vertical + + + + 20 + 40 + + + + + + + + + + + 0 + 0 + + + + + + + @@ -1374,6 +1908,110 @@ color: #13385F; + + + + + 200 + 35 + + + + + 200 + 35 + + + + QPushButton { + border-style: outset; + border-radius: 5px; + border-color: #13385F; + border-width: 1px; + background-color: #13385F; + color: white; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; +} + +QPushButton:hover { + background-color: #1A4A73; + border-color: #1A4A73; +} + +QPushButton:pressed { + background-color: #102E47; + border-color: #102E47; +} + + + Обновить дерево + + + + + + + Qt::Orientation::Horizontal + + + QSizePolicy::Policy::Fixed + + + + 58 + 20 + + + + + + + + + 200 + 35 + + + + + 200 + 35 + + + + QPushButton { + border-style: outset; + border-radius: 5px; + border-color: #13385F; + border-width: 1px; + background-color: #13385F; + color: white; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; +} + +QPushButton:hover { + background-color: #1A4A73; + border-color: #1A4A73; +} + +QPushButton:pressed { + background-color: #102E47; + border-color: #102E47; +} + + + Поиск + + + @@ -1733,11 +2371,13 @@ color: #a6a6a6; } QTreeView::branch:has-children:!has-siblings:closed, QTreeView::branch:closed:has-children:has-siblings { - border-image: url(:/png/res/png/branch-more.png); + border-image: none; + image: url(:/png/res/png/close.png); } QTreeView::branch:open:has-children:!has-siblings, QTreeView::branch:open:has-children:has-siblings { - border-image: url(:/png/res/png/branch-more.png); + border-image: none; + image: url(:/png/res/png/open.png); } QHeaderView { @@ -1745,10 +2385,10 @@ QHeaderView { max-height: 0px; } - QTreeWidget { + QTreeView { background: transparent; border: none; - font-family: 'Inter'; + font-family: Inter; font-size: 16px; font-weight: 500; line-height: 19.36px; @@ -1979,7 +2619,7 @@ color: #13385F; - 100 + 150 27 @@ -2010,7 +2650,7 @@ color: #13385F; - 100 + 150 27 @@ -2045,6 +2685,7 @@ color: #13385F; QScrollArea#scrollAreaJournal { background: transparent; + border: none; } QScrollBar:vertical { @@ -2081,8 +2722,8 @@ QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { 0 0 - 1290 - 520 + 1238 + 375 @@ -2146,7 +2787,1449 @@ QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { Настройки - + + + 0 + + + 25 + + + 30 + + + 0 + + + 0 + + + + + + 600 + 40 + + + + + 600 + 40 + + + + QPushButton { + border-style: outset; + border-radius: 5px; + border-color: #13385F; + border-width: 1px; + color: #13385F; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; +} + +QPushButton:hover { + background-color: #e0f2f7; + border-color: #1A4A73; + color: #1A4A73; +} + +QPushButton:pressed { + background-color: #102E47; + border-color: #102E47; + color: white; +} + + + Добавить сервер + + + + + + + + 0 + 0 + + + + + 600 + 80 + + + + + 600 + 16777215 + + + + + + + QScrollArea#scrollAreaServers { + background: transparent; + border: none; +} + +QScrollBar:vertical { + background: #ebebeb; width: 10px; border-radius: 5px; +} + +QScrollBar::handle:vertical { + background: #6d6d6d; + border-radius: 5px; + min-height: 20px; +} + +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { + border: none; + background: none; + color: none; +} + +QScrollBar::sub-line:vertical, QScrollBar::add-line:vertical { + background: transparent; + border: none; +} + +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + background: transparent; +} + + + + true + + + + + 0 + 0 + 582 + 62 + + + + background: transparent; + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + + + + 1250 + 0 + + + + + 922 + 16777215 + + + + Qt::Orientation::Horizontal + + + + + + + 50 + + + + + + 600 + 40 + + + + + 520 + 40 + + + + width: 488px; +height: 36px; +background: transparent; +font-family: Inter; +font-size: 30px; +font-weight: 400; +line-height: 36.31px; +text-align: left; +color: #13385F; + + + + Серверы + + + + + + + + 0 + 40 + + + + + 520 + 40 + + + + + 520 + 40 + + + + width: 488px; +height: 36px; +background: transparent; +font-family: Inter; +font-size: 30px; +font-weight: 400; +line-height: 36.31px; +text-align: left; +color: #13385F; + + + + Аргус + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + 10 + + + 10 + + + + + + 200 + 0 + + + + + 200 + 16777215 + + + + background: transparent; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 29.05px; +text-align: left; +color: #13385F; + + + + Серийный номер + + + + + + + + 394 + 0 + + + + + 394 + 16777215 + + + + border: 2px solid #DCD174; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 31.47px; +text-align: left; +background: #00000000; +color: #13385F; + + + + + + + + Qt::Orientation::Horizontal + + + QSizePolicy::Policy::Fixed + + + + 38 + 20 + + + + + + + + + 200 + 0 + + + + + 200 + 16777215 + + + + background: transparent; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 29.05px; +text-align: left; +color: #13385F; + + + + Адрес сервера + + + + + + + + 394 + 0 + + + + + 394 + 16777215 + + + + border: 2px solid #DCD174; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 31.47px; +text-align: left; +background: #00000000; +color: #13385F; + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + 10 + + + + + + 200 + 0 + + + + + 200 + 16777215 + + + + background: transparent; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 29.05px; +text-align: left; +color: #13385F; + + + + Завод изготовитель + + + + + + + + 394 + 0 + + + + + 394 + 16777215 + + + + border: 2px solid #DCD174; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 31.47px; +text-align: left; +background: #00000000; +color: #13385F; + + + + + + + + Qt::Orientation::Horizontal + + + QSizePolicy::Policy::Fixed + + + + 38 + 20 + + + + + + + + + 200 + 0 + + + + + 200 + 16777215 + + + + background: transparent; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 29.05px; +text-align: left; +color: #13385F; + + + + Имя пользователя + + + + + + + + 394 + 0 + + + + + 394 + 16777215 + + + + border: 2px solid #DCD174; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 31.47px; +text-align: left; +background: #00000000; +color: #13385F; + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + 10 + + + + + + 200 + 0 + + + + + 200 + 16777215 + + + + background: transparent; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 29.05px; +text-align: left; +color: #13385F; + + + + Эксплуатант + + + + + + + + 394 + 0 + + + + + 394 + 16777215 + + + + border: 2px solid #DCD174; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 31.47px; +text-align: left; +background: #00000000; +color: #13385F; + + + + + + + + Qt::Orientation::Horizontal + + + QSizePolicy::Policy::Fixed + + + + 38 + 20 + + + + + + + + + 200 + 0 + + + + + 200 + 16777215 + + + + background: transparent; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 29.05px; +text-align: left; +color: #13385F; + + + + Пароль пользователя + + + + + + + + 394 + 0 + + + + + 394 + 16777215 + + + + border: 2px solid #DCD174; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 31.47px; +text-align: left; +background: #00000000; +color: #13385F; + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + 10 + + + + + + 200 + 0 + + + + + 200 + 16777215 + + + + background: transparent; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 29.05px; +text-align: left; +color: #13385F; + + + + Транспортный парк + + + + + + + + 394 + 0 + + + + + 394 + 16777215 + + + + border: 2px solid #DCD174; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 31.47px; +text-align: left; +background: #00000000; +color: #13385F; + + + + + + + + Qt::Orientation::Horizontal + + + QSizePolicy::Policy::Fixed + + + + 38 + 20 + + + + + + + + + 200 + 0 + + + + + 200 + 16777215 + + + + background: transparent; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 29.05px; +text-align: left; +color: #13385F; + + + + Серийный номер + + + + + + + + 394 + 0 + + + + + 394 + 16777215 + + + + border: 2px solid #DCD174; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 31.47px; +text-align: left; +background: #00000000; +color: #13385F; + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + 10 + + + + + + 200 + 0 + + + + + 200 + 16777215 + + + + background: transparent; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 29.05px; +text-align: left; +color: #13385F; + + + + Бортовой номер + + + + + + + + 394 + 0 + + + + + 394 + 16777215 + + + + border: 2px solid #DCD174; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 31.47px; +text-align: left; +background: #00000000; +color: #13385F; + + + + + + + + Qt::Orientation::Horizontal + + + QSizePolicy::Policy::Fixed + + + + 38 + 20 + + + + + + + + width: 488px; +height: 36px; +background: transparent; +font-family: Inter; +font-size: 30px; +font-weight: 400; +line-height: 36.31px; +text-align: left; +color: #13385F; + + + + Конфигурация + + + + + + + Qt::Orientation::Horizontal + + + QSizePolicy::Policy::Fixed + + + + 3 + 20 + + + + + + + + + 235 + 40 + + + + + 235 + 40 + + + + QPushButton { + border-style: outset; + border-radius: 5px; + border-color: #13385F; + border-width: 1px; + color: #13385F; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; +} + +QPushButton:hover { + background-color: #e0f2f7; + border-color: #1A4A73; + color: #1A4A73; +} + +QPushButton:pressed { + background-color: #102E47; + border-color: #102E47; + color: white; +} + + + Экспорт + + + + + + + Qt::Orientation::Horizontal + + + QSizePolicy::Policy::Fixed + + + + 3 + 0 + + + + + + + + + 235 + 40 + + + + + 235 + 40 + + + + QPushButton { + border-style: outset; + border-radius: 5px; + border-color: #13385F; + border-width: 1px; + background-color: #13385F; + color: white; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; +} + +QPushButton:hover { + background-color: #1A4A73; + border-color: #1A4A73; +} + +QPushButton:pressed { + background-color: #102E47; + border-color: #102E47; +} + + + Импорт + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + 10 + + + + + + 200 + 0 + + + + + 200 + 16777215 + + + + background: transparent; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 29.05px; +text-align: left; +color: #13385F; + + + + Гос.номер + + + + + + + + 394 + 0 + + + + + 394 + 16777215 + + + + border: 2px solid #DCD174; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 31.47px; +text-align: left; +background: #00000000; +color: #13385F; + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + 10 + + + + + + 200 + 0 + + + + + 200 + 16777215 + + + + background: transparent; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 29.05px; +text-align: left; +color: #13385F; + + + + Заводской номер + + + + + + + + 394 + 0 + + + + + 394 + 16777215 + + + + border: 2px solid #DCD174; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 31.47px; +text-align: left; +background: #00000000; +color: #13385F; + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + 10 + + + + + + 200 + 0 + + + + + 200 + 16777215 + + + + background: transparent; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 29.05px; +text-align: left; +color: #13385F; + + + + Группа + + + + + + + + 394 + 0 + + + + + 394 + 16777215 + + + + border: 2px solid #DCD174; +font-family: Inter; +font-size: 20px; +font-weight: 400; +line-height: 31.47px; +text-align: left; +background: #00000000; +color: #13385F; + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + 15 + + + 10 + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + 235 + 40 + + + + QPushButton { + border-style: outset; + border-radius: 5px; + border-color: #13385F; + border-width: 1px; + color: #13385F; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; +} + +QPushButton:hover { + background-color: #e0f2f7; + border-color: #1A4A73; + color: #1A4A73; +} + +QPushButton:pressed { + background-color: #102E47; + border-color: #102E47; + color: white; +} + + + Отмена + + + + + + + + 235 + 40 + + + + QPushButton { + border-style: outset; + border-radius: 5px; + border-color: #13385F; + border-width: 1px; + background-color: #13385F; + color: white; + font-family: Inter; + font-size: 22px; + font-weight: 500; + line-height: 26.63px; + text-align: center; +} + +QPushButton:hover { + background-color: #1A4A73; + border-color: #1A4A73; +} + +QPushButton:pressed { + background-color: #102E47; + border-color: #102E47; +} + + + Сохранить + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Orientation::Vertical + + + + 20 + 40 + + + + + diff --git a/map.qml b/map.qml new file mode 100644 index 0000000..356006a --- /dev/null +++ b/map.qml @@ -0,0 +1,88 @@ +import QtQuick 2.15 +import QtLocation 5.15 +import QtPositioning 5.15 + +Item { + anchors.fill: parent + + Map { + id: map + anchors.fill: parent + plugin: Plugin { + name: "osm" + PluginParameter { + name: "osm.mapping.custom.host" + value: "https://tile.openstreetmap.org/" + } + PluginParameter { + name: "osm.mapping.providersrepository.disabled" + value: "true" + } + } + center: QtPositioning.coordinate(mapCenter.latitude, mapCenter.longitude) + zoomLevel: 15 + Repeater { + model: pointsList + MapQuickItem { + id: point + coordinate: modelData + anchorPoint.x: 10 + anchorPoint.y: 10 + + sourceItem: Rectangle { + width: 20 + height: 20 + color: "red" + radius: 10 + } + } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + drag.target: map + + property real startLat: map.center.latitude + property real startLon: map.center.longitude + property real startX: 0 + property real startY: 0 + + property real zoomFactor: Math.pow(2, map.zoomLevel - 15) + + cursorShape: Qt.ArrowCursor + + onPressed: { + startLat = map.center.latitude + startLon = map.center.longitude + startX = mouseArea.mouseX + startY = mouseArea.mouseY + } + + onPositionChanged: { + var dx = mouseArea.mouseX - startX + var dy = mouseArea.mouseY - startY + + var factor = Math.pow(2, 15 - map.zoomLevel) * 0.00005; + + map.center = QtPositioning.coordinate( + startLat - dy * -factor, + startLon + dx * -factor + ) + } + + onWheel: { + if (wheel.angleDelta.y < 0) { + map.zoomLevel -= 1 + } else { + map.zoomLevel += 1 + } + map.zoomLevel = Math.max(1, Math.min(map.zoomLevel, 18)); + } + + onContainsMouseChanged: { + cursorShape = mouseArea.containsMouse ? Qt.ClosedHandCursor : Qt.ArrowCursor + } + } + } +} diff --git a/paginationbar.cpp b/paginationbar.cpp index eca693c..c48eced 100644 --- a/paginationbar.cpp +++ b/paginationbar.cpp @@ -1,10 +1,13 @@ #include "PaginationBar.h" -#include -#include #include +#include +#include PaginationBar::PaginationBar(int totalPages, QWidget *parent) - : QWidget(parent), totalPages(totalPages), currentPage(1) { + : QWidget(parent) + , totalPages(totalPages) + , currentPage(1) +{ layout = new QHBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(5); @@ -50,13 +53,15 @@ PaginationBar::PaginationBar(int totalPages, QWidget *parent) updateButtons(); } -void PaginationBar::onPageButtonClicked(int page) { +void PaginationBar::onPageButtonClicked(int page) +{ currentPage = page; emit pageChanged(currentPage); updateButtons(); } -void PaginationBar::goToPreviousPage() { +void PaginationBar::goToPreviousPage() +{ if (currentPage > 1) { currentPage--; emit pageChanged(currentPage); @@ -64,7 +69,8 @@ void PaginationBar::goToPreviousPage() { } } -void PaginationBar::goToNextPage() { +void PaginationBar::goToNextPage() +{ if (currentPage < totalPages) { currentPage++; emit pageChanged(currentPage); @@ -72,7 +78,8 @@ void PaginationBar::goToNextPage() { } } -void PaginationBar::onEllipsisClicked(QPushButton *ellipsisButton) { +void PaginationBar::onEllipsisClicked(QPushButton *ellipsisButton) +{ if (activeLineEdit) { layout->replaceWidget(activeLineEdit, previousEllipsisButton); activeLineEdit->deleteLater(); @@ -121,7 +128,8 @@ void PaginationBar::onEllipsisClicked(QPushButton *ellipsisButton) { }); } -void PaginationBar::updateButtons() { +void PaginationBar::updateButtons() +{ if (activeLineEdit) { for (auto *button : pageButtons) { if (!button->isVisible()) { @@ -146,24 +154,28 @@ void PaginationBar::updateButtons() { } } else { if (currentPage <= 4) { - for (int i = 1; i <= 5; ++i) addPageButton(i); + for (int i = 1; i <= 5; ++i) + addPageButton(i); addEllipsisButton(); addPageButton(totalPages); } else if (currentPage >= totalPages - 3) { addPageButton(1); addEllipsisButton(); - for (int i = totalPages - 4; i <= totalPages; ++i) addPageButton(i); + for (int i = totalPages - 4; i <= totalPages; ++i) + addPageButton(i); } else { addPageButton(1); addEllipsisButton(); - for (int i = currentPage - 1; i <= currentPage + 1; ++i) addPageButton(i); + for (int i = currentPage - 1; i <= currentPage + 1; ++i) + addPageButton(i); addEllipsisButton(); addPageButton(totalPages); } } } -void PaginationBar::addPageButton(int page) { +void PaginationBar::addPageButton(int page) +{ auto *button = new QPushButton(QString::number(page), this); button->setFixedSize(40, 40); if (page == currentPage) { @@ -193,7 +205,8 @@ void PaginationBar::addPageButton(int page) { layout->insertWidget(layout->count() - 1, button); } -void PaginationBar::addEllipsisButton() { +void PaginationBar::addEllipsisButton() +{ auto *button = new QPushButton("...", this); button->setFixedSize(40, 40); button->setStyleSheet(R"( @@ -207,3 +220,11 @@ void PaginationBar::addEllipsisButton() { pageButtons.append(button); layout->insertWidget(layout->count() - 1, button); } + +void PaginationBar::setTotalPages(int newTotalPages) +{ + totalPages = newTotalPages; + currentPage = 1; + updateButtons(); + //emit pageChanged(currentPage); +} diff --git a/paginationbar.h b/paginationbar.h index bf158cb..d88f84b 100644 --- a/paginationbar.h +++ b/paginationbar.h @@ -1,17 +1,21 @@ #ifndef PAGINATIONBAR_H #define PAGINATIONBAR_H -#include -#include -#include #include +#include +#include +#include -class PaginationBar : public QWidget { +class PaginationBar : public QWidget +{ Q_OBJECT public: explicit PaginationBar(int totalPages, QWidget *parent = nullptr); +public: + void setTotalPages(int newTotalPages); + signals: void pageChanged(int page); @@ -26,17 +30,17 @@ private: QPushButton *previousEllipsisButton = nullptr; private: - int totalPages; // Общее количество страниц - int currentPage; // Текущая страница + int totalPages; // Общее количество страниц + int currentPage; // Текущая страница - QPushButton *leftArrow; // Кнопка влево - QPushButton *rightArrow; // Кнопка вправо - QHBoxLayout *layout; // Макет для размещения кнопок + QPushButton *leftArrow; // Кнопка влево + QPushButton *rightArrow; // Кнопка вправо + QHBoxLayout *layout; // Макет для размещения кнопок QList pageButtons; // Список кнопок страниц - void updateButtons(); // Обновление кнопок в зависимости от состояния - void addPageButton(int page); // Добавить кнопку страницы - void addEllipsisButton(); // Добавить кнопку с троеточием + void updateButtons(); // Обновление кнопок в зависимости от состояния + void addPageButton(int page); // Добавить кнопку страницы + void addEllipsisButton(); // Добавить кнопку с троеточием }; #endif // PAGINATIONBAR_H diff --git a/plotservice.h b/plotservice.h new file mode 100644 index 0000000..a1b4563 --- /dev/null +++ b/plotservice.h @@ -0,0 +1,59 @@ +#ifndef PLOTSERVICE_H +#define PLOTSERVICE_H + +#include "HttpClient.h" +#include "utils.h" + +#include +#include +#include +#include +#include +#include +#include + + +class PlotService : public QObject +{ + Q_OBJECT + +public: + explicit PlotService(HttpClient *client, QObject *parent = nullptr) + : QObject(parent) + , httpClient(client) + {} + + int getDeviceSensorData(const QMap> &groupsWithSensors, + qint64 start, + qint64 end) + { + QJsonObject rootObj; + rootObj["start_time"] = start; + rootObj["end_time"] = end; + QJsonObject sensorsObj; + for (auto it = groupsWithSensors.constBegin(); it != groupsWithSensors.constEnd(); ++it) { + QJsonArray sensorArray; + for (QString sensorId : it.value()) { + sensorArray.append(sensorId); + } + sensorsObj[it.key()] = sensorArray; + } + rootObj["sensors"] = sensorsObj; + QJsonDocument doc(rootObj); + QByteArray requestData = doc.toJson(); + + QJsonObject responseJson = httpClient->post(utils::API_URL + "/alarms/getAlarmsAmount", + QJsonDocument::fromJson(requestData).object()); + + if (responseJson.contains("amount")) { + return responseJson["amount"].toInt(); + } + return 0; + } + + +private: + HttpClient *httpClient; +}; + +#endif // PLOTSERVICE_H diff --git a/res/png/close.png b/res/png/close.png new file mode 100644 index 0000000..8cfcd5f Binary files /dev/null and b/res/png/close.png differ diff --git a/res/png/delete.png b/res/png/delete.png new file mode 100644 index 0000000..0a5dad6 Binary files /dev/null and b/res/png/delete.png differ diff --git a/res/png/open.png b/res/png/open.png new file mode 100644 index 0000000..632a847 Binary files /dev/null and b/res/png/open.png differ diff --git a/res/qml/map.qml b/res/qml/map.qml new file mode 100644 index 0000000..356006a --- /dev/null +++ b/res/qml/map.qml @@ -0,0 +1,88 @@ +import QtQuick 2.15 +import QtLocation 5.15 +import QtPositioning 5.15 + +Item { + anchors.fill: parent + + Map { + id: map + anchors.fill: parent + plugin: Plugin { + name: "osm" + PluginParameter { + name: "osm.mapping.custom.host" + value: "https://tile.openstreetmap.org/" + } + PluginParameter { + name: "osm.mapping.providersrepository.disabled" + value: "true" + } + } + center: QtPositioning.coordinate(mapCenter.latitude, mapCenter.longitude) + zoomLevel: 15 + Repeater { + model: pointsList + MapQuickItem { + id: point + coordinate: modelData + anchorPoint.x: 10 + anchorPoint.y: 10 + + sourceItem: Rectangle { + width: 20 + height: 20 + color: "red" + radius: 10 + } + } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + drag.target: map + + property real startLat: map.center.latitude + property real startLon: map.center.longitude + property real startX: 0 + property real startY: 0 + + property real zoomFactor: Math.pow(2, map.zoomLevel - 15) + + cursorShape: Qt.ArrowCursor + + onPressed: { + startLat = map.center.latitude + startLon = map.center.longitude + startX = mouseArea.mouseX + startY = mouseArea.mouseY + } + + onPositionChanged: { + var dx = mouseArea.mouseX - startX + var dy = mouseArea.mouseY - startY + + var factor = Math.pow(2, 15 - map.zoomLevel) * 0.00005; + + map.center = QtPositioning.coordinate( + startLat - dy * -factor, + startLon + dx * -factor + ) + } + + onWheel: { + if (wheel.angleDelta.y < 0) { + map.zoomLevel -= 1 + } else { + map.zoomLevel += 1 + } + map.zoomLevel = Math.max(1, Math.min(map.zoomLevel, 18)); + } + + onContainsMouseChanged: { + cursorShape = mouseArea.containsMouse ? Qt.ClosedHandCursor : Qt.ArrowCursor + } + } + } +} diff --git a/resources.qrc b/resources.qrc index 82a9e9e..a4da4e1 100644 --- a/resources.qrc +++ b/resources.qrc @@ -13,5 +13,12 @@ res/png/arrowLeft.png res/png/arrowRight.png res/png/bell.png + res/png/close.png + res/png/open.png + res/png/delete.png + + + map.qml + res/qml/map.qml diff --git a/savesensorservice.h b/savesensorservice.h index 1334e0e..9c71e23 100644 --- a/savesensorservice.h +++ b/savesensorservice.h @@ -1,30 +1,34 @@ #ifndef SAVESENSORSERVICE_H #define SAVESENSORSERVICE_H -#include "utils.h" #include "getsensors_r.h" -#include "sensorlogs.h" #include "httpclient.h" +#include "sensorlogs.h" +#include "utils.h" -#include -#include -#include +#include +#include #include #include -#include +#include +#include +#include #include -#include class SaveSensorService : public QObject { Q_OBJECT public: - explicit SaveSensorService(HttpClient* client, QObject *parent = nullptr) - : QObject(parent), httpClient(client) {} + explicit SaveSensorService(HttpClient *client, QObject *parent = nullptr) + : QObject(parent) + , httpClient(client) + {} - bool saveSensorLog(const Sensor &sensor, const SensorLogs &newSensorLogs) { - QJsonObject responseSettingsJson = httpClient->get(utils::API_URL + "/settings/deviceSettings"); + bool saveSensorLog(const Sensor &sensor, const SensorLogs &newSensorLogs) + { + QJsonObject responseSettingsJson = httpClient->get(utils::API_URL + + "/settings/deviceSettings"); QJsonObject sensors = responseSettingsJson["SENSORS"].toObject(); @@ -63,14 +67,14 @@ public: responseSettingsJson["SENSORS"] = sensors; - QJsonObject putResponse = httpClient->post(utils::API_URL + "/settings/deviceSettings", responseSettingsJson); + QJsonObject putResponse = httpClient->post(utils::API_URL + "/settings/deviceSettings", + responseSettingsJson); return putResponse["message"] == "OK"; } - private: - HttpClient* httpClient; + HttpClient *httpClient; }; #endif // SAVESENSORSERVICE_H diff --git a/sensordialog.cpp b/sensordialog.cpp index c044e2b..4c15722 100644 --- a/sensordialog.cpp +++ b/sensordialog.cpp @@ -1,11 +1,11 @@ #include "sensordialog.h" #include "ui_sensordialog.h" -#include "sensorlogervice.h" #include "savesensorservice.h" +#include "sensorlogervice.h" -#include #include +#include #include @@ -15,7 +15,6 @@ SensorDialog::SensorDialog(QWidget *parent, SensorWidget *sensor, HttpClient *ht , sensorWidget(sensor) , _httpClient(httpClient) { - ui->setupUi(this); ui->isAlarm->addItems({"Да", "Нет"}); @@ -28,8 +27,6 @@ SensorDialog::SensorDialog(QWidget *parent, SensorWidget *sensor, HttpClient *ht ui->saveButton->setCursor(Qt::PointingHandCursor); ui->cancelButton->setCursor(Qt::PointingHandCursor); - - ui->nameHeader->setText(sensorWidget->getSensor().id); ui->name->setText(sensorWidget->getSensor().name); ui->unitName->setText(sensorWidget->getSensor().unitName); @@ -48,7 +45,6 @@ SensorDialog::SensorDialog(QWidget *parent, SensorWidget *sensor, HttpClient *ht ui->alarmSleepage->setText(QString::number(sensorLogs.getAlarmSleepage())); ui->logHugeError->setText(sensorLogs.getLogHugeError()); - connect(ui->cancelButton, &QPushButton::clicked, this, [this]() { isSavingSuccess = false; close(); @@ -68,51 +64,63 @@ SensorDialog::SensorDialog(QWidget *parent, SensorWidget *sensor, HttpClient *ht connect(ui->logHugeError, &QTextEdit::textChanged, this, &SensorDialog::onLogHugeErrorChanged); } -void SensorDialog::onIsAlarmChanged(const QString& value) { +void SensorDialog::onIsAlarmChanged(const QString &value) +{ sensorC.isAlarmEnabled = (value == "Да"); } -void SensorDialog::onIsBooledChanged(const QString& value) { +void SensorDialog::onIsBooledChanged(const QString &value) +{ sensorC.isBooled = (value == "Да"); } -void SensorDialog::onIsVisibleChanged(const QString& value) { +void SensorDialog::onIsVisibleChanged(const QString &value) +{ sensorC.isHide = (value == "Да"); } -void SensorDialog::onNameChanged(const QString& value) { +void SensorDialog::onNameChanged(const QString &value) +{ sensorC.name = value; } -void SensorDialog::onUnitNameChanged(const QString& value) { +void SensorDialog::onUnitNameChanged(const QString &value) +{ sensorC.unitName = value; } -void SensorDialog::onAlarmLowChanged(const QString& value) { +void SensorDialog::onAlarmLowChanged(const QString &value) +{ sensorC.alarmLowerBound = value.toDouble(); } -void SensorDialog::onAlarmUpChanged(const QString& value) { +void SensorDialog::onAlarmUpChanged(const QString &value) +{ sensorC.alarmUpperBound = value.toDouble(); } -void SensorDialog::onAlarmCooldownChanged(const QString& value) { +void SensorDialog::onAlarmCooldownChanged(const QString &value) +{ sensorC.alarmCooldown = value.toDouble(); } -void SensorDialog::onLogErrorChanged() { +void SensorDialog::onLogErrorChanged() +{ sensorLogsC.setLogError(ui->logError->toPlainText()); } -void SensorDialog::onLogManualChanged() { +void SensorDialog::onLogManualChanged() +{ sensorLogsC.setLogManual(ui->logManual->toPlainText()); } -void SensorDialog::onAlarmSleepageChanged(const QString& value) { +void SensorDialog::onAlarmSleepageChanged(const QString &value) +{ sensorLogsC.setAlarmSleepage(value.toInt()); } -void SensorDialog::onLogHugeErrorChanged() { +void SensorDialog::onLogHugeErrorChanged() +{ sensorLogsC.setLogHugeError(ui->logHugeError->toPlainText()); } @@ -140,7 +148,6 @@ void SensorDialog::closeEvent(QCloseEvent *event) event->accept(); } - SensorDialog::~SensorDialog() { delete ui; diff --git a/sensordialog.h b/sensordialog.h index a3bdd30..b087c6f 100644 --- a/sensordialog.h +++ b/sensordialog.h @@ -1,9 +1,9 @@ #ifndef SENSORDIALOG_H #define SENSORDIALOG_H -#include "sensorwidget.h" #include "httpclient.h" #include "sensorlogs.h" +#include "sensorwidget.h" #include @@ -16,14 +16,12 @@ class SensorDialog : public QDialog Q_OBJECT public: - explicit SensorDialog(QWidget *parent = nullptr, SensorWidget *sensor = nullptr, HttpClient *httpClient = nullptr); + explicit SensorDialog(QWidget *parent = nullptr, + SensorWidget *sensor = nullptr, + HttpClient *httpClient = nullptr); ~SensorDialog(); - enum DialogResult { - NoSave = 0, - SaveSuccess, - SaveError - }; + enum DialogResult { NoSave = 0, SaveSuccess, SaveError }; signals: void resultReady(SensorDialog::DialogResult result); @@ -41,17 +39,17 @@ private: private: void onSaveButtonClicked(); - void onIsAlarmChanged(const QString& value); - void onIsBooledChanged(const QString& value); - void onIsVisibleChanged(const QString& value); - void onNameChanged(const QString& value); - void onUnitNameChanged(const QString& value); - void onAlarmLowChanged(const QString& value); - void onAlarmUpChanged(const QString& value); - void onAlarmCooldownChanged(const QString& value); + void onIsAlarmChanged(const QString &value); + void onIsBooledChanged(const QString &value); + void onIsVisibleChanged(const QString &value); + void onNameChanged(const QString &value); + void onUnitNameChanged(const QString &value); + void onAlarmLowChanged(const QString &value); + void onAlarmUpChanged(const QString &value); + void onAlarmCooldownChanged(const QString &value); void onLogErrorChanged(); void onLogManualChanged(); - void onAlarmSleepageChanged(const QString& value); + void onAlarmSleepageChanged(const QString &value); void onLogHugeErrorChanged(); private: diff --git a/sensorgroups_r.h b/sensorgroups_r.h index 7dbb1b7..f49e4a6 100644 --- a/sensorgroups_r.h +++ b/sensorgroups_r.h @@ -1,20 +1,22 @@ #ifndef SENSORGROUPS_R_H #define SENSORGROUPS_R_H -#include +#include #include #include -#include +#include #include -class GetSensorsGroupsR { +class GetSensorsGroupsR +{ public: GetSensorsGroupsR() = default; - void parseResponse(const QJsonObject& responseObj) { + void parseResponse(const QJsonObject &responseObj) + { if (responseObj.contains("groups") && responseObj["groups"].isArray()) { QJsonArray groupsArray = responseObj["groups"].toArray(); - for (const QJsonValue& value : groupsArray) { + for (const QJsonValue &value : groupsArray) { if (value.isString()) { groups.append(value.toString()); } @@ -22,9 +24,7 @@ public: } } - const QStringList& getGroups() const { - return groups; - } + const QStringList &getGroups() const { return groups; } private: QStringList groups; diff --git a/sensorlogervice.h b/sensorlogervice.h index 578b9c1..3730c56 100644 --- a/sensorlogervice.h +++ b/sensorlogervice.h @@ -1,17 +1,17 @@ #ifndef SENSORLOGSSERVICE_H #define SENSORLOGSSERVICE_H -#include "utils.h" -#include "sensorlogs.h" #include "httpclient.h" +#include "sensorlogs.h" +#include "utils.h" -#include -#include -#include +#include #include #include #include -#include +#include +#include +#include class SensorLogService : public QObject { @@ -19,10 +19,14 @@ class SensorLogService : public QObject public: explicit SensorLogService(HttpClient *client, QObject *parent = nullptr) - : QObject(parent), httpClient(client) {} + : QObject(parent) + , httpClient(client) + {} - SensorLogs getSensorLog(const QString &targetSensorId) { - QJsonObject responseSettingsJson = httpClient->get(utils::API_URL + "/settings/deviceSettings"); + SensorLogs getSensorLog(const QString &targetSensorId) + { + QJsonObject responseSettingsJson = httpClient->get(utils::API_URL + + "/settings/deviceSettings"); QJsonObject sensors = responseSettingsJson["SENSORS"].toObject(); for (const QString &groupKey : sensors.keys()) { @@ -41,7 +45,7 @@ public: } private: - HttpClient* httpClient; + HttpClient *httpClient; }; #endif // SENSORLOGSSERVICE_H diff --git a/sensorlogs.h b/sensorlogs.h index 2865b33..d12f721 100644 --- a/sensorlogs.h +++ b/sensorlogs.h @@ -1,15 +1,18 @@ #ifndef SENSORLOGS_H #define SENSORLOGS_H -#include #include +#include class SensorLogs { public: SensorLogs() = default; SensorLogs(const QString &logError, const QString &logManual, const QString &logHugeError) - : logError(logError), logManual(logManual), logHugeError(logHugeError) {} + : logError(logError) + , logManual(logManual) + , logHugeError(logHugeError) + {} QString getLogError() const { return logError; } void setLogError(const QString &value) { logError = value; } @@ -23,7 +26,8 @@ public: int getAlarmSleepage() const { return AlarmSleepage; } void setAlarmSleepage(const int &value) { AlarmSleepage = value; } - void SensorLogsParse(QJsonObject &sensorData) { + void SensorLogsParse(QJsonObject &sensorData) + { logError = sensorData["LOG_ERROR"].toString(); logManual = sensorData["LOG_MANUAL"].toString(); logHugeError = sensorData["LOG_HUGE_ERROR"].toString(); diff --git a/sensorservice.h b/sensorservice.h index 872a4a4..3fbf5c8 100644 --- a/sensorservice.h +++ b/sensorservice.h @@ -1,33 +1,227 @@ #ifndef SENSORSERVICE_H #define SENSORSERVICE_H -#include "utils.h" #include "HttpClient.h" -#include "getsensors_r.h" -#include "getsensors_p.h" #include "SensorGroups_r.h" +#include "getsensors_p.h" +#include "getsensors_r.h" +#include "utils.h" +#include +#include +#include #include #include -#include -#include -#include #include +#include +#include +#include + +class PlotData { +public: + QList X; + QList Y; + PlotData(QList& x, QList y) + : X(x) + , Y(y) + {} +}; + +struct sensorGroupTree { + QMap groupToLocalGroup; + QMap> groupToSensorWithLocal; + + sensorGroupTree(QMap& a, QMap> b) + : groupToLocalGroup(a) + , groupToSensorWithLocal(b) + {} +}; + +struct Settings { + QString serial; + QString factory; + QString exhuyant; + QString fleet; + QString side; + QString gosNumber; + QString factoryNumber; + QString group; + QString adres; + QString userName; + QString userPassword; + QString argusSerial; + QList> servers; + Settings(QString seriala, + QString factorya, + QString operatoroa, + QString fleeta, + QString sidea, + QString gosNumbera, + QString factoryNumbera, + QString groupa, + QString adresa, + QString userNamea, + QString userPassworda, + QString argusSeriala, + QList> serversa) + : serial(seriala) + , factory(factorya) + , exhuyant(operatoroa) + , fleet(fleeta) + , side(sidea) + , gosNumber(gosNumbera) + , factoryNumber(factoryNumbera) + , group(groupa) + , adres(adresa) + , userName(userNamea) + , userPassword(userPassworda) + , argusSerial(argusSeriala) + , servers(serversa) + {} + Settings() + : serial("") + , factory("") + , exhuyant("") + , fleet("") + , side("") + , gosNumber("") + , factoryNumber("") + , group("") + , adres("") + , userName("") + , userPassword("") + , argusSerial("") + ,servers({}) + {} +}; class SensorService : public QObject { Q_OBJECT public: - explicit SensorService(HttpClient* client, QObject *parent = nullptr) - : QObject(parent), httpClient(client) {} + explicit SensorService(HttpClient *client, QObject *parent = nullptr) + : QObject(parent) + , httpClient(client) + {} - QList getSensors(const QString& group) { + Settings getSettings() + { + QJsonObject responseJson = httpClient->get(utils::API_URL + "/settings/deviceSettings"); + + Settings settings; + + if (responseJson.isEmpty()) { + return settings; + } + + if (responseJson.contains("SYSTEM")) { + QJsonObject systemObj = responseJson.value("SYSTEM").toObject(); + settings.serial = systemObj.value("VIN").toString(); + settings.factory = systemObj.value("MANUFACTURER").toString(); + settings.exhuyant = systemObj.value("OPERATOR").toString(); + settings.fleet = systemObj.value("TP").toString(); + settings.gosNumber = systemObj.value("GOS_NUMBER").toString(); + settings.factoryNumber = systemObj.value("REG_NUMBER").toString(); + settings.group = systemObj.value("GROUP").toString(); + } + + if (responseJson.contains("SENSORS")) { + QJsonObject sensorsObj = responseJson.value("SENSORS").toObject(); + if (sensorsObj.contains("*SYSTEM")) { + QJsonObject systemSensorsObj = sensorsObj.value("*SYSTEM").toObject(); + if (systemSensorsObj.contains("*ARGUS")) { + QJsonObject argusObj = systemSensorsObj.value("*ARGUS").toObject(); + + QString extra = argusObj.value("EXTRA").toString(); + QJsonDocument extraDoc = QJsonDocument::fromJson(extra.toUtf8()); + if (!extraDoc.isNull() && extraDoc.isObject()) { + QJsonObject extraObj = extraDoc.object(); + settings.adres = extraObj.value("IP").toString(); + settings.userName = extraObj.value("DB_USER").toString(); + settings.userPassword = extraObj.value("DB_PASSWORD").toString(); + settings.argusSerial = extraObj.value("SERIAL").toString(); + } + } + } + } + + if (responseJson.contains("HOSTS")) { + QJsonArray hostsArray = responseJson.value("HOSTS").toArray(); + for (const QJsonValue &hostValue : hostsArray) { + QJsonObject hostObj = hostValue.toObject(); + QString domain = hostObj.value("DOMAIN").toString(); + int port = hostObj.value("PORT").toInt(); + settings.servers.append(qMakePair(domain, QString::number(port))); + } + } + + return settings; + } + + void updateSettings(Settings& settings) + { + QJsonObject responseJson = httpClient->get(utils::API_URL + "/settings/deviceSettings"); + + if (responseJson.contains("SYSTEM")) { + QJsonObject systemObj = responseJson.value("SYSTEM").toObject(); + systemObj["VIN"] = settings.serial; + systemObj["MANUFACTURER"] = settings.factory; + systemObj["OPERATOR"] = settings.exhuyant; + systemObj["TP"] = settings.fleet; + systemObj["GOS_NUMBER"] = settings.gosNumber; + systemObj["REG_NUMBER"] = settings.factoryNumber; + systemObj["GROUP"] = settings.group; + + responseJson["SYSTEM"] = systemObj; + } + + if (responseJson.contains("SENSORS")) { + QJsonObject sensorsObj = responseJson.value("SENSORS").toObject(); + if (sensorsObj.contains("*SYSTEM")) { + QJsonObject systemSensorsObj = sensorsObj.value("*SYSTEM").toObject(); + if (systemSensorsObj.contains("*ARGUS")) { + QJsonObject argusObj = systemSensorsObj.value("*ARGUS").toObject(); + + QJsonObject extraObj; + extraObj["IP"] = settings.adres; + extraObj["DB_USER"] = settings.userName; + extraObj["DB_PASSWORD"] = settings.userPassword; + extraObj["SERIAL"] = settings.argusSerial; + + QJsonDocument extraDoc(extraObj); + argusObj["EXTRA"] = QString(extraDoc.toJson(QJsonDocument::Compact)); + + systemSensorsObj["*ARGUS"] = argusObj; + sensorsObj["*SYSTEM"] = systemSensorsObj; + responseJson["SENSORS"] = sensorsObj; + } + } + } + + if (responseJson.contains("HOSTS")) { + QJsonArray hostsArray; + for (const auto& server : settings.servers) { + QJsonObject newHostObj; + newHostObj["DOMAIN"] = server.first; + newHostObj["PORT"] = server.second.toInt(); + hostsArray.append(newHostObj); + } + + responseJson["HOSTS"] = hostsArray; + } + + httpClient->post(utils::API_URL + "/settings/deviceSettings", responseJson); + } + + QList getSensors(const QString &group) + { GetSensorsP requestParams; requestParams.setGroup(group); QByteArray requestData = requestParams.createRequestJson(); - QJsonObject responseJson = httpClient->post(utils::API_URL + "/data/getDeviceSensors", QJsonDocument::fromJson(requestData).object()); + QJsonObject responseJson = httpClient->post(utils::API_URL + "/data/getDeviceSensors", + QJsonDocument::fromJson(requestData).object()); GetSensorsR response; response.parseResponse(responseJson); @@ -35,8 +229,8 @@ public: return response.getSensors(); } - QStringList getSensorGroups() { - QJsonObject emptyJson; + QStringList getSensorGroups() + { QJsonObject responseJson = httpClient->post(utils::API_URL + "/data/getDeviceSensorGroups"); GetSensorsGroupsR response; @@ -45,8 +239,262 @@ public: return response.getGroups(); } + QMap getLocalizedSensorGroups() + { + QJsonObject responseJson = httpClient->get(utils::API_URL + "/data/getDeviceSensorsTree"); + + QMap localizedGroupsMap; + + if (responseJson.contains("groups") && responseJson["groups"].isObject()) { + QJsonObject groupsObject = responseJson["groups"].toObject(); + + for (const QString &groupKey : groupsObject.keys()) { + QJsonObject groupInfo = groupsObject[groupKey].toObject(); + + if (groupInfo.contains("name") && groupInfo["name"].isString()) { + + if(groupInfo["name"].toString() == "*SYSTEM") { + continue; + } + + QString localizedName = groupInfo["name"].toString(); + + localizedGroupsMap[localizedName] = groupKey; + } + } + } + + return localizedGroupsMap; + } + + QMap>> getTranslate() + { + QJsonObject responseJson = httpClient->get(utils::API_URL + "/data/getDeviceSensorsTree"); + + QMap>> translate; + + if (responseJson.contains("groups") && responseJson["groups"].isObject()) { + QJsonObject groupsObject = responseJson["groups"].toObject(); + + for (const QString &groupKey : groupsObject.keys()) { + QJsonObject groupInfo = groupsObject[groupKey].toObject(); + + if (groupInfo.contains("sensors") && groupInfo["sensors"].isObject() && + groupInfo.contains("name") && groupInfo["name"].isString()) { + + if(groupInfo["name"].toString() == "*SYSTEM") { + continue; + } + + QJsonObject sensors = groupInfo["sensors"].toObject(); + + QString localizedGroup = groupInfo["name"].toString(); + + for (auto sensorKey : sensors.keys()) { + if (sensors[sensorKey].isString()) { + translate[groupKey][sensorKey].first = localizedGroup; + translate[groupKey][sensorKey].second = sensors[sensorKey].toString(); + } + } + } + } + } + + return translate; + } + + QMap getSensorToLocalSensor() + { + QJsonObject responseJson = httpClient->get(utils::API_URL + "/data/getDeviceSensorsTree"); + + QMap localizedGroupsMap; + + if (responseJson.contains("groups") && responseJson["groups"].isObject()) { + QJsonObject groupsObject = responseJson["groups"].toObject(); + + for (const QString &groupKey : groupsObject.keys()) { + QJsonObject groupInfo = groupsObject[groupKey].toObject(); + + if (groupInfo.contains("name") && groupInfo["name"].isString()) { + + if(groupInfo["name"].toString() == "*SYSTEM") { + continue; + } + + QString localizedName = groupInfo["name"].toString(); + + localizedGroupsMap[localizedName] = groupKey; + } + + } + } + + return localizedGroupsMap; + } + + sensorGroupTree getSensorGroupsTree() + { + QJsonObject responseJson = httpClient->get(utils::API_URL + "/data/getDeviceSensorsTree"); + + GetSensorsGroupsR response; + + QMap groupToLocalGroup; + QMap> groupToSensorWithLocal; + + if (responseJson.contains("groups") && responseJson["groups"].isObject()) { + QJsonObject groups = responseJson["groups"].toObject(); + + for (auto groupKey : groups.keys()) { + QJsonObject group = groups[groupKey].toObject(); + + if(group["name"].toString() == "*SYSTEM") { + continue; + } + + if (group.contains("name") && group["name"].isString()) { + groupToLocalGroup[groupKey] = group["name"].toString(); + } + + if (group.contains("sensors") && group["sensors"].isObject()) { + QJsonObject sensors = group["sensors"].toObject(); + QMap sensorsMap; + + for (auto sensorKey : sensors.keys()) { + if (sensors[sensorKey].isString()) { + sensorsMap[sensorKey] = sensors[sensorKey].toString(); + } + } + groupToSensorWithLocal[groupKey] = sensorsMap; + } + } + } + + return sensorGroupTree(groupToLocalGroup, groupToSensorWithLocal); + } + + PlotData getDeviceSensorData(const QString &group, const QString &sensorId, + qint64 start, + qint64 end) + { + QJsonObject rootObj; + rootObj["start"] = start; + rootObj["end"] = end; + rootObj["sensor"] = group + '/' + sensorId; + QJsonDocument doc(rootObj); + QByteArray requestData = doc.toJson(); + + QJsonObject responseJson = httpClient->post(utils::API_URL + "/data/getDeviceSensorData", + QJsonDocument::fromJson(requestData).object()); + + QList x; + QList y; + + if (responseJson.contains("data") && responseJson["data"].isArray() && + responseJson.contains("timestamp") && responseJson["timestamp"].isArray()) + { + QJsonArray dataArray = responseJson["data"].toArray(); + QJsonArray timestampArray = responseJson["timestamp"].toArray(); + + if (dataArray.size() == timestampArray.size()) { + for (int i = 0; i < dataArray.size(); ++i) { + int value = dataArray[i].toInt(); + qint64 timestamp = timestampArray[i].toInt(); + x.append(timestamp); + y.append(value); + } + } else { + x.append(QTime::currentTime().msecsSinceStartOfDay()); + y.append(0); + } + } else { + x.append(QTime::currentTime().msecsSinceStartOfDay()); + y.append(0); + } + if(x.empty()) { + x.append(QTime::currentTime().msecsSinceStartOfDay()); + y.append(0); + } + return PlotData(x, y); + } + + PlotData getDeviceSensorData(const QString &groupWithSensor, + qint64 start, + qint64 end) + { + QJsonObject rootObj; + rootObj["start"] = start; + rootObj["end"] = end; + rootObj["sensor"] = groupWithSensor; + QJsonDocument doc(rootObj); + QByteArray requestData = doc.toJson(); + + QJsonObject responseJson = httpClient->post(utils::API_URL + "/data/getDeviceSensorData", + QJsonDocument::fromJson(requestData).object()); + + QList x; + QList y; + + if (responseJson.contains("data") && responseJson["data"].isArray() && + responseJson.contains("timestamp") && responseJson["timestamp"].isArray()) + { + QJsonArray dataArray = responseJson["data"].toArray(); + QJsonArray timestampArray = responseJson["timestamp"].toArray(); + + if (dataArray.size() == timestampArray.size()) { + for (int i = 0; i < dataArray.size(); ++i) { + int value = dataArray[i].toInt(); + qint64 timestamp = timestampArray[i].toInt(); + x.append(timestamp); + y.append(value); + } + } else { + x.append(QTime::currentTime().msecsSinceStartOfDay()); + y.append(0); + } + } else { + x.append(QTime::currentTime().msecsSinceStartOfDay()); + y.append(0); + } + if(x.empty()) { + x.append(QTime::currentTime().msecsSinceStartOfDay()); + y.append(0); + } + return PlotData(x, y); + } + + QVariantList getPoints(qint64 start, qint64 end) + { + QJsonObject rootObj; + rootObj["start_time"] = start; + rootObj["end_time"] = end; + QJsonDocument doc(rootObj); + QByteArray requestData = doc.toJson(); + + QJsonObject responseJson = httpClient->post(utils::API_URL + "/data/geo/getPoints", + QJsonDocument::fromJson(requestData).object()); + + QVariantList points; + if (responseJson.contains("time") && responseJson["time"].isArray() && + responseJson.contains("latitude") && responseJson["latitude"].isArray() && + responseJson.contains("longitude") && responseJson["longitude"].isArray()) + { + QJsonArray timeArray = responseJson["time"].toArray(); + QJsonArray latitudeArray = responseJson["latitude"].toArray(); + QJsonArray longitudeArray = responseJson["longitude"].toArray(); + + if (timeArray.size() == latitudeArray.size() && timeArray.size() == longitudeArray.size()) { + for (int i = 0; i < timeArray.size(); ++i) { + qint64 timestamp = timeArray[i].toInt(); + points.append(QVariant::fromValue(QGeoCoordinate(latitudeArray[i].toDouble(), longitudeArray[i].toDouble()))); + } + } + } + + return points; + } + private: - HttpClient* httpClient; + HttpClient *httpClient; }; #endif // SENSORSERVICE_H diff --git a/sensorwidget.cpp b/sensorwidget.cpp index 0fcc609..f8564ee 100644 --- a/sensorwidget.cpp +++ b/sensorwidget.cpp @@ -2,9 +2,12 @@ #include SensorWidget::SensorWidget(QWidget *parent, const Sensor &sensor) - : QFrame(parent), sensor(sensor), - titleLabel(new QLabel(this)), valueLabel(new QLabel(this)), incidentLabel(new QLabel(this)), - layout(new QVBoxLayout(this)) + : QFrame(parent) + , sensor(sensor) + , titleLabel(new QLabel(this)) + , valueLabel(new QLabel(this)) + , incidentLabel(new QLabel(this)) + , layout(new QVBoxLayout(this)) { setFrameStyle(QFrame::Box); setLineWidth(1); @@ -27,19 +30,21 @@ SensorWidget::SensorWidget(QWidget *parent, const Sensor &sensor) titleLabel->setMinimumHeight(100); titleLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft); - if(sensor.isBooled) { + if (sensor.isBooled) { valueLabel->setText(sensor.lastValue != 0 ? "Да" : "Нет"); } else { valueLabel->setText(QString::number(sensor.lastValue) + ' ' + sensor.unitName); - incidentLabel->setText(QString::number(sensor.alarmLowerBound) + "-" + QString::number(sensor.alarmUpperBound)); + incidentLabel->setText(QString::number(sensor.alarmLowerBound) + "-" + + QString::number(sensor.alarmUpperBound)); } layout->setContentsMargins(10, 10, 10, 10); layout->setSpacing(5); setLayout(layout); } -void SensorWidget::mousePressEvent(QMouseEvent *event) { - emit clicked(this); // Генерация сигнала о клике +void SensorWidget::mousePressEvent(QMouseEvent *event) +{ + emit clicked(this); // Генерация сигнала о клике QFrame::mousePressEvent(event); } @@ -108,22 +113,26 @@ void SensorWidget::setErrorState() } } -Sensor SensorWidget::getSensor() const { +Sensor SensorWidget::getSensor() const +{ return sensor; } -void SensorWidget::setSensor(const Sensor value) { +void SensorWidget::setSensor(const Sensor value) +{ sensor = value; QString titleText = sensor.name; if (titleText.length() > 40) { titleText = titleText.left(37) + "..."; } titleLabel->setText(titleText); - if(sensor.isBooled) { + if (sensor.isBooled) { valueLabel->setText(sensor.lastValue != 0 ? "Да" : "Нет"); + incidentLabel->hide(); } else { valueLabel->setText(QString::number(sensor.lastValue) + ' ' + sensor.unitName); - incidentLabel->setText(QString::number(sensor.alarmLowerBound) + "-" + QString::number(sensor.alarmUpperBound)); + incidentLabel->show(); + incidentLabel->setText(QString::number(sensor.alarmLowerBound) + "-" + + QString::number(sensor.alarmUpperBound)); } } - diff --git a/sensorwidget.h b/sensorwidget.h index 63f227b..bdaa658 100644 --- a/sensorwidget.h +++ b/sensorwidget.h @@ -1,18 +1,17 @@ #ifndef SENSORWIDGET_H #define SENSORWIDGET_H -#include "getsensors_r.h" #include #include #include +#include "getsensors_r.h" class SensorWidget : public QFrame { Q_OBJECT public: - explicit SensorWidget(QWidget *parent = nullptr, - const Sensor &sensor = Sensor()); + explicit SensorWidget(QWidget *parent = nullptr, const Sensor &sensor = Sensor()); void setErrorState(); diff --git a/serverwidget.cpp b/serverwidget.cpp new file mode 100644 index 0000000..95b3a11 --- /dev/null +++ b/serverwidget.cpp @@ -0,0 +1,63 @@ +#include "serverwidget.h" + +ServerWidget::ServerWidget(const QString &domain, int port, QWidget *parent) + : QWidget(parent) +{ + deleted = 0; + domainLineEdit = new QLineEdit(domain, this); + portLineEdit = new QLineEdit(QString::number(port), this); + removeButton = new QPushButton(QIcon(":/png/res/png/delete.png"), "", this); + + domainLineEdit->setFixedSize(360, 35); + domainLineEdit->setStyleSheet(R"( + border: 2px solid #DCD174; + font-family: Inter; + font-size: 15px; + font-weight: 400; + line-height: 31.47px; + text-align: left; + background: #00000000; + color: #13385F; + )"); + portLineEdit->setFixedSize(150, 35); + portLineEdit->setStyleSheet(R"( + border: 2px solid #DCD174; + font-family: Inter; + font-size: 15px; + font-weight: 400; + line-height: 31.47px; + text-align: left; + background: #00000000; + color: #13385F; + )"); + removeButton->setFixedSize(35, 35); + removeButton->setStyleSheet(R"( + border: none; + background: #00000000; + )"); + + QHBoxLayout *layout = new QHBoxLayout(this); + layout->setSpacing(10); + layout->setContentsMargins(0, 0, 0, 0); + layout->addWidget(domainLineEdit); + layout->addWidget(portLineEdit); + layout->addWidget(removeButton); + + connect(removeButton, &QPushButton::clicked, this, [this]() { + deleted = 1; + emit removeWidget(this); + }); + + setLayout(layout); +} + +QString ServerWidget::getDomain() const { + return domainLineEdit->text(); +} + +QString ServerWidget::getPort() const { + return portLineEdit->text(); +} + +ServerWidget::~ServerWidget() { +} diff --git a/serverwidget.h b/serverwidget.h new file mode 100644 index 0000000..6cc8b85 --- /dev/null +++ b/serverwidget.h @@ -0,0 +1,33 @@ +// ServerWidget.h +#ifndef SERVERWIDGET_H +#define SERVERWIDGET_H + +#include +#include +#include +#include +#include + +class ServerWidget : public QWidget +{ + Q_OBJECT + +public: + explicit ServerWidget(const QString &domain, int port, QWidget *parent = nullptr); + ~ServerWidget(); + +signals: + void removeWidget(ServerWidget *widget); + +public: + bool deleted = 0; + QString getPort() const; + QString getDomain() const; + +private: + QLineEdit *domainLineEdit; + QLineEdit *portLineEdit; + QPushButton *removeButton; +}; + +#endif // SERVERWIDGET_H diff --git a/utils.cpp b/utils.cpp index b21ea14..91fc613 100644 --- a/utils.cpp +++ b/utils.cpp @@ -1,5 +1,5 @@ #include "utils.h" namespace utils { - QString API_URL = "http://localhost:8080"; // Определение переменной +QString API_URL = "http://localhost:8080"; } diff --git a/utils.h b/utils.h index e4bcde9..979d7b9 100644 --- a/utils.h +++ b/utils.h @@ -4,8 +4,7 @@ #include namespace utils { - extern QString API_URL; +extern QString API_URL; } - #endif // UTILS_H