diff --git a/SSG_Automation_Solution.sln b/SSG_Automation_Solution.sln
new file mode 100644
index 0000000..6d1963c
--- /dev/null
+++ b/SSG_Automation_Solution.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.33328.57
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SSG_Automation_Solution", "SSG_Automation_Solution\SSG_Automation_Solution.csproj", "{2D212A21-573E-4C84-9ABA-A559D0878BE9}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {2D212A21-573E-4C84-9ABA-A559D0878BE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2D212A21-573E-4C84-9ABA-A559D0878BE9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2D212A21-573E-4C84-9ABA-A559D0878BE9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2D212A21-573E-4C84-9ABA-A559D0878BE9}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {14326FCE-3599-48EB-9A32-0CE02382E835}
+ EndGlobalSection
+EndGlobal
diff --git a/SSG_Automation_Solution/App.config b/SSG_Automation_Solution/App.config
new file mode 100644
index 0000000..c857c97
--- /dev/null
+++ b/SSG_Automation_Solution/App.config
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Blue Dark
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SSG_Automation_Solution/Data/DBInfo.cs b/SSG_Automation_Solution/Data/DBInfo.cs
new file mode 100644
index 0000000..8d01e7a
--- /dev/null
+++ b/SSG_Automation_Solution/Data/DBInfo.cs
@@ -0,0 +1,62 @@
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SSG_Automation_Solution.Data
+{
+ public class DBInfo
+ {
+ private string _DBIP = "localhost";
+ public string DBIP
+ {
+ get
+ {
+ if (_DBIP == "localhost")
+ {
+ LoadOptions();
+ }
+
+ return _DBIP;
+ }
+ set { _DBIP = value; }
+ }
+
+ string dafaultOptionListPath = Environment.CurrentDirectory + @"\Data\options.json";
+
+ #region Singleton
+
+ private static DBInfo uniqueInstance = null;
+ private static readonly Object mInstanceLocker = new Object();
+
+ public static DBInfo getInstance()
+ {
+ lock (mInstanceLocker)
+ {
+ if (uniqueInstance == null)
+ {
+ uniqueInstance = new DBInfo();
+ }
+ }
+ return uniqueInstance;
+ }
+
+ #endregion
+
+ public void LoadOptions()
+ {
+ if (File.Exists(dafaultOptionListPath))
+ {
+ using (StreamReader file = new StreamReader(dafaultOptionListPath))
+ {
+ JObject jobj = JObject.Parse(file.ReadToEnd());
+
+ if (jobj.ContainsKey("DBIP")) DBIP = jobj["DBIP"].ToString();
+ }
+ }
+ }
+ }
+}
diff --git a/SSG_Automation_Solution/Data/LogWriter.cs b/SSG_Automation_Solution/Data/LogWriter.cs
new file mode 100644
index 0000000..f5dadf1
--- /dev/null
+++ b/SSG_Automation_Solution/Data/LogWriter.cs
@@ -0,0 +1,97 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SSG_Automation_Solution.Data
+{
+ public class LogWriter
+ {
+ public enum LogType { Error, Display, Normal }
+
+ #region Variables
+ public string LogFileName { get; set; }
+ public bool isShowLogNormal { get; set; } = true;
+ public bool isShowLogDisplay { get; set; } = true;
+ public bool isShowLogError { get; set; } = true;
+
+ public Color colorLogNormal { get; set; } = Color.FromArgb(195, 195, 195);
+ public Color colorLogDisplay { get; set; } = Color.FromArgb(160, 50, 50);
+ public Color colorLogError { get; set; } = Color.FromArgb(230, 0, 0);
+
+ public bool isSaveLogNormal { get; set; } = true;
+ public bool isSaveLogDisplay { get; set; } = true;
+ public bool isSaveLogError { get; set; } = true;
+
+ #endregion
+
+ #region Singleton
+
+ private static LogWriter uniqueInstance = null;
+ private static readonly Object mInstanceLocker = new Object();
+
+ public static LogWriter getInstance()
+ {
+ lock (mInstanceLocker)
+ {
+ if (uniqueInstance == null)
+ {
+ uniqueInstance = new LogWriter();
+
+ string m_exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
+ string folderPath = m_exePath + @"\Logs";
+ DirectoryInfo directory = new DirectoryInfo(folderPath);
+ if (!directory.Exists) directory.Create();
+
+ DateTime now = DateTime.Now;
+ foreach (FileInfo file in directory.GetFiles())
+ {
+ TimeSpan timeDiff = now - file.LastWriteTime;
+ if (timeDiff.TotalHours > 170) file.Delete();
+ }
+ }
+ }
+ return uniqueInstance;
+ }
+
+ #endregion
+
+
+ #region Method
+ public void LogWrite(string logMessage, LogType logType)
+ {
+ string m_exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
+ string folderPath = m_exePath + @"\Logs";
+ DirectoryInfo di = new DirectoryInfo(folderPath);
+ if (!di.Exists) di.Create();
+
+
+ string suffix = "";
+ switch (logType)
+ {
+ case LogType.Normal: suffix = " normal.txt"; break;
+ case LogType.Display: suffix = " display.txt"; break;
+ case LogType.Error: suffix = " error.txt"; break;
+ }
+
+
+ try
+ {
+ using (StreamWriter w = File.AppendText(folderPath + @"\" + LogFileName + suffix))
+ {
+ w.WriteLine(DateTime.Now.ToString("yyMMdd HH:mm:ss.fff : ") + logMessage);
+ }
+ }
+ catch (Exception ex)
+ {
+ }
+ }
+
+ #endregion
+
+ }
+}
diff --git a/SSG_Automation_Solution/Data/Options.cs b/SSG_Automation_Solution/Data/Options.cs
new file mode 100644
index 0000000..46f702d
--- /dev/null
+++ b/SSG_Automation_Solution/Data/Options.cs
@@ -0,0 +1,114 @@
+using DevExpress.XtraEditors;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SSG_Automation_Solution.Data
+{
+ public class Options
+ {
+ #region Singleton
+
+ private static Options uniqueInstance = null;
+ private static readonly Object mInstanceLocker = new Object();
+
+ public static Options getInstance()
+ {
+ lock (mInstanceLocker)
+ {
+ if (uniqueInstance == null)
+ {
+ uniqueInstance = new Options();
+ }
+ }
+ return uniqueInstance;
+ }
+
+ #endregion
+
+
+ #region
+
+ public List gridColors = new List();
+
+ public struct gridColor
+ {
+ public string 명칭;
+ public Color 색상;
+
+ public gridColor(string 명칭, Color 색상) : this()
+ {
+ this.명칭 = 명칭;
+ this.색상 = 색상;
+ }
+ }
+
+ string gridColorPath = Environment.CurrentDirectory + @"\Data\gridColor.json";
+
+ public Color GetGridColor(LabelControl lbl)
+ {
+ Color color = gridColors.Find(x => x.명칭 == lbl.Name).색상;
+ return color;
+ }
+
+ public void ChangeGridColor(string 명칭, Color 색상)
+ {
+
+ int index = gridColors.FindIndex(x => x.명칭 == 명칭);
+ if (index > -1) gridColors.RemoveAt(index);
+ gridColors.Add(new gridColor(명칭, 색상));
+ }
+
+ public void SaveGridColor()
+ {
+ try
+ {
+ JObject json = new JObject();
+
+ foreach (gridColor g in gridColors)
+ {
+ json.Add(g.명칭, g.색상.ToArgb());
+ }
+
+ File.WriteAllText(gridColorPath, json.ToString(), Encoding.UTF8);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("DatControl Err");
+ Console.WriteLine(ex.Message);
+ }
+ }
+
+ public void LoadGridCOlor()
+ {
+ try
+ {
+ if (File.Exists(gridColorPath))
+ {
+ using (StreamReader file = new StreamReader(gridColorPath))
+ {
+ using (JsonTextReader reader = new JsonTextReader(file))
+ {
+ JObject json = (JObject)JToken.ReadFrom(reader);
+
+ foreach (var x in json)
+ {
+ ChangeGridColor(x.Key, Color.FromArgb((int)x.Value));
+ }
+ }
+ }
+ }
+ }
+ catch (Exception ex) { }
+ }
+
+
+ #endregion
+ }
+}
diff --git a/SSG_Automation_Solution/Data/SceneGroup.cs b/SSG_Automation_Solution/Data/SceneGroup.cs
new file mode 100644
index 0000000..8fdc10d
--- /dev/null
+++ b/SSG_Automation_Solution/Data/SceneGroup.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SSG_Automation_Solution.Data
+{
+ public class SceneGroup
+ {
+ public string GroupName { get; set; } // 그룹 이름
+ public List Scenes { get; set; } = new List(); // 그룹의 SceneVO 리스트
+
+ // 그룹에 Scene 추가
+ public void AddScene(SceneVO scene)
+ {
+ if (!Scenes.Contains(scene))
+ {
+ Scenes.Add(scene);
+ }
+ }
+
+ // 그룹에서 Scene 제거
+ public void RemoveScene(SceneVO scene)
+ {
+ Scenes.Remove(scene);
+ }
+ }
+}
diff --git a/SSG_Automation_Solution/Data/SceneVO.cs b/SSG_Automation_Solution/Data/SceneVO.cs
new file mode 100644
index 0000000..c70d768
--- /dev/null
+++ b/SSG_Automation_Solution/Data/SceneVO.cs
@@ -0,0 +1,50 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SSG_Automation_Solution.Data
+{
+ public class SceneVO
+ {
+ private string groupName;
+ private string sceneName;
+ private string sceneDate;
+ private string scenePath;
+ private string sceneCG;
+ private string sceneLayer;
+
+ public string GroupName
+ {
+ get { return groupName; }
+ set { groupName = value; }
+ }
+
+ public string SceneName {
+ get { return sceneName; }
+ set { sceneName = value; }
+ }
+
+ public string SceneDate
+ {
+ get { return sceneDate; }
+ set { sceneDate = value; }
+ }
+
+ public string ScenePath
+ {
+ get { return scenePath; }
+ set { scenePath = value; }
+ }
+
+ public string SceneLayer
+ {
+ get { return sceneLayer; }
+ set { sceneLayer = value; }
+ }
+
+ public BindingList Variables;
+ }
+}
diff --git a/SSG_Automation_Solution/Data/Schedule.cs b/SSG_Automation_Solution/Data/Schedule.cs
new file mode 100644
index 0000000..ff09a5c
--- /dev/null
+++ b/SSG_Automation_Solution/Data/Schedule.cs
@@ -0,0 +1,243 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SSG_Automation_Solution.Data
+{
+ public class Schedule : INotifyPropertyChanged
+ {
+ public bool HasDisplayed = false;
+ public bool HasOuted = false;
+ public bool IgnoreForbid = false;
+ public bool IsServiceGoods = false;
+
+
+ private Guid idValue = Guid.NewGuid();
+ [Display(Order = -1)]
+ public Guid ID
+ {
+ get { return this.idValue; }
+ }
+
+ string text;
+ [DisplayName("종류")]
+ public string scheduleType
+ {
+ get { return text; }
+ set
+ {
+ if (text != value)
+ {
+ //if (string.IsNullOrEmpty(value)) throw new Exception();
+ text = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+ string scheduleSimulCast;
+ [DisplayName("동시송출")]
+ public string scheduleSimulCastName
+ {
+ get { return scheduleSimulCast; }
+ set
+ {
+ if (scheduleSimulCast != value)
+ {
+ scheduleSimulCast = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+ string sceneGroup;
+ [DisplayName("씬그룹")]
+ public string sceneGroupName
+ {
+ get { return sceneGroup; }
+ set
+ {
+ if (sceneGroup != value)
+ {
+ //if (string.IsNullOrEmpty(value)) throw new Exception();
+ sceneGroup = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+ string scene;
+ [DisplayName("씬이름")]
+ public string sceneName
+ {
+ get { return scene; }
+ set
+ {
+ if (scene != value)
+ {
+ //if (string.IsNullOrEmpty(value)) throw new Exception();
+ scene = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+ DateTime? startTime;
+ //[DataType(DataType.DateTime)]
+ [DisplayName("시작시간")]
+ public DateTime? StartTimeDateTime
+ {
+ get { return startTime; }
+ set
+ {
+ if (startTime != value)
+ {
+ startTime = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+ private TimeSpan? relativeStartTime;
+
+ [DisplayName("상대시간")]
+ public TimeSpan? RelativeStartTime
+ {
+ get { return relativeStartTime; }
+ set
+ {
+ if (relativeStartTime != value)
+ {
+ relativeStartTime = value;
+ OnPropertyChanged(nameof(RelativeStartTime));
+ }
+ }
+ }
+
+ public TimeSpan? GetPreviousScheduleStartTime(BindingList allSchedules)
+ {
+ if (this.scheduleType != "송출") return null;
+
+ var previousSchedule = allSchedules
+ .Where(s => s.scheduleType == "스케쥴" && s.StartTimeDateTime <= this.StartTimeDateTime)
+ .OrderByDescending(s => s.StartTimeDateTime)
+ .FirstOrDefault();
+
+ return this.StartTimeDateTime - previousSchedule?.StartTimeDateTime;
+ }
+
+ TimeSpan? duration;
+ [DisplayName("길이")]
+ public TimeSpan? DurationSpan
+ {
+ get { return duration; }
+ set
+ {
+ if (duration != value)
+ {
+ duration = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+ TimeSpan? tapeTime;
+ [DisplayName("테잎길이")]
+ public TimeSpan? TapeTime
+ {
+ get { return tapeTime; }
+ set
+ {
+ if (tapeTime != value)
+ {
+ tapeTime = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+ [DisplayName("종료시간")]
+ public DateTime? EndTimeDateTime
+ {
+ get
+ {
+ if (text == "스케쥴")
+ {
+ try
+ {
+ int multi = 0;
+ for (int i = 0; i < 10; i++)
+ {
+ if (duration.Value.TotalSeconds >= tapeTime.Value.TotalSeconds * i) multi = i;
+ }
+
+ return startTime + new TimeSpan(0, 0, Convert.ToInt32(tapeTime.Value.TotalSeconds) * multi);
+ }
+ catch(Exception ex)
+ {
+ return startTime + DurationSpan;
+ }
+
+ }
+ else
+ {
+ return startTime + DurationSpan;
+ }
+ }
+ }
+
+ Int16? layer;
+ [DisplayName("레이어")]
+ public Int16? layerNumber
+ {
+ get { return layer; }
+ set
+ {
+ if (layer != value)
+ {
+ layer = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+
+
+ string done;
+ [DisplayName("상태")]
+ public string doneString
+ {
+ get { return done; }
+ set
+ {
+ if (done != value)
+ {
+ done = value;
+ OnPropertyChanged();
+ }
+ }
+ }
+
+
+
+ public BindingList 변수정보;
+
+ public TimeSpan 스케쥴기준송출시간;
+
+ public event PropertyChangedEventHandler PropertyChanged;
+ protected void OnPropertyChanged([CallerMemberName] string propertyName = "")
+ {
+ if (PropertyChanged != null)
+ {
+ PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
+ }
+
+ }
+
+
+
+ }
+}
diff --git a/SSG_Automation_Solution/Data/SyncMetadata.cs b/SSG_Automation_Solution/Data/SyncMetadata.cs
new file mode 100644
index 0000000..9867d32
--- /dev/null
+++ b/SSG_Automation_Solution/Data/SyncMetadata.cs
@@ -0,0 +1,19 @@
+using System;
+
+namespace SSG_Automation_Solution.Data
+{
+ public class FileMetadata
+ {
+ public DateTime? LastModified { get; set; }
+ public string Hash { get; set; }
+ public DateTime? UploadTime { get; set; }
+ }
+
+ public class SyncMetadata
+ {
+ public FileMetadata SceneList { get; set; } = new FileMetadata();
+ public FileMetadata Groups { get; set; } = new FileMetadata();
+ public FileMetadata Schedule { get; set; } = new FileMetadata();
+ }
+
+}
diff --git a/SSG_Automation_Solution/Data/VariablesVO.cs b/SSG_Automation_Solution/Data/VariablesVO.cs
new file mode 100644
index 0000000..08deddc
--- /dev/null
+++ b/SSG_Automation_Solution/Data/VariablesVO.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SSG_Automation_Solution.Data
+{
+ public class VariablesVO
+ {
+ private string tag;
+ private string text;
+
+ public string Tag
+ {
+ get { return tag; }
+ set { tag = value; }
+ }
+ public string Text
+ {
+ get { return text; }
+ set { text = value; }
+ }
+ }
+}
diff --git a/SSG_Automation_Solution/Design/CustomControl/CustomToggleSwitchPainter.cs b/SSG_Automation_Solution/Design/CustomControl/CustomToggleSwitchPainter.cs
new file mode 100644
index 0000000..38d9fc9
--- /dev/null
+++ b/SSG_Automation_Solution/Design/CustomControl/CustomToggleSwitchPainter.cs
@@ -0,0 +1,34 @@
+using DevExpress.Utils.Drawing;
+using DevExpress.XtraEditors.Drawing;
+using DevExpress.XtraEditors.ViewInfo;
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SSG_Automation_Solution.Design.CustomControl
+{
+ public class CustomToggleSwitchPainter : ToggleSwitchPainter
+ {
+ public CustomToggleSwitchPainter() : base() { }
+
+ protected override void DrawContent(ControlGraphicsInfoArgs info)
+ {
+ BaseCheckEditViewInfo vi = info.ViewInfo as BaseCheckEditViewInfo;
+ vi.CheckInfo.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+ ToggleObjectInfoArgs args = (vi.CheckInfo) as ToggleObjectInfoArgs;
+ int offset = 2;
+
+ int width = args.GlyphRect.Width - args.SwitchRect.Width;
+ if (args.GlyphRect.X == args.SwitchRect.X)
+ vi.CheckInfo.CaptionRect = new Rectangle(args.SwitchRect.Right, args.SwitchRect.Y, width, args.SwitchRect.Height);
+ else
+ if (args.GlyphRect.Right == args.SwitchRect.Right)
+ vi.CheckInfo.CaptionRect = new Rectangle(args.GlyphRect.X + offset, args.GlyphRect.Y, width, args.SwitchRect.Height);
+
+ base.DrawContent(info);
+ }
+ }
+}
diff --git a/SSG_Automation_Solution/Design/Forms/LoginForm.Designer.cs b/SSG_Automation_Solution/Design/Forms/LoginForm.Designer.cs
new file mode 100644
index 0000000..5f0a2bc
--- /dev/null
+++ b/SSG_Automation_Solution/Design/Forms/LoginForm.Designer.cs
@@ -0,0 +1,207 @@
+
+namespace SSG_Automation_Solution.Design.Forms
+{
+ partial class LoginForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginForm));
+ this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl4 = new DevExpress.XtraEditors.LabelControl();
+ this.textEditPassword = new DevExpress.XtraEditors.TextEdit();
+ this.textEditUsername = new DevExpress.XtraEditors.TextEdit();
+ this.simpleButton1 = new DevExpress.XtraEditors.SimpleButton();
+ this.svgImageBox1 = new DevExpress.XtraEditors.SvgImageBox();
+ this.checkEdit1 = new DevExpress.XtraEditors.CheckEdit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEditPassword.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEditUsername.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.svgImageBox1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.checkEdit1.Properties)).BeginInit();
+ this.SuspendLayout();
+ //
+ // labelControl1
+ //
+ this.labelControl1.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
+ this.labelControl1.Appearance.Options.UseBackColor = true;
+ this.labelControl1.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.labelControl1.Location = new System.Drawing.Point(170, 153);
+ this.labelControl1.Name = "labelControl1";
+ this.labelControl1.Size = new System.Drawing.Size(320, 3);
+ this.labelControl1.TabIndex = 1;
+ //
+ // labelControl2
+ //
+ this.labelControl2.Appearance.Font = new System.Drawing.Font("나눔스퀘어 네오 Bold", 8.999999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.labelControl2.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
+ this.labelControl2.Appearance.Options.UseFont = true;
+ this.labelControl2.Appearance.Options.UseForeColor = true;
+ this.labelControl2.Location = new System.Drawing.Point(170, 100);
+ this.labelControl2.Name = "labelControl2";
+ this.labelControl2.Size = new System.Drawing.Size(63, 13);
+ this.labelControl2.TabIndex = 2;
+ this.labelControl2.Text = "Username";
+ //
+ // labelControl3
+ //
+ this.labelControl3.Appearance.Font = new System.Drawing.Font("나눔스퀘어 네오 Bold", 8.999999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.labelControl3.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
+ this.labelControl3.Appearance.Options.UseFont = true;
+ this.labelControl3.Appearance.Options.UseForeColor = true;
+ this.labelControl3.Location = new System.Drawing.Point(170, 171);
+ this.labelControl3.Name = "labelControl3";
+ this.labelControl3.Size = new System.Drawing.Size(61, 13);
+ this.labelControl3.TabIndex = 5;
+ this.labelControl3.Text = "Password";
+ //
+ // labelControl4
+ //
+ this.labelControl4.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
+ this.labelControl4.Appearance.Options.UseBackColor = true;
+ this.labelControl4.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.labelControl4.Location = new System.Drawing.Point(170, 224);
+ this.labelControl4.Name = "labelControl4";
+ this.labelControl4.Size = new System.Drawing.Size(320, 3);
+ this.labelControl4.TabIndex = 4;
+ //
+ // textEditPassword
+ //
+ this.textEditPassword.Location = new System.Drawing.Point(170, 190);
+ this.textEditPassword.Name = "textEditPassword";
+ this.textEditPassword.Properties.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(78)))), ((int)(((byte)(109)))), ((int)(((byte)(156)))));
+ this.textEditPassword.Properties.Appearance.Font = new System.Drawing.Font("나눔스퀘어 네오 Bold", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.textEditPassword.Properties.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90)))));
+ this.textEditPassword.Properties.Appearance.Options.UseBackColor = true;
+ this.textEditPassword.Properties.Appearance.Options.UseFont = true;
+ this.textEditPassword.Properties.Appearance.Options.UseForeColor = true;
+ this.textEditPassword.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
+ this.textEditPassword.Properties.ContextImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("textEditPassword.Properties.ContextImageOptions.Image")));
+ this.textEditPassword.Properties.NullText = "password";
+ this.textEditPassword.Size = new System.Drawing.Size(320, 34);
+ this.textEditPassword.TabIndex = 101;
+ this.textEditPassword.EditValueChanged += new System.EventHandler(this.textEdit1_EditValueChanged);
+ //
+ // textEditUsername
+ //
+ this.textEditUsername.Location = new System.Drawing.Point(170, 119);
+ this.textEditUsername.Name = "textEditUsername";
+ this.textEditUsername.Properties.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(78)))), ((int)(((byte)(109)))), ((int)(((byte)(156)))));
+ this.textEditUsername.Properties.Appearance.Font = new System.Drawing.Font("나눔스퀘어 네오 Bold", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.textEditUsername.Properties.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90)))));
+ this.textEditUsername.Properties.Appearance.Options.UseBackColor = true;
+ this.textEditUsername.Properties.Appearance.Options.UseFont = true;
+ this.textEditUsername.Properties.Appearance.Options.UseForeColor = true;
+ this.textEditUsername.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
+ this.textEditUsername.Properties.ContextImageOptions.Image = ((System.Drawing.Image)(resources.GetObject("textEditUsername.Properties.ContextImageOptions.Image")));
+ this.textEditUsername.Properties.NullText = "username";
+ this.textEditUsername.Size = new System.Drawing.Size(320, 34);
+ this.textEditUsername.TabIndex = 100;
+ this.textEditUsername.EditValueChanged += new System.EventHandler(this.textEdit1_EditValueChanged);
+ //
+ // simpleButton1
+ //
+ this.simpleButton1.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(77)))), ((int)(((byte)(130)))), ((int)(((byte)(184)))));
+ this.simpleButton1.Appearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(77)))), ((int)(((byte)(130)))), ((int)(((byte)(184)))));
+ this.simpleButton1.Appearance.Font = new System.Drawing.Font("나눔스퀘어 네오 Bold", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.simpleButton1.Appearance.ForeColor = System.Drawing.Color.White;
+ this.simpleButton1.Appearance.Options.UseBackColor = true;
+ this.simpleButton1.Appearance.Options.UseBorderColor = true;
+ this.simpleButton1.Appearance.Options.UseFont = true;
+ this.simpleButton1.Appearance.Options.UseForeColor = true;
+ this.simpleButton1.Location = new System.Drawing.Point(170, 280);
+ this.simpleButton1.Name = "simpleButton1";
+ this.simpleButton1.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
+ this.simpleButton1.Size = new System.Drawing.Size(320, 55);
+ this.simpleButton1.TabIndex = 103;
+ this.simpleButton1.Text = "LOGIN";
+ this.simpleButton1.Click += new System.EventHandler(this.simpleButton1_Click);
+ //
+ // svgImageBox1
+ //
+ this.svgImageBox1.Location = new System.Drawing.Point(615, 3);
+ this.svgImageBox1.Name = "svgImageBox1";
+ this.svgImageBox1.Size = new System.Drawing.Size(27, 26);
+ this.svgImageBox1.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("svgImageBox1.SvgImage")));
+ this.svgImageBox1.TabIndex = 103;
+ this.svgImageBox1.Text = "svgImageBox1";
+ this.svgImageBox1.Click += new System.EventHandler(this.svgImageBox1_Click);
+ //
+ // checkEdit1
+ //
+ this.checkEdit1.Location = new System.Drawing.Point(170, 233);
+ this.checkEdit1.Name = "checkEdit1";
+ this.checkEdit1.Properties.Appearance.Font = new System.Drawing.Font("나눔스퀘어 네오 Bold", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.checkEdit1.Properties.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60)))));
+ this.checkEdit1.Properties.Appearance.Options.UseFont = true;
+ this.checkEdit1.Properties.Appearance.Options.UseForeColor = true;
+ this.checkEdit1.Properties.Caption = "Remember me";
+ this.checkEdit1.Properties.CheckBoxOptions.SvgColorChecked = System.Drawing.Color.FromArgb(((int)(((byte)(77)))), ((int)(((byte)(130)))), ((int)(((byte)(184)))));
+ this.checkEdit1.Size = new System.Drawing.Size(122, 20);
+ this.checkEdit1.TabIndex = 10;
+ //
+ // LoginForm
+ //
+ this.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(78)))), ((int)(((byte)(109)))), ((int)(((byte)(156)))));
+ this.Appearance.Options.UseBackColor = true;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(644, 372);
+ this.Controls.Add(this.checkEdit1);
+ this.Controls.Add(this.svgImageBox1);
+ this.Controls.Add(this.simpleButton1);
+ this.Controls.Add(this.textEditUsername);
+ this.Controls.Add(this.labelControl3);
+ this.Controls.Add(this.labelControl4);
+ this.Controls.Add(this.textEditPassword);
+ this.Controls.Add(this.labelControl2);
+ this.Controls.Add(this.labelControl1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+ this.Name = "LoginForm";
+ this.Text = "Login";
+ this.Shown += new System.EventHandler(this.LoginForm_Shown);
+ ((System.ComponentModel.ISupportInitialize)(this.textEditPassword.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEditUsername.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.svgImageBox1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.checkEdit1.Properties)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+ private DevExpress.XtraEditors.LabelControl labelControl1;
+ private DevExpress.XtraEditors.LabelControl labelControl2;
+ private DevExpress.XtraEditors.LabelControl labelControl3;
+ private DevExpress.XtraEditors.LabelControl labelControl4;
+ private DevExpress.XtraEditors.TextEdit textEditPassword;
+ private DevExpress.XtraEditors.TextEdit textEditUsername;
+ private DevExpress.XtraEditors.SimpleButton simpleButton1;
+ private DevExpress.XtraEditors.SvgImageBox svgImageBox1;
+ private DevExpress.XtraEditors.CheckEdit checkEdit1;
+ }
+}
\ No newline at end of file
diff --git a/SSG_Automation_Solution/Design/Forms/LoginForm.cs b/SSG_Automation_Solution/Design/Forms/LoginForm.cs
new file mode 100644
index 0000000..b03f9f4
--- /dev/null
+++ b/SSG_Automation_Solution/Design/Forms/LoginForm.cs
@@ -0,0 +1,169 @@
+using DevExpress.XtraEditors;
+using Microsoft.Win32;
+using Newtonsoft.Json;
+using SSG_Automation_Solution.Data;
+using System;
+using System.Drawing;
+using System.Net.Http;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace SSG_Automation_Solution.Design.Forms
+{
+ public partial class LoginForm : DevExpress.XtraEditors.XtraForm
+ {
+ public int LoginResult { get; private set; } // 로그인 상태를 나타내는 반환값
+ private readonly string _restServerUrl = "http://"+ DBInfo.getInstance().DBIP + ":60031/api/auth/login"; // REST 서버 주소
+ public string Username { get; private set; }
+
+ string subKey = @"SOFTWARE\CI";
+
+
+ public LoginForm()
+ {
+ InitializeComponent();
+
+ LoginResult = 0; // 기본값: 로그인 실패
+
+ // 비밀번호 입력 필드에서 Enter 키 처리
+ textEditPassword.KeyDown += TextEditPassword_KeyDown;
+
+
+ }
+
+ private void LoadReg()
+ {
+ RegistryKey key = Registry.CurrentUser.CreateSubKey(subKey);
+ if (key.GetValue("checked") != null) checkEdit1.Checked = Convert.ToBoolean(key.GetValue("checked").ToString());
+ if (key.GetValue("id") != null) textEditUsername.Text = key.GetValue("id").ToString();
+ if (key.GetValue("pw") != null) textEditPassword.Text = key.GetValue("pw").ToString();
+ key.Close();
+
+ //if (textEditPassword.Text.Trim() != "") simpleButton1_Click(null, null);
+ }
+
+ private void SaveReg()
+ {
+ RegistryKey key = Registry.CurrentUser.CreateSubKey(subKey);
+ key.SetValue("checked", checkEdit1.Checked);
+ key.SetValue("id", textEditUsername.Text);
+
+ if (checkEdit1.Checked) key.SetValue("pw", textEditPassword.Text);
+ else key.SetValue("pw", "");
+ key.Close();
+ }
+
+
+ private void textEdit1_EditValueChanged(object sender, EventArgs e)
+ {
+ TextEdit textEdit = (TextEdit)sender;
+ textEdit.ForeColor = Color.White;
+
+ if (textEdit == textEditPassword)
+ {
+ textEditPassword.Properties.PasswordChar = '*';
+ textEditPassword.Properties.UseSystemPasswordChar = true;
+ }
+ }
+
+ // 비밀번호 입력 필드에서 Enter 키 감지
+ private void TextEditPassword_KeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.KeyCode == Keys.Enter) // Enter 키 확인
+ {
+ simpleButton1_Click(sender, e); // 로그인 버튼 클릭 이벤트 호출
+ e.Handled = true; // 기본 Enter 동작 방지
+ e.SuppressKeyPress = true; // 시스템 Ding 소리 방지
+ }
+ }
+
+ private async void simpleButton1_Click(object sender, EventArgs e)
+ {
+ // 예제: 유저 정보 확인 로직
+ string username = textEditUsername.Text; // TextEdit에 유저 ID 입력
+ string password = textEditPassword.Text; // TextEdit에 비밀번호 입력
+ Username = username;
+
+ if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
+ {
+ MessageBox.Show("유저이름이나 비밀번호에 값이 없습니다.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+
+ // REST 서버로 로그인 요청 보내기
+ var loginResponse = await VerifyLoginWithServer(username, password);
+
+ SaveReg();
+
+ if (loginResponse == 1) // 관리자
+ {
+ LoginResult = 1;
+ this.DialogResult = DialogResult.OK;
+ this.Close();
+ }
+ else if (loginResponse == 2) // 일반 사용자
+ {
+ LoginResult = 2;
+ this.DialogResult = DialogResult.OK;
+ this.Close();
+ }
+ else // 로그인 실패
+ {
+ LoginResult = 0;
+ MessageBox.Show("유효하지 않은 사용자 또는 비밀번호 입니다.", "Login Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private async Task VerifyLoginWithServer(string username, string password)
+ {
+ try
+ {
+ if (username == "admin" && password == "admin") return 1;
+
+ using (HttpClient client = new HttpClient())
+ {
+ // 요청 데이터 생성
+ var payload = new
+ {
+ Username = username,
+ Password = password
+ };
+
+ string jsonPayload = JsonConvert.SerializeObject(payload);
+ StringContent content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");
+
+ // POST 요청 전송
+ HttpResponseMessage response = await client.PostAsync(_restServerUrl, content);
+
+ if (response.IsSuccessStatusCode)
+ {
+ // 응답 데이터를 JSON으로 파싱
+ var result = await response.Content.ReadAsStringAsync();
+ dynamic jsonResponse = JsonConvert.DeserializeObject(result);
+
+ return 2;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"서버와의 통신 에러: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+
+ return 0; // 로그인 실패
+ }
+
+ private void svgImageBox1_Click(object sender, EventArgs e)
+ {
+ LoginResult = 0; // 로그인 실패로 설정
+ this.DialogResult = DialogResult.Cancel; // 취소 버튼 처리
+ Application.Exit(); // 실패 시 프로그램 종료
+ }
+
+ private void LoginForm_Shown(object sender, EventArgs e)
+ {
+ LoadReg();
+ }
+ }
+}
diff --git a/SSG_Automation_Solution/Design/Forms/LoginForm.resx b/SSG_Automation_Solution/Design/Forms/LoginForm.resx
new file mode 100644
index 0000000..bdde742
--- /dev/null
+++ b/SSG_Automation_Solution/Design/Forms/LoginForm.resx
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAmdEVYdFRpdGxlAFF1ZXN0aW9uO0hlbHA7RG9jdW1l
+ bnRhdGlvbjtXaGF0ben5RgAAAWVJREFUWEfF19GNwjAQBFBKoARKuBKuAUuUQAnXAZIboIQrgV//UQIl
+ UMKVkNNIGymaWWfXEZf7eBIaVl7jOIk5TNN0+E8S7E2CvUkQKbWdS23XUtu91PYw+Izsk+sjEnhKbUdr
+ 8FNqmwKvkYlI4MGATqPIhcfxSODZOAGs1pHHYhJ4OhN42vXHkvN3sy8ei0ngWUwAzS78y0ptN6c53Hks
+ JoHHJvDNjanGW4kH1zEJPGuNFzW4HH8zgYzOLXrlOibBFthsTnP44FomwSjblNwYwg0IEoxYaY5bNNw3
+ IEHWO5qDBBm4tk5jWL1VPRJkWCNpznUZEmQ4t9yLa7IkyHB+/Y1rsiTIcFYgfOD0SJBhL5/5NAT7rsA7
+ STDC3pLp45dHggxrvNwH+HzmugwJInZA5U04T2LoIQQSRDrHs9nw5ZAgUmo7OY1nJ66PSJDReRFtehZI
+ kGUvJPxZgfDg0SPB3iTY2y9xLWth57sNgAAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAydEVYdFRpdGxlAEN1c3RvbWVyO0VtcGxveWVlO1Bl
+ cnNvbjtDb250YWN0O1VzZXI7Q2xpZW50fhE26AAAAaRJREFUWEfFlqFLBFEQxg+0GAzCiVXRYtBuVQQF
+ Jwj+MWIQmSvCddFiFwzGAS1aFUHEIIhwh0ZRMSgorAy8lXP2e2/XfXtr+JX35pvvd7sbrpEkSeM/yRwQ
+ SxFWiOWAWB6I5dPxSCyHxLIK5jPECOwQS5LDPshVIrAEynysgXy0gD52W+TjCOSjBW5BkY87kI8WeANF
+ Pl5APlrAloT4APkogXlQkodm7J7SArugIA/N2D2lBbZBQR6asXtKC0wSyxMo8aGzmrF7Sgsom6DIxzrI
+ RwvMgCIfOmvz0QLKMSiznIBcZQKzxPIOSlP0TmdsrjIBZZlYnkH5q7uz8xliBZRRYtlwr+SMWLaIZQzM
+ QWIEBsCZZRCc/aKswByxXBLLFLhL0a//ys3aux/+IjBOLEwsNz3v+pRYhsDsMLFc9MxppkUsE3a2iMAI
+ sey5/3v2Y1POiWXBPW5lkViuwZyiO3SX7iwkME0s92AR4sthzxG6U3cHBZrE0gHhqtDdzZBAG4Sqph0S
+ 6OevT+mEBOxwXwgJdO1wH+h6Beomc1A3mYO6yRzUzTcKdExBDdX0MAAAAABJRU5ErkJggg==
+
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD6AQAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkNsZWFySGVhZGVyQW5kRm9vdGVyIiBzdHlsZT0iZW5hYmxlLWJhY2tn
+ cm91bmQ6bmV3IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuUmVke2ZpbGw6
+ I0QxMUMxQzt9Cjwvc3R5bGU+DQogIDxwYXRoIGQ9Ik0yNyw0SDVDNC41LDQsNCw0LjUsNCw1djIyYzAs
+ MC41LDAuNSwxLDEsMWgyMmMwLjUsMCwxLTAuNSwxLTFWNUMyOCw0LjUsMjcuNSw0LDI3LDR6IE0yMiwy
+ MGwtMiwybC00LTRsLTQsNCAgbC0yLTJsNC00bC00LTRsMi0ybDQsNGw0LTRsMiwybC00LDRMMjIsMjB6
+ IiBjbGFzcz0iUmVkIiAvPg0KPC9zdmc+Cw==
+
+
+
\ No newline at end of file
diff --git a/SSG_Automation_Solution/Design/Forms/MainForm.Designer.cs b/SSG_Automation_Solution/Design/Forms/MainForm.Designer.cs
new file mode 100644
index 0000000..6bbcc7d
--- /dev/null
+++ b/SSG_Automation_Solution/Design/Forms/MainForm.Designer.cs
@@ -0,0 +1,3796 @@
+
+using DevExpress.XtraEditors;
+using DevExpress.XtraTab;
+
+namespace SSG_Automation_Solution.Design.Forms
+{
+ partial class MainForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ DevExpress.XtraEditors.TileItemElement tileItemElement1 = new DevExpress.XtraEditors.TileItemElement();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
+ DevExpress.XtraEditors.TileItemElement tileItemElement2 = new DevExpress.XtraEditors.TileItemElement();
+ DevExpress.XtraEditors.TileItemElement tileItemElement3 = new DevExpress.XtraEditors.TileItemElement();
+ DevExpress.XtraEditors.TileItemElement tileItemElement4 = new DevExpress.XtraEditors.TileItemElement();
+ this.tileBar = new DevExpress.XtraBars.Navigation.TileBar();
+ this.tileBarGroupTables = new DevExpress.XtraBars.Navigation.TileBarGroup();
+ this.tileBarItem2 = new DevExpress.XtraBars.Navigation.TileBarItem();
+ this.customersTileBarItem = new DevExpress.XtraBars.Navigation.TileBarItem();
+ this.tileBarItem1 = new DevExpress.XtraBars.Navigation.TileBarItem();
+ this.tileBarItem3 = new DevExpress.XtraBars.Navigation.TileBarItem();
+ this.navigationFrame = new DevExpress.XtraBars.Navigation.NavigationFrame();
+ this.employeesNavigationPage = new DevExpress.XtraBars.Navigation.NavigationPage();
+ this.groupControl3 = new DevExpress.XtraEditors.GroupControl();
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.simpleButton5 = new DevExpress.XtraEditors.SimpleButton();
+ this.chk모든상품적용 = new DevExpress.XtraEditors.CheckEdit();
+ this.toolbarFormManager1 = new DevExpress.XtraBars.ToolbarForm.ToolbarFormManager(this.components);
+ this.barDockControlTop = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlRight = new DevExpress.XtraBars.BarDockControl();
+ this.chk송출금지무시 = new DevExpress.XtraEditors.CheckEdit();
+ this.labelControl5 = new DevExpress.XtraEditors.LabelControl();
+ this.lblGroupAliasName = new DevExpress.XtraEditors.LabelControl();
+ this.pictureEdit1 = new DevExpress.XtraEditors.PictureEdit();
+ this.labelControl28 = new DevExpress.XtraEditors.LabelControl();
+ this.timeSpanRepeat = new DevExpress.XtraEditors.TimeSpanEdit();
+ this.labelControl25 = new DevExpress.XtraEditors.LabelControl();
+ this.simpleButton1 = new DevExpress.XtraEditors.SimpleButton();
+ this.labelControl17 = new DevExpress.XtraEditors.LabelControl();
+ this.cmbSceneGroup = new DevExpress.XtraEditors.ComboBoxEdit();
+ this.chkUseTapeTime = new DevExpress.XtraEditors.CheckEdit();
+ this.simpleButton2 = new DevExpress.XtraEditors.SimpleButton();
+ this.simpleButton9 = new DevExpress.XtraEditors.SimpleButton();
+ this.textEdit3 = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl31 = new DevExpress.XtraEditors.LabelControl();
+ this.timeSpanEdit1 = new DevExpress.XtraEditors.TimeSpanEdit();
+ this.labelControl30 = new DevExpress.XtraEditors.LabelControl();
+ this.timeEdit1 = new DevExpress.XtraEditors.TimeEdit();
+ this.simpleButton7 = new DevExpress.XtraEditors.SimpleButton();
+ this.textEdit1 = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl35 = new DevExpress.XtraEditors.LabelControl();
+ this.textEdit2 = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl46 = new DevExpress.XtraEditors.LabelControl();
+ this.timeSpanEdit5 = new DevExpress.XtraEditors.TimeSpanEdit();
+ this.listBoxControl5 = new DevExpress.XtraEditors.ListBoxControl();
+ this.labelControl47 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl27 = new DevExpress.XtraEditors.LabelControl();
+ this.textEdit8 = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl9 = new DevExpress.XtraEditors.LabelControl();
+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
+ this.labelControl37 = new DevExpress.XtraEditors.LabelControl();
+ this.cmbSceneSchedule = new DevExpress.XtraEditors.ComboBoxEdit();
+ this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
+ this.simpleButton3 = new DevExpress.XtraEditors.SimpleButton();
+ this.cmbScheduleSelectedLayer = new DevExpress.XtraEditors.ComboBoxEdit();
+ this.simpleButton8 = new DevExpress.XtraEditors.SimpleButton();
+ this.richTextBox1 = new System.Windows.Forms.RichTextBox();
+ this.defaultToolTipController1 = new DevExpress.Utils.DefaultToolTipController(this.components);
+ this.customersNavigationPage = new DevExpress.XtraBars.Navigation.NavigationPage();
+ this.xtraTabControl1 = new DevExpress.XtraTab.XtraTabControl();
+ this.xtraTabPage1 = new DevExpress.XtraTab.XtraTabPage();
+ this.groupControl1 = new DevExpress.XtraEditors.GroupControl();
+ this.btnSceneRemoveAll = new DevExpress.XtraEditors.SimpleButton();
+ this.txtThumbnailFrame = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl15 = new DevExpress.XtraEditors.LabelControl();
+ this.btnThumbnailSceneListRefresh = new DevExpress.XtraEditors.SimpleButton();
+ this.simpleButton4 = new DevExpress.XtraEditors.SimpleButton();
+ this.txtGroupAliasName = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl36 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl16 = new DevExpress.XtraEditors.LabelControl();
+ this.comboBoxEdit1 = new DevExpress.XtraEditors.ComboBoxEdit();
+ this.labelControl24 = new DevExpress.XtraEditors.LabelControl();
+ this.cmbSceneListGroup = new DevExpress.XtraEditors.ComboBoxEdit();
+ this.labelControl29 = new DevExpress.XtraEditors.LabelControl();
+ this.btnVariableListDel = new DevExpress.XtraEditors.SimpleButton();
+ this.btnVariableListAdd = new DevExpress.XtraEditors.SimpleButton();
+ this.txtVariableListText = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl44 = new DevExpress.XtraEditors.LabelControl();
+ this.txtVariableListTag = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl43 = new DevExpress.XtraEditors.LabelControl();
+ this.listBoxControl2 = new DevExpress.XtraEditors.ListBoxControl();
+ this.labelControl42 = new DevExpress.XtraEditors.LabelControl();
+ this.btnSceneAdd = new DevExpress.XtraEditors.SimpleButton();
+ this.labelControl41 = new DevExpress.XtraEditors.LabelControl();
+ this.txtSceneListTime = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl10 = new DevExpress.XtraEditors.LabelControl();
+ this.txtSceneListPath = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl4 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl12 = new DevExpress.XtraEditors.LabelControl();
+ this.btnSceneRemove = new DevExpress.XtraEditors.SimpleButton();
+ this.txtSceneListName = new DevExpress.XtraEditors.TextEdit();
+ this.btnSceneLoad = new DevExpress.XtraEditors.SimpleButton();
+ this.labelControl14 = new DevExpress.XtraEditors.LabelControl();
+ this.pictureBoxThumbnailSceneList = new System.Windows.Forms.PictureBox();
+ this.listBoxControl1 = new DevExpress.XtraEditors.ListBoxControl();
+ this.cmbSceneListLayer = new DevExpress.XtraEditors.ComboBoxEdit();
+ this.customersLabelControl = new DevExpress.XtraEditors.LabelControl();
+ this.navigationPage2 = new DevExpress.XtraBars.Navigation.NavigationPage();
+ this.groupControl2 = new DevExpress.XtraEditors.GroupControl();
+ this.txtLog = new System.Windows.Forms.RichTextBox();
+ this.groupControl13 = new DevExpress.XtraEditors.GroupControl();
+ this.lbl송출무시금지글자색 = new DevExpress.XtraEditors.LabelControl();
+ this.lbl송출무시금지배경색 = new DevExpress.XtraEditors.LabelControl();
+ this.label15 = new System.Windows.Forms.Label();
+ this.label14 = new System.Windows.Forms.Label();
+ this.comboBoxEdit2 = new DevExpress.XtraEditors.ComboBoxEdit();
+ this.lbl선택라인상태글자색 = new DevExpress.XtraEditors.LabelControl();
+ this.lbl선택라인상태배경색 = new DevExpress.XtraEditors.LabelControl();
+ this.label13 = new System.Windows.Forms.Label();
+ this.lbl선택라인종류글자색 = new DevExpress.XtraEditors.LabelControl();
+ this.lbl선택라인종류배경색 = new DevExpress.XtraEditors.LabelControl();
+ this.label12 = new System.Windows.Forms.Label();
+ this.lbl종류송출글자색 = new DevExpress.XtraEditors.LabelControl();
+ this.lbl종류송출배경색 = new DevExpress.XtraEditors.LabelControl();
+ this.label10 = new System.Windows.Forms.Label();
+ this.lbl종류스케쥴글자색 = new DevExpress.XtraEditors.LabelControl();
+ this.lbl종류스케쥴배경색 = new DevExpress.XtraEditors.LabelControl();
+ this.label11 = new System.Windows.Forms.Label();
+ this.lblNEXT송출글자색 = new DevExpress.XtraEditors.LabelControl();
+ this.lblNEXT송출배경색 = new DevExpress.XtraEditors.LabelControl();
+ this.label9 = new System.Windows.Forms.Label();
+ this.lbl완료상태글자색 = new DevExpress.XtraEditors.LabelControl();
+ this.lbl완료상태배경색 = new DevExpress.XtraEditors.LabelControl();
+ this.label8 = new System.Windows.Forms.Label();
+ this.lbl완료송출글자색 = new DevExpress.XtraEditors.LabelControl();
+ this.lbl완료송출배경색 = new DevExpress.XtraEditors.LabelControl();
+ this.label7 = new System.Windows.Forms.Label();
+ this.lblNEXT상태글자색 = new DevExpress.XtraEditors.LabelControl();
+ this.lblNEXT상태배경색 = new DevExpress.XtraEditors.LabelControl();
+ this.lblNEXT스케쥴글자색 = new DevExpress.XtraEditors.LabelControl();
+ this.lblNEXT스케쥴배경색 = new DevExpress.XtraEditors.LabelControl();
+ this.label5 = new System.Windows.Forms.Label();
+ this.label6 = new System.Windows.Forms.Label();
+ this.lbl선택라인글자색 = new DevExpress.XtraEditors.LabelControl();
+ this.lbl선택라인배경색 = new DevExpress.XtraEditors.LabelControl();
+ this.lblOnAir상태글자색 = new DevExpress.XtraEditors.LabelControl();
+ this.lblOnAir상태배경색 = new DevExpress.XtraEditors.LabelControl();
+ this.lblOnAir송출글자색 = new DevExpress.XtraEditors.LabelControl();
+ this.lblOnAir송출배경색 = new DevExpress.XtraEditors.LabelControl();
+ this.lblOnAir스케쥴글자색 = new DevExpress.XtraEditors.LabelControl();
+ this.lblOnAir스케쥴배경색 = new DevExpress.XtraEditors.LabelControl();
+ this.lbl완료스케쥴글자색 = new DevExpress.XtraEditors.LabelControl();
+ this.lbl완료스케쥴배경색 = new DevExpress.XtraEditors.LabelControl();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.labelControl92 = new DevExpress.XtraEditors.LabelControl();
+ this.label69 = new System.Windows.Forms.Label();
+ this.label73 = new System.Windows.Forms.Label();
+ this.label61 = new System.Windows.Forms.Label();
+ this.groupControl6 = new DevExpress.XtraEditors.GroupControl();
+ this.labelControl45 = new DevExpress.XtraEditors.LabelControl();
+ this.btnTimeGap1mm = new DevExpress.XtraEditors.SimpleButton();
+ this.btnTimeGap1m = new DevExpress.XtraEditors.SimpleButton();
+ this.txtTimeGap = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl40 = new DevExpress.XtraEditors.LabelControl();
+ this.btnTimeGap1sm = new DevExpress.XtraEditors.SimpleButton();
+ this.btnTimeGap1nm = new DevExpress.XtraEditors.SimpleButton();
+ this.btnTimeGap1s = new DevExpress.XtraEditors.SimpleButton();
+ this.btnTimeGap1n = new DevExpress.XtraEditors.SimpleButton();
+ this.labelControl39 = new DevExpress.XtraEditors.LabelControl();
+ this.groupBoxAdminOnly = new System.Windows.Forms.GroupBox();
+ this.toggleSwitchChannel = new DevExpress.XtraEditors.ToggleSwitch();
+ this.lblSwitchChannel = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl23 = new DevExpress.XtraEditors.LabelControl();
+ this.lblAutoSync = new DevExpress.XtraEditors.LabelControl();
+ this.toggleSwitchAutoSync = new DevExpress.XtraEditors.ToggleSwitch();
+ this.lbl수정모드 = new DevExpress.XtraEditors.LabelControl();
+ this.lblDoneDisplayInvisible = new DevExpress.XtraEditors.LabelControl();
+ this.toggleSwitch수정모드 = new DevExpress.XtraEditors.ToggleSwitch();
+ this.toggleSwitchDone송출보지않기 = new DevExpress.XtraEditors.ToggleSwitch();
+ this.timeSpanEditForbidEnd = new DevExpress.XtraEditors.TimeSpanEdit();
+ this.labelControl11 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl13 = new DevExpress.XtraEditors.LabelControl();
+ this.timeSpanEditForbidStart = new DevExpress.XtraEditors.TimeSpanEdit();
+ this.labelControl8 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl6 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl7 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl34 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl33 = new DevExpress.XtraEditors.LabelControl();
+ this.txtDissolveTime = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl22 = new DevExpress.XtraEditors.LabelControl();
+ this.btnSettingTornado = new DevExpress.XtraEditors.SimpleButton();
+ this.labelControl26 = new DevExpress.XtraEditors.LabelControl();
+ this.txtDBIP = new DevExpress.XtraEditors.TextEdit();
+ this.fluentDesignFormContainer1 = new DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormContainer();
+ this.navigationPage1 = new DevExpress.XtraBars.Navigation.NavigationPage();
+ this.groupControl5 = new DevExpress.XtraEditors.GroupControl();
+ this.labelControl21 = new DevExpress.XtraEditors.LabelControl();
+ this.btnUserRemove = new DevExpress.XtraEditors.SimpleButton();
+ this.listBoxControlUsers = new DevExpress.XtraEditors.ListBoxControl();
+ this.btnUserAdd = new DevExpress.XtraEditors.SimpleButton();
+ this.txtPassWord2 = new DevExpress.XtraEditors.TextEdit();
+ this.txtPassWord1 = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl20 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl19 = new DevExpress.XtraEditors.LabelControl();
+ this.txtUserID = new DevExpress.XtraEditors.TextEdit();
+ this.labelControl18 = new DevExpress.XtraEditors.LabelControl();
+ this.gridControlSchedule = new DevExpress.XtraGrid.GridControl();
+ this.gridViewSchedule = new DevExpress.XtraGrid.Views.Grid.GridView();
+ this.employeesLabelControl = new DevExpress.XtraEditors.LabelControl();
+ this.gaugeControl1 = new DevExpress.XtraGauges.Win.GaugeControl();
+ this.digitalGauge1 = new DevExpress.XtraGauges.Win.Gauges.Digital.DigitalGauge();
+ this.digitalBackgroundLayerComponent1 = new DevExpress.XtraGauges.Win.Gauges.Digital.DigitalBackgroundLayerComponent();
+ this.timerClock = new System.Windows.Forms.Timer(this.components);
+ this.toolbarFormControl1 = new DevExpress.XtraBars.ToolbarForm.ToolbarFormControl();
+ this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
+ this.lblIsAutoDisplaying = new DevExpress.XtraEditors.LabelControl();
+ this.toggleSwitch1 = new DevExpress.XtraEditors.ToggleSwitch();
+ this.btnScheduleCopy = new DevExpress.XtraEditors.SimpleButton();
+ this.timeEdit2 = new DevExpress.XtraEditors.DateEdit();
+ this.btnSyncData = new DevExpress.XtraEditors.SimpleButton();
+ this.timerSync = new System.Windows.Forms.Timer(this.components);
+ this.picTornado = new DevExpress.XtraEditors.PictureEdit();
+ this.lblConnectionTornado2 = new DevExpress.XtraEditors.LabelControl();
+ this.lblisCable = new DevExpress.XtraEditors.LabelControl();
+ this.btnDBSave = new DevExpress.XtraEditors.SimpleButton();
+ this.btnDBLoad = new DevExpress.XtraEditors.SimpleButton();
+ this.labelControl32 = new DevExpress.XtraEditors.LabelControl();
+ this.comboBoxEdit3 = new DevExpress.XtraEditors.ComboBoxEdit();
+ this.labelControl38 = new DevExpress.XtraEditors.LabelControl();
+ this.btnDBCrossLoad = new DevExpress.XtraEditors.SimpleButton();
+ ((System.ComponentModel.ISupportInitialize)(this.navigationFrame)).BeginInit();
+ this.navigationFrame.SuspendLayout();
+ this.employeesNavigationPage.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl3)).BeginInit();
+ this.groupControl3.SuspendLayout();
+ this.panel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.chk모든상품적용.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.toolbarFormManager1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.chk송출금지무시.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureEdit1.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeSpanRepeat.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cmbSceneGroup.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.chkUseTapeTime.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit3.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeSpanEdit1.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeEdit1.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit1.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit2.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeSpanEdit5.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.listBoxControl5)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit8.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cmbSceneSchedule.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cmbScheduleSelectedLayer.Properties)).BeginInit();
+ this.customersNavigationPage.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.xtraTabControl1)).BeginInit();
+ this.xtraTabControl1.SuspendLayout();
+ this.xtraTabPage1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl1)).BeginInit();
+ this.groupControl1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.txtThumbnailFrame.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtGroupAliasName.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.comboBoxEdit1.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cmbSceneListGroup.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtVariableListText.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtVariableListTag.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.listBoxControl2)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtSceneListTime.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtSceneListPath.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtSceneListName.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxThumbnailSceneList)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.listBoxControl1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cmbSceneListLayer.Properties)).BeginInit();
+ this.navigationPage2.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl2)).BeginInit();
+ this.groupControl2.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl13)).BeginInit();
+ this.groupControl13.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.comboBoxEdit2.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl6)).BeginInit();
+ this.groupControl6.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.txtTimeGap.Properties)).BeginInit();
+ this.groupBoxAdminOnly.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.toggleSwitchChannel.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.toggleSwitchAutoSync.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.toggleSwitch수정모드.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.toggleSwitchDone송출보지않기.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeSpanEditForbidEnd.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeSpanEditForbidStart.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtDissolveTime.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtDBIP.Properties)).BeginInit();
+ this.navigationPage1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl5)).BeginInit();
+ this.groupControl5.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.listBoxControlUsers)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtPassWord2.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtPassWord1.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtUserID.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.gridControlSchedule)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.gridViewSchedule)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.digitalGauge1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.digitalBackgroundLayerComponent1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.toolbarFormControl1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.toggleSwitch1.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeEdit2.Properties.CalendarTimeProperties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeEdit2.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.picTornado.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.comboBoxEdit3.Properties)).BeginInit();
+ this.SuspendLayout();
+ //
+ // tileBar
+ //
+ this.tileBar.AllowGlyphSkinning = true;
+ this.tileBar.AllowSelectedItem = true;
+ this.tileBar.AppearanceGroupText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(140)))), ((int)(((byte)(140)))));
+ this.tileBar.AppearanceGroupText.Options.UseForeColor = true;
+ this.tileBar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(78)))), ((int)(((byte)(89)))), ((int)(((byte)(120)))));
+ this.tileBar.Dock = System.Windows.Forms.DockStyle.Top;
+ this.tileBar.DropDownButtonWidth = 30;
+ this.tileBar.DropDownOptions.BeakColor = System.Drawing.Color.Empty;
+ this.tileBar.Groups.Add(this.tileBarGroupTables);
+ this.tileBar.IndentBetweenGroups = 10;
+ this.tileBar.IndentBetweenItems = 10;
+ this.tileBar.ItemPadding = new System.Windows.Forms.Padding(8, 6, 12, 6);
+ this.tileBar.Location = new System.Drawing.Point(0, 31);
+ this.tileBar.Margin = new System.Windows.Forms.Padding(5);
+ this.tileBar.MaxId = 10;
+ this.tileBar.MaximumSize = new System.Drawing.Size(0, 100);
+ this.tileBar.MinimumSize = new System.Drawing.Size(117, 100);
+ this.tileBar.Name = "tileBar";
+ this.tileBar.Padding = new System.Windows.Forms.Padding(5);
+ this.tileBar.ScrollMode = DevExpress.XtraEditors.TileControlScrollMode.None;
+ this.tileBar.SelectionBorderWidth = 2;
+ this.tileBar.SelectionColorMode = DevExpress.XtraBars.Navigation.SelectionColorMode.UseItemBackColor;
+ this.tileBar.ShowGroupText = false;
+ this.tileBar.Size = new System.Drawing.Size(1918, 100);
+ this.tileBar.TabIndex = 1;
+ this.tileBar.Text = "tileBar";
+ this.tileBar.WideTileWidth = 150;
+ this.tileBar.SelectedItemChanged += new DevExpress.XtraEditors.TileItemClickEventHandler(this.tileBar_SelectedItemChanged);
+ //
+ // tileBarGroupTables
+ //
+ this.tileBarGroupTables.Items.Add(this.tileBarItem2);
+ this.tileBarGroupTables.Items.Add(this.customersTileBarItem);
+ this.tileBarGroupTables.Items.Add(this.tileBarItem1);
+ this.tileBarGroupTables.Items.Add(this.tileBarItem3);
+ this.tileBarGroupTables.Name = "tileBarGroupTables";
+ this.tileBarGroupTables.Text = "TABLES";
+ //
+ // tileBarItem2
+ //
+ this.tileBarItem2.AppearanceItem.Normal.Font = new System.Drawing.Font("맑은 고딕", 9.75F);
+ this.tileBarItem2.AppearanceItem.Normal.Options.UseFont = true;
+ this.tileBarItem2.DropDownOptions.BeakColor = System.Drawing.Color.Empty;
+ tileItemElement1.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("resource.SvgImage")));
+ tileItemElement1.Text = "스케쥴 변경";
+ this.tileBarItem2.Elements.Add(tileItemElement1);
+ this.tileBarItem2.Id = 5;
+ this.tileBarItem2.ItemSize = DevExpress.XtraBars.Navigation.TileBarItemSize.Wide;
+ this.tileBarItem2.Name = "tileBarItem2";
+ //
+ // customersTileBarItem
+ //
+ this.customersTileBarItem.AppearanceItem.Normal.Font = new System.Drawing.Font("맑은 고딕", 9.75F);
+ this.customersTileBarItem.AppearanceItem.Normal.Options.UseFont = true;
+ this.customersTileBarItem.DropDownOptions.BeakColor = System.Drawing.Color.Empty;
+ tileItemElement2.ImageOptions.ImageUri.Uri = "Cube;Size32x32;GrayScaled";
+ tileItemElement2.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("resource.SvgImage1")));
+ tileItemElement2.Text = "디자인 편성";
+ this.customersTileBarItem.Elements.Add(tileItemElement2);
+ this.customersTileBarItem.Id = 1;
+ this.customersTileBarItem.ItemSize = DevExpress.XtraBars.Navigation.TileBarItemSize.Wide;
+ this.customersTileBarItem.Name = "customersTileBarItem";
+ //
+ // tileBarItem1
+ //
+ this.tileBarItem1.AppearanceItem.Normal.Font = new System.Drawing.Font("맑은 고딕", 9.75F);
+ this.tileBarItem1.AppearanceItem.Normal.Options.UseFont = true;
+ this.tileBarItem1.DropDownOptions.BeakColor = System.Drawing.Color.Empty;
+ tileItemElement3.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("resource.SvgImage2")));
+ tileItemElement3.Text = "옵션";
+ this.tileBarItem1.Elements.Add(tileItemElement3);
+ this.tileBarItem1.Id = 2;
+ this.tileBarItem1.ItemSize = DevExpress.XtraBars.Navigation.TileBarItemSize.Wide;
+ this.tileBarItem1.Name = "tileBarItem1";
+ //
+ // tileBarItem3
+ //
+ this.tileBarItem3.DropDownOptions.BeakColor = System.Drawing.Color.Empty;
+ tileItemElement4.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("resource.SvgImage3")));
+ tileItemElement4.Text = "계정관리";
+ this.tileBarItem3.Elements.Add(tileItemElement4);
+ this.tileBarItem3.Id = 9;
+ this.tileBarItem3.ItemSize = DevExpress.XtraBars.Navigation.TileBarItemSize.Wide;
+ this.tileBarItem3.Name = "tileBarItem3";
+ //
+ // navigationFrame
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.navigationFrame, DevExpress.Utils.DefaultBoolean.Default);
+ this.navigationFrame.AllowTransitionAnimation = DevExpress.Utils.DefaultBoolean.False;
+ this.navigationFrame.Controls.Add(this.employeesNavigationPage);
+ this.navigationFrame.Controls.Add(this.customersNavigationPage);
+ this.navigationFrame.Controls.Add(this.navigationPage2);
+ this.navigationFrame.Controls.Add(this.navigationPage1);
+ this.navigationFrame.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.navigationFrame.Location = new System.Drawing.Point(0, 131);
+ this.navigationFrame.Margin = new System.Windows.Forms.Padding(5);
+ this.navigationFrame.Name = "navigationFrame";
+ this.navigationFrame.Pages.AddRange(new DevExpress.XtraBars.Navigation.NavigationPageBase[] {
+ this.employeesNavigationPage,
+ this.customersNavigationPage,
+ this.navigationPage2,
+ this.navigationPage1});
+ this.navigationFrame.SelectedPage = this.employeesNavigationPage;
+ this.navigationFrame.Size = new System.Drawing.Size(1918, 917);
+ this.navigationFrame.TabIndex = 0;
+ this.navigationFrame.Text = "navigationFrame";
+ //
+ // employeesNavigationPage
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.employeesNavigationPage, DevExpress.Utils.DefaultBoolean.Default);
+ this.employeesNavigationPage.Controls.Add(this.groupControl3);
+ this.employeesNavigationPage.Controls.Add(this.gridControlSchedule);
+ this.employeesNavigationPage.Controls.Add(this.employeesLabelControl);
+ this.employeesNavigationPage.Name = "employeesNavigationPage";
+ this.employeesNavigationPage.Size = new System.Drawing.Size(1918, 917);
+ //
+ // groupControl3
+ //
+ this.groupControl3.AppearanceCaption.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.groupControl3.AppearanceCaption.Options.UseFont = true;
+ this.groupControl3.Controls.Add(this.panel1);
+ this.groupControl3.Controls.Add(this.richTextBox1);
+ this.groupControl3.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.groupControl3.Location = new System.Drawing.Point(1383, 0);
+ this.groupControl3.Name = "groupControl3";
+ this.groupControl3.Size = new System.Drawing.Size(535, 917);
+ this.groupControl3.TabIndex = 566;
+ this.groupControl3.Text = "groupControl3";
+ this.groupControl3.ToolTipController = this.defaultToolTipController1.DefaultController;
+ //
+ // panel1
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.panel1, DevExpress.Utils.DefaultBoolean.Default);
+ this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
+ this.panel1.Controls.Add(this.simpleButton5);
+ this.panel1.Controls.Add(this.chk모든상품적용);
+ this.panel1.Controls.Add(this.chk송출금지무시);
+ this.panel1.Controls.Add(this.labelControl5);
+ this.panel1.Controls.Add(this.lblGroupAliasName);
+ this.panel1.Controls.Add(this.pictureEdit1);
+ this.panel1.Controls.Add(this.labelControl28);
+ this.panel1.Controls.Add(this.timeSpanRepeat);
+ this.panel1.Controls.Add(this.labelControl25);
+ this.panel1.Controls.Add(this.simpleButton1);
+ this.panel1.Controls.Add(this.labelControl17);
+ this.panel1.Controls.Add(this.cmbSceneGroup);
+ this.panel1.Controls.Add(this.chkUseTapeTime);
+ this.panel1.Controls.Add(this.simpleButton2);
+ this.panel1.Controls.Add(this.simpleButton9);
+ this.panel1.Controls.Add(this.textEdit3);
+ this.panel1.Controls.Add(this.labelControl31);
+ this.panel1.Controls.Add(this.timeSpanEdit1);
+ this.panel1.Controls.Add(this.labelControl30);
+ this.panel1.Controls.Add(this.timeEdit1);
+ this.panel1.Controls.Add(this.simpleButton7);
+ this.panel1.Controls.Add(this.textEdit1);
+ this.panel1.Controls.Add(this.labelControl2);
+ this.panel1.Controls.Add(this.labelControl35);
+ this.panel1.Controls.Add(this.textEdit2);
+ this.panel1.Controls.Add(this.labelControl1);
+ this.panel1.Controls.Add(this.labelControl46);
+ this.panel1.Controls.Add(this.timeSpanEdit5);
+ this.panel1.Controls.Add(this.listBoxControl5);
+ this.panel1.Controls.Add(this.labelControl47);
+ this.panel1.Controls.Add(this.labelControl27);
+ this.panel1.Controls.Add(this.textEdit8);
+ this.panel1.Controls.Add(this.labelControl9);
+ this.panel1.Controls.Add(this.pictureBox1);
+ this.panel1.Controls.Add(this.labelControl37);
+ this.panel1.Controls.Add(this.cmbSceneSchedule);
+ this.panel1.Controls.Add(this.labelControl3);
+ this.panel1.Controls.Add(this.simpleButton3);
+ this.panel1.Controls.Add(this.cmbScheduleSelectedLayer);
+ this.panel1.Controls.Add(this.simpleButton8);
+ this.panel1.Location = new System.Drawing.Point(7, 32);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(521, 876);
+ this.panel1.TabIndex = 565;
+ //
+ // simpleButton5
+ //
+ this.simpleButton5.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.simpleButton5.Appearance.Options.UseFont = true;
+ this.simpleButton5.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton5.ImageOptions.SvgImage")));
+ this.simpleButton5.Location = new System.Drawing.Point(8, 207);
+ this.simpleButton5.Name = "simpleButton5";
+ this.simpleButton5.Size = new System.Drawing.Size(135, 50);
+ this.simpleButton5.TabIndex = 1102;
+ this.simpleButton5.Text = "즉시 송출";
+ this.simpleButton5.Click += new System.EventHandler(this.simpleButton5_Click);
+ //
+ // chk모든상품적용
+ //
+ this.chk모든상품적용.Location = new System.Drawing.Point(38, 61);
+ this.chk모든상품적용.MenuManager = this.toolbarFormManager1;
+ this.chk모든상품적용.Name = "chk모든상품적용";
+ this.chk모든상품적용.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.chk모든상품적용.Properties.Appearance.ForeColor = System.Drawing.Color.Red;
+ this.chk모든상품적용.Properties.Appearance.Options.UseFont = true;
+ this.chk모든상품적용.Properties.Appearance.Options.UseForeColor = true;
+ this.chk모든상품적용.Properties.Caption = "모든 상품 적용";
+ this.chk모든상품적용.Size = new System.Drawing.Size(205, 29);
+ this.chk모든상품적용.TabIndex = 1101;
+ this.chk모든상품적용.CheckedChanged += new System.EventHandler(this.chkUseTapeTime_CheckedChanged);
+ //
+ // toolbarFormManager1
+ //
+ this.toolbarFormManager1.DockControls.Add(this.barDockControlTop);
+ this.toolbarFormManager1.DockControls.Add(this.barDockControlBottom);
+ this.toolbarFormManager1.DockControls.Add(this.barDockControlLeft);
+ this.toolbarFormManager1.DockControls.Add(this.barDockControlRight);
+ this.toolbarFormManager1.Form = this;
+ this.toolbarFormManager1.MaxItemId = 1;
+ //
+ // barDockControlTop
+ //
+ this.barDockControlTop.CausesValidation = false;
+ this.barDockControlTop.Dock = System.Windows.Forms.DockStyle.Top;
+ this.barDockControlTop.Location = new System.Drawing.Point(0, 31);
+ this.barDockControlTop.Manager = this.toolbarFormManager1;
+ this.barDockControlTop.Size = new System.Drawing.Size(1918, 0);
+ //
+ // barDockControlBottom
+ //
+ this.barDockControlBottom.CausesValidation = false;
+ this.barDockControlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.barDockControlBottom.Location = new System.Drawing.Point(0, 1048);
+ this.barDockControlBottom.Manager = this.toolbarFormManager1;
+ this.barDockControlBottom.Size = new System.Drawing.Size(1918, 0);
+ //
+ // barDockControlLeft
+ //
+ this.barDockControlLeft.CausesValidation = false;
+ this.barDockControlLeft.Dock = System.Windows.Forms.DockStyle.Left;
+ this.barDockControlLeft.Location = new System.Drawing.Point(0, 31);
+ this.barDockControlLeft.Manager = this.toolbarFormManager1;
+ this.barDockControlLeft.Size = new System.Drawing.Size(0, 1017);
+ //
+ // barDockControlRight
+ //
+ this.barDockControlRight.CausesValidation = false;
+ this.barDockControlRight.Dock = System.Windows.Forms.DockStyle.Right;
+ this.barDockControlRight.Location = new System.Drawing.Point(1918, 31);
+ this.barDockControlRight.Manager = this.toolbarFormManager1;
+ this.barDockControlRight.Size = new System.Drawing.Size(0, 1017);
+ //
+ // chk송출금지무시
+ //
+ this.chk송출금지무시.Location = new System.Drawing.Point(38, 96);
+ this.chk송출금지무시.MenuManager = this.toolbarFormManager1;
+ this.chk송출금지무시.Name = "chk송출금지무시";
+ this.chk송출금지무시.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.chk송출금지무시.Properties.Appearance.ForeColor = System.Drawing.Color.Red;
+ this.chk송출금지무시.Properties.Appearance.Options.UseFont = true;
+ this.chk송출금지무시.Properties.Appearance.Options.UseForeColor = true;
+ this.chk송출금지무시.Properties.Caption = "송출 금지 시간 무시";
+ this.chk송출금지무시.Size = new System.Drawing.Size(205, 29);
+ this.chk송출금지무시.TabIndex = 1100;
+ this.chk송출금지무시.CheckedChanged += new System.EventHandler(this.chkUseTapeTime_CheckedChanged);
+ //
+ // labelControl5
+ //
+ this.labelControl5.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl5.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.labelControl5.Appearance.Options.UseFont = true;
+ this.labelControl5.Appearance.Options.UseForeColor = true;
+ this.labelControl5.Location = new System.Drawing.Point(50, 266);
+ this.labelControl5.Name = "labelControl5";
+ this.labelControl5.Size = new System.Drawing.Size(102, 25);
+ this.labelControl5.TabIndex = 1099;
+ this.labelControl5.Text = "Group 별칭";
+ //
+ // lblGroupAliasName
+ //
+ this.lblGroupAliasName.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.lblGroupAliasName.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.lblGroupAliasName.Appearance.Options.UseFont = true;
+ this.lblGroupAliasName.Appearance.Options.UseForeColor = true;
+ this.lblGroupAliasName.Location = new System.Drawing.Point(176, 266);
+ this.lblGroupAliasName.Name = "lblGroupAliasName";
+ this.lblGroupAliasName.Size = new System.Drawing.Size(121, 25);
+ this.lblGroupAliasName.TabIndex = 1098;
+ this.lblGroupAliasName.Text = "Group명 별칭";
+ //
+ // pictureEdit1
+ //
+ this.pictureEdit1.Cursor = System.Windows.Forms.Cursors.Default;
+ this.pictureEdit1.EditValue = ((object)(resources.GetObject("pictureEdit1.EditValue")));
+ this.pictureEdit1.Location = new System.Drawing.Point(10, 338);
+ this.pictureEdit1.Name = "pictureEdit1";
+ this.pictureEdit1.Properties.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
+ this.pictureEdit1.Properties.Appearance.Options.UseBackColor = true;
+ this.pictureEdit1.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
+ this.pictureEdit1.Properties.ShowCameraMenuItem = DevExpress.XtraEditors.Controls.CameraMenuItemVisibility.Auto;
+ this.pictureEdit1.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Stretch;
+ this.pictureEdit1.Size = new System.Drawing.Size(37, 29);
+ this.pictureEdit1.TabIndex = 1097;
+ this.pictureEdit1.ToolTip = "리스트 Refresh";
+ this.pictureEdit1.Click += new System.EventHandler(this.pictureEdit1_Click);
+ //
+ // labelControl28
+ //
+ this.labelControl28.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl28.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.labelControl28.Appearance.Options.UseFont = true;
+ this.labelControl28.Appearance.Options.UseForeColor = true;
+ this.labelControl28.Location = new System.Drawing.Point(459, 61);
+ this.labelControl28.Name = "labelControl28";
+ this.labelControl28.Size = new System.Drawing.Size(38, 25);
+ this.labelControl28.TabIndex = 1091;
+ this.labelControl28.Text = "주기";
+ //
+ // timeSpanRepeat
+ //
+ this.timeSpanRepeat.EditValue = System.TimeSpan.Parse("00:00:00");
+ this.timeSpanRepeat.Location = new System.Drawing.Point(354, 58);
+ this.timeSpanRepeat.MenuManager = this.toolbarFormManager1;
+ this.timeSpanRepeat.Name = "timeSpanRepeat";
+ this.timeSpanRepeat.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.timeSpanRepeat.Properties.Appearance.Options.UseFont = true;
+ this.timeSpanRepeat.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.timeSpanRepeat.Size = new System.Drawing.Size(99, 32);
+ this.timeSpanRepeat.TabIndex = 1090;
+ this.timeSpanRepeat.EditValueChanged += new System.EventHandler(this.timeSpanRepeat_EditValueChanged);
+ //
+ // labelControl25
+ //
+ this.labelControl25.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl25.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.labelControl25.Appearance.Options.UseFont = true;
+ this.labelControl25.Appearance.Options.UseForeColor = true;
+ this.labelControl25.Location = new System.Drawing.Point(272, 61);
+ this.labelControl25.Name = "labelControl25";
+ this.labelControl25.Size = new System.Drawing.Size(76, 25);
+ this.labelControl25.TabIndex = 1089;
+ this.labelControl25.Text = "반복추가";
+ //
+ // simpleButton1
+ //
+ this.simpleButton1.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.simpleButton1.Appearance.Options.UseFont = true;
+ this.simpleButton1.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton1.ImageOptions.SvgImage")));
+ this.simpleButton1.Location = new System.Drawing.Point(340, 801);
+ this.simpleButton1.Name = "simpleButton1";
+ this.simpleButton1.Size = new System.Drawing.Size(158, 63);
+ this.simpleButton1.TabIndex = 1088;
+ this.simpleButton1.Text = "그룹 삭제";
+ this.simpleButton1.Click += new System.EventHandler(this.simpleButton9_Click);
+ //
+ // labelControl17
+ //
+ this.labelControl17.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl17.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.labelControl17.Appearance.Options.UseFont = true;
+ this.labelControl17.Appearance.Options.UseForeColor = true;
+ this.labelControl17.Location = new System.Drawing.Point(50, 300);
+ this.labelControl17.Name = "labelControl17";
+ this.labelControl17.Size = new System.Drawing.Size(102, 25);
+ this.labelControl17.TabIndex = 1084;
+ this.labelControl17.Text = "Group 변경";
+ //
+ // cmbSceneGroup
+ //
+ this.cmbSceneGroup.Location = new System.Drawing.Point(162, 297);
+ this.cmbSceneGroup.MenuManager = this.toolbarFormManager1;
+ this.cmbSceneGroup.Name = "cmbSceneGroup";
+ this.cmbSceneGroup.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.cmbSceneGroup.Properties.Appearance.Options.UseFont = true;
+ this.cmbSceneGroup.Properties.AppearanceDropDown.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.cmbSceneGroup.Properties.AppearanceDropDown.Options.UseFont = true;
+ this.cmbSceneGroup.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.cmbSceneGroup.Properties.Items.AddRange(new object[] {
+ "Group1",
+ "Group2",
+ "Group3",
+ "Group4",
+ "Group5",
+ "Group6",
+ "Group7",
+ "Group8",
+ "Group9",
+ "Group10",
+ "Group11",
+ "Group12",
+ "Group13",
+ "Group14",
+ "Group15"});
+ this.cmbSceneGroup.Size = new System.Drawing.Size(336, 32);
+ this.cmbSceneGroup.TabIndex = 1085;
+ this.cmbSceneGroup.SelectedIndexChanged += new System.EventHandler(this.cmbSceneGroup_SelectedIndexChanged);
+ //
+ // chkUseTapeTime
+ //
+ this.chkUseTapeTime.Location = new System.Drawing.Point(311, 96);
+ this.chkUseTapeTime.MenuManager = this.toolbarFormManager1;
+ this.chkUseTapeTime.Name = "chkUseTapeTime";
+ this.chkUseTapeTime.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.chkUseTapeTime.Properties.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.chkUseTapeTime.Properties.Appearance.Options.UseFont = true;
+ this.chkUseTapeTime.Properties.Appearance.Options.UseForeColor = true;
+ this.chkUseTapeTime.Properties.Caption = "테잎시간으로 반복";
+ this.chkUseTapeTime.Size = new System.Drawing.Size(186, 29);
+ this.chkUseTapeTime.TabIndex = 1083;
+ this.chkUseTapeTime.CheckedChanged += new System.EventHandler(this.chkUseTapeTime_CheckedChanged);
+ //
+ // simpleButton2
+ //
+ this.simpleButton2.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.simpleButton2.Appearance.Options.UseFont = true;
+ this.simpleButton2.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton2.ImageOptions.SvgImage")));
+ this.simpleButton2.Location = new System.Drawing.Point(149, 207);
+ this.simpleButton2.Name = "simpleButton2";
+ this.simpleButton2.Size = new System.Drawing.Size(135, 50);
+ this.simpleButton2.TabIndex = 1079;
+ this.simpleButton2.Text = "송출 Clear";
+ this.simpleButton2.Click += new System.EventHandler(this.simpleButton2_Click);
+ //
+ // simpleButton9
+ //
+ this.simpleButton9.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.simpleButton9.Appearance.Options.UseFont = true;
+ this.simpleButton9.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton9.ImageOptions.SvgImage")));
+ this.simpleButton9.Location = new System.Drawing.Point(176, 801);
+ this.simpleButton9.Name = "simpleButton9";
+ this.simpleButton9.Size = new System.Drawing.Size(158, 63);
+ this.simpleButton9.TabIndex = 1078;
+ this.simpleButton9.Text = "송출 삭제";
+ this.simpleButton9.Click += new System.EventHandler(this.simpleButton9_Click);
+ //
+ // textEdit3
+ //
+ this.textEdit3.Enabled = false;
+ this.textEdit3.Location = new System.Drawing.Point(108, 8);
+ this.textEdit3.MenuManager = this.toolbarFormManager1;
+ this.textEdit3.Name = "textEdit3";
+ this.textEdit3.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.textEdit3.Properties.Appearance.Options.UseFont = true;
+ this.textEdit3.Size = new System.Drawing.Size(390, 32);
+ this.textEdit3.TabIndex = 1077;
+ //
+ // labelControl31
+ //
+ this.labelControl31.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl31.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.labelControl31.Appearance.Options.UseFont = true;
+ this.labelControl31.Appearance.Options.UseForeColor = true;
+ this.labelControl31.Location = new System.Drawing.Point(38, 11);
+ this.labelControl31.Name = "labelControl31";
+ this.labelControl31.Size = new System.Drawing.Size(57, 25);
+ this.labelControl31.TabIndex = 1076;
+ this.labelControl31.Text = "스케쥴";
+ //
+ // timeSpanEdit1
+ //
+ this.timeSpanEdit1.EditValue = System.TimeSpan.Parse("00:00:00");
+ this.timeSpanEdit1.Location = new System.Drawing.Point(367, 131);
+ this.timeSpanEdit1.MenuManager = this.toolbarFormManager1;
+ this.timeSpanEdit1.Name = "timeSpanEdit1";
+ this.timeSpanEdit1.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.timeSpanEdit1.Properties.Appearance.Options.UseFont = true;
+ this.timeSpanEdit1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.timeSpanEdit1.Size = new System.Drawing.Size(130, 32);
+ this.timeSpanEdit1.TabIndex = 1075;
+ this.timeSpanEdit1.EditValueChanged += new System.EventHandler(this.timeSpanEdit1_EditValueChanged);
+ this.timeSpanEdit1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.timeSpanEdit1_KeyPress);
+ //
+ // labelControl30
+ //
+ this.labelControl30.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl30.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.labelControl30.Appearance.Options.UseFont = true;
+ this.labelControl30.Appearance.Options.UseForeColor = true;
+ this.labelControl30.Location = new System.Drawing.Point(259, 134);
+ this.labelControl30.Name = "labelControl30";
+ this.labelControl30.Size = new System.Drawing.Size(102, 25);
+ this.labelControl30.TabIndex = 1074;
+ this.labelControl30.Text = "스케쥴 기준";
+ //
+ // timeEdit1
+ //
+ this.timeEdit1.EditValue = new System.DateTime(2024, 12, 13, 0, 0, 0, 0);
+ this.timeEdit1.Location = new System.Drawing.Point(367, 169);
+ this.timeEdit1.MenuManager = this.toolbarFormManager1;
+ this.timeEdit1.Name = "timeEdit1";
+ this.timeEdit1.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.timeEdit1.Properties.Appearance.Options.UseFont = true;
+ this.timeEdit1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.timeEdit1.Properties.MaskSettings.Set("mask", "HH:mm:ss");
+ this.timeEdit1.Properties.UseMaskAsDisplayFormat = true;
+ this.timeEdit1.Size = new System.Drawing.Size(130, 32);
+ this.timeEdit1.TabIndex = 567;
+ this.timeEdit1.EditValueChanged += new System.EventHandler(this.timeEdit1_EditValueChanged);
+ this.timeEdit1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.timeEdit1_KeyPress);
+ //
+ // simpleButton7
+ //
+ this.simpleButton7.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.simpleButton7.Appearance.Options.UseFont = true;
+ this.simpleButton7.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton7.ImageOptions.SvgImage")));
+ this.simpleButton7.Location = new System.Drawing.Point(12, 801);
+ this.simpleButton7.Name = "simpleButton7";
+ this.simpleButton7.Size = new System.Drawing.Size(158, 63);
+ this.simpleButton7.TabIndex = 1072;
+ this.simpleButton7.Text = "송출 수정";
+ this.simpleButton7.Click += new System.EventHandler(this.simpleButton7_Click);
+ //
+ // textEdit1
+ //
+ this.textEdit1.Location = new System.Drawing.Point(149, 759);
+ this.textEdit1.MenuManager = this.toolbarFormManager1;
+ this.textEdit1.Name = "textEdit1";
+ this.textEdit1.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.textEdit1.Properties.Appearance.Options.UseFont = true;
+ this.textEdit1.Size = new System.Drawing.Size(349, 32);
+ this.textEdit1.TabIndex = 1049;
+ this.textEdit1.EditValueChanged += new System.EventHandler(this.textEdit1_EditValueChanged);
+ //
+ // labelControl2
+ //
+ this.labelControl2.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl2.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl2.Appearance.Options.UseFont = true;
+ this.labelControl2.Appearance.Options.UseForeColor = true;
+ this.labelControl2.Location = new System.Drawing.Point(79, 762);
+ this.labelControl2.Name = "labelControl2";
+ this.labelControl2.Size = new System.Drawing.Size(57, 25);
+ this.labelControl2.TabIndex = 1048;
+ this.labelControl2.Text = "텍스트";
+ //
+ // labelControl35
+ //
+ this.labelControl35.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl35.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.labelControl35.Appearance.Options.UseFont = true;
+ this.labelControl35.Appearance.Options.UseForeColor = true;
+ this.labelControl35.Location = new System.Drawing.Point(323, 210);
+ this.labelControl35.Name = "labelControl35";
+ this.labelControl35.Size = new System.Drawing.Size(38, 25);
+ this.labelControl35.TabIndex = 369;
+ this.labelControl35.Text = "길이";
+ //
+ // textEdit2
+ //
+ this.textEdit2.Enabled = false;
+ this.textEdit2.Location = new System.Drawing.Point(149, 721);
+ this.textEdit2.MenuManager = this.toolbarFormManager1;
+ this.textEdit2.Name = "textEdit2";
+ this.textEdit2.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.textEdit2.Properties.Appearance.Options.UseFont = true;
+ this.textEdit2.Size = new System.Drawing.Size(349, 32);
+ this.textEdit2.TabIndex = 1047;
+ //
+ // labelControl1
+ //
+ this.labelControl1.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl1.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.labelControl1.Appearance.Options.UseFont = true;
+ this.labelControl1.Appearance.Options.UseForeColor = true;
+ this.labelControl1.Location = new System.Drawing.Point(55, 338);
+ this.labelControl1.Name = "labelControl1";
+ this.labelControl1.Size = new System.Drawing.Size(97, 25);
+ this.labelControl1.TabIndex = 358;
+ this.labelControl1.Text = "Scene 변경";
+ //
+ // labelControl46
+ //
+ this.labelControl46.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl46.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl46.Appearance.Options.UseFont = true;
+ this.labelControl46.Appearance.Options.UseForeColor = true;
+ this.labelControl46.Location = new System.Drawing.Point(79, 724);
+ this.labelControl46.Name = "labelControl46";
+ this.labelControl46.Size = new System.Drawing.Size(57, 25);
+ this.labelControl46.TabIndex = 1046;
+ this.labelControl46.Text = "변수명";
+ //
+ // timeSpanEdit5
+ //
+ this.timeSpanEdit5.EditValue = System.TimeSpan.Parse("00:00:00");
+ this.timeSpanEdit5.Location = new System.Drawing.Point(367, 208);
+ this.timeSpanEdit5.MenuManager = this.toolbarFormManager1;
+ this.timeSpanEdit5.Name = "timeSpanEdit5";
+ this.timeSpanEdit5.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.timeSpanEdit5.Properties.Appearance.Options.UseFont = true;
+ this.timeSpanEdit5.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.timeSpanEdit5.Size = new System.Drawing.Size(130, 32);
+ this.timeSpanEdit5.TabIndex = 368;
+ //
+ // listBoxControl5
+ //
+ this.listBoxControl5.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.listBoxControl5.Appearance.Options.UseFont = true;
+ this.listBoxControl5.Location = new System.Drawing.Point(149, 629);
+ this.listBoxControl5.Name = "listBoxControl5";
+ this.listBoxControl5.Size = new System.Drawing.Size(349, 86);
+ this.listBoxControl5.TabIndex = 1045;
+ this.listBoxControl5.SelectedIndexChanged += new System.EventHandler(this.listBoxControl5_SelectedIndexChanged);
+ //
+ // labelControl47
+ //
+ this.labelControl47.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl47.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl47.Appearance.Options.UseFont = true;
+ this.labelControl47.Appearance.Options.UseForeColor = true;
+ this.labelControl47.Location = new System.Drawing.Point(15, 629);
+ this.labelControl47.Name = "labelControl47";
+ this.labelControl47.Size = new System.Drawing.Size(121, 25);
+ this.labelControl47.TabIndex = 1044;
+ this.labelControl47.Text = "변수명 리스트";
+ //
+ // labelControl27
+ //
+ this.labelControl27.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl27.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.labelControl27.Appearance.Options.UseFont = true;
+ this.labelControl27.Appearance.Options.UseForeColor = true;
+ this.labelControl27.Location = new System.Drawing.Point(10, 134);
+ this.labelControl27.Name = "labelControl27";
+ this.labelControl27.Size = new System.Drawing.Size(76, 25);
+ this.labelControl27.TabIndex = 367;
+ this.labelControl27.Text = "남은시간";
+ //
+ // textEdit8
+ //
+ this.textEdit8.Location = new System.Drawing.Point(113, 131);
+ this.textEdit8.MenuManager = this.toolbarFormManager1;
+ this.textEdit8.Name = "textEdit8";
+ this.textEdit8.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.textEdit8.Properties.Appearance.Options.UseFont = true;
+ this.textEdit8.Size = new System.Drawing.Size(130, 32);
+ this.textEdit8.TabIndex = 1039;
+ //
+ // labelControl9
+ //
+ this.labelControl9.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl9.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.labelControl9.Appearance.Options.UseFont = true;
+ this.labelControl9.Appearance.Options.UseForeColor = true;
+ this.labelControl9.Location = new System.Drawing.Point(95, 373);
+ this.labelControl9.Name = "labelControl9";
+ this.labelControl9.Size = new System.Drawing.Size(57, 25);
+ this.labelControl9.TabIndex = 1038;
+ this.labelControl9.Text = "썸네일";
+ //
+ // pictureBox1
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.pictureBox1, DevExpress.Utils.DefaultBoolean.Default);
+ this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.pictureBox1.Image = global::SSG_Automation_Solution.Properties.Resources.no_image_icon_23494;
+ this.pictureBox1.Location = new System.Drawing.Point(162, 373);
+ this.pictureBox1.Name = "pictureBox1";
+ this.pictureBox1.Size = new System.Drawing.Size(336, 250);
+ this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pictureBox1.TabIndex = 1037;
+ this.pictureBox1.TabStop = false;
+ //
+ // labelControl37
+ //
+ this.labelControl37.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl37.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.labelControl37.Appearance.Options.UseFont = true;
+ this.labelControl37.Appearance.Options.UseForeColor = true;
+ this.labelControl37.Location = new System.Drawing.Point(10, 172);
+ this.labelControl37.Name = "labelControl37";
+ this.labelControl37.Size = new System.Drawing.Size(95, 25);
+ this.labelControl37.TabIndex = 373;
+ this.labelControl37.Text = "송출레이어";
+ //
+ // cmbSceneSchedule
+ //
+ this.cmbSceneSchedule.Location = new System.Drawing.Point(162, 335);
+ this.cmbSceneSchedule.MenuManager = this.toolbarFormManager1;
+ this.cmbSceneSchedule.Name = "cmbSceneSchedule";
+ this.cmbSceneSchedule.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.cmbSceneSchedule.Properties.Appearance.Options.UseFont = true;
+ this.cmbSceneSchedule.Properties.AppearanceDropDown.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.cmbSceneSchedule.Properties.AppearanceDropDown.Options.UseFont = true;
+ this.cmbSceneSchedule.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.cmbSceneSchedule.Size = new System.Drawing.Size(336, 32);
+ this.cmbSceneSchedule.TabIndex = 377;
+ this.cmbSceneSchedule.SelectedIndexChanged += new System.EventHandler(this.cmbSceneSchedule_SelectedIndexChanged);
+ //
+ // labelControl3
+ //
+ this.labelControl3.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl3.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.labelControl3.Appearance.Options.UseFont = true;
+ this.labelControl3.Appearance.Options.UseForeColor = true;
+ this.labelControl3.Location = new System.Drawing.Point(278, 172);
+ this.labelControl3.Name = "labelControl3";
+ this.labelControl3.Size = new System.Drawing.Size(83, 25);
+ this.labelControl3.TabIndex = 365;
+ this.labelControl3.Text = "송출 시작";
+ //
+ // simpleButton3
+ //
+ this.simpleButton3.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.simpleButton3.Appearance.Options.UseFont = true;
+ this.simpleButton3.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton3.ImageOptions.SvgImage")));
+ this.simpleButton3.Location = new System.Drawing.Point(149, 801);
+ this.simpleButton3.Name = "simpleButton3";
+ this.simpleButton3.Size = new System.Drawing.Size(349, 63);
+ this.simpleButton3.TabIndex = 1050;
+ this.simpleButton3.Text = "송출 추가";
+ this.simpleButton3.Click += new System.EventHandler(this.simpleButton3_Click);
+ //
+ // cmbScheduleSelectedLayer
+ //
+ this.cmbScheduleSelectedLayer.EditValue = "0";
+ this.cmbScheduleSelectedLayer.Location = new System.Drawing.Point(113, 169);
+ this.cmbScheduleSelectedLayer.MenuManager = this.toolbarFormManager1;
+ this.cmbScheduleSelectedLayer.Name = "cmbScheduleSelectedLayer";
+ this.cmbScheduleSelectedLayer.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.cmbScheduleSelectedLayer.Properties.Appearance.Options.UseFont = true;
+ this.cmbScheduleSelectedLayer.Properties.AppearanceDropDown.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.cmbScheduleSelectedLayer.Properties.AppearanceDropDown.Options.UseFont = true;
+ this.cmbScheduleSelectedLayer.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.cmbScheduleSelectedLayer.Properties.Items.AddRange(new object[] {
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "10",
+ "11",
+ "12",
+ "13",
+ "14",
+ "15"});
+ this.cmbScheduleSelectedLayer.Size = new System.Drawing.Size(130, 32);
+ this.cmbScheduleSelectedLayer.TabIndex = 372;
+ //
+ // simpleButton8
+ //
+ this.simpleButton8.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.simpleButton8.Appearance.Options.UseFont = true;
+ this.simpleButton8.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton8.ImageOptions.SvgImage")));
+ this.simpleButton8.Location = new System.Drawing.Point(15, 629);
+ this.simpleButton8.Name = "simpleButton8";
+ this.simpleButton8.Size = new System.Drawing.Size(92, 71);
+ this.simpleButton8.TabIndex = 1073;
+ this.simpleButton8.Text = "변수\r\n수정";
+ this.simpleButton8.Visible = false;
+ this.simpleButton8.Click += new System.EventHandler(this.simpleButton8_Click);
+ //
+ // richTextBox1
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.richTextBox1, DevExpress.Utils.DefaultBoolean.Default);
+ this.richTextBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35)))));
+ this.richTextBox1.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold);
+ this.richTextBox1.ForeColor = System.Drawing.SystemColors.Window;
+ this.richTextBox1.Location = new System.Drawing.Point(14, 56);
+ this.richTextBox1.Name = "richTextBox1";
+ this.richTextBox1.Size = new System.Drawing.Size(498, 736);
+ this.richTextBox1.TabIndex = 566;
+ this.richTextBox1.Text = "";
+ //
+ // customersNavigationPage
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.customersNavigationPage, DevExpress.Utils.DefaultBoolean.Default);
+ this.customersNavigationPage.Controls.Add(this.xtraTabControl1);
+ this.customersNavigationPage.Controls.Add(this.customersLabelControl);
+ this.customersNavigationPage.Name = "customersNavigationPage";
+ this.customersNavigationPage.Size = new System.Drawing.Size(1918, 917);
+ //
+ // xtraTabControl1
+ //
+ this.xtraTabControl1.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
+ this.xtraTabControl1.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.xtraTabControl1.Appearance.Options.UseBackColor = true;
+ this.xtraTabControl1.Appearance.Options.UseFont = true;
+ this.xtraTabControl1.AppearancePage.Header.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.xtraTabControl1.AppearancePage.Header.ForeColor = System.Drawing.Color.DarkGray;
+ this.xtraTabControl1.AppearancePage.Header.Options.UseFont = true;
+ this.xtraTabControl1.AppearancePage.Header.Options.UseForeColor = true;
+ this.xtraTabControl1.AppearancePage.HeaderActive.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.xtraTabControl1.AppearancePage.HeaderActive.ForeColor = System.Drawing.Color.WhiteSmoke;
+ this.xtraTabControl1.AppearancePage.HeaderActive.Options.UseFont = true;
+ this.xtraTabControl1.AppearancePage.HeaderActive.Options.UseForeColor = true;
+ this.xtraTabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.xtraTabControl1.Location = new System.Drawing.Point(0, 0);
+ this.xtraTabControl1.Name = "xtraTabControl1";
+ this.xtraTabControl1.SelectedTabPage = this.xtraTabPage1;
+ this.xtraTabControl1.Size = new System.Drawing.Size(1918, 917);
+ this.xtraTabControl1.TabIndex = 873;
+ this.xtraTabControl1.TabPages.AddRange(new DevExpress.XtraTab.XtraTabPage[] {
+ this.xtraTabPage1});
+ //
+ // xtraTabPage1
+ //
+ this.xtraTabPage1.Controls.Add(this.groupControl1);
+ this.xtraTabPage1.Name = "xtraTabPage1";
+ this.xtraTabPage1.Size = new System.Drawing.Size(1916, 884);
+ this.xtraTabPage1.Text = "디자인 추가";
+ //
+ // groupControl1
+ //
+ this.groupControl1.AppearanceCaption.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.groupControl1.AppearanceCaption.Options.UseFont = true;
+ this.groupControl1.Controls.Add(this.btnSceneRemoveAll);
+ this.groupControl1.Controls.Add(this.txtThumbnailFrame);
+ this.groupControl1.Controls.Add(this.labelControl15);
+ this.groupControl1.Controls.Add(this.btnThumbnailSceneListRefresh);
+ this.groupControl1.Controls.Add(this.simpleButton4);
+ this.groupControl1.Controls.Add(this.txtGroupAliasName);
+ this.groupControl1.Controls.Add(this.labelControl36);
+ this.groupControl1.Controls.Add(this.labelControl16);
+ this.groupControl1.Controls.Add(this.comboBoxEdit1);
+ this.groupControl1.Controls.Add(this.labelControl24);
+ this.groupControl1.Controls.Add(this.cmbSceneListGroup);
+ this.groupControl1.Controls.Add(this.labelControl29);
+ this.groupControl1.Controls.Add(this.btnVariableListDel);
+ this.groupControl1.Controls.Add(this.btnVariableListAdd);
+ this.groupControl1.Controls.Add(this.txtVariableListText);
+ this.groupControl1.Controls.Add(this.labelControl44);
+ this.groupControl1.Controls.Add(this.txtVariableListTag);
+ this.groupControl1.Controls.Add(this.labelControl43);
+ this.groupControl1.Controls.Add(this.listBoxControl2);
+ this.groupControl1.Controls.Add(this.labelControl42);
+ this.groupControl1.Controls.Add(this.btnSceneAdd);
+ this.groupControl1.Controls.Add(this.labelControl41);
+ this.groupControl1.Controls.Add(this.txtSceneListTime);
+ this.groupControl1.Controls.Add(this.labelControl10);
+ this.groupControl1.Controls.Add(this.txtSceneListPath);
+ this.groupControl1.Controls.Add(this.labelControl4);
+ this.groupControl1.Controls.Add(this.labelControl12);
+ this.groupControl1.Controls.Add(this.btnSceneRemove);
+ this.groupControl1.Controls.Add(this.txtSceneListName);
+ this.groupControl1.Controls.Add(this.btnSceneLoad);
+ this.groupControl1.Controls.Add(this.labelControl14);
+ this.groupControl1.Controls.Add(this.pictureBoxThumbnailSceneList);
+ this.groupControl1.Controls.Add(this.listBoxControl1);
+ this.groupControl1.Controls.Add(this.cmbSceneListLayer);
+ this.groupControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.groupControl1.Location = new System.Drawing.Point(0, 0);
+ this.groupControl1.Margin = new System.Windows.Forms.Padding(2);
+ this.groupControl1.Name = "groupControl1";
+ this.groupControl1.Size = new System.Drawing.Size(1916, 884);
+ this.groupControl1.TabIndex = 872;
+ this.groupControl1.Text = "디자인 추가";
+ this.groupControl1.ToolTipController = this.defaultToolTipController1.DefaultController;
+ //
+ // btnSceneRemoveAll
+ //
+ this.btnSceneRemoveAll.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.btnSceneRemoveAll.Appearance.Options.UseFont = true;
+ this.btnSceneRemoveAll.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnSceneRemoveAll.ImageOptions.SvgImage")));
+ this.btnSceneRemoveAll.Location = new System.Drawing.Point(307, 718);
+ this.btnSceneRemoveAll.Name = "btnSceneRemoveAll";
+ this.btnSceneRemoveAll.Size = new System.Drawing.Size(238, 118);
+ this.btnSceneRemoveAll.TabIndex = 1116;
+ this.btnSceneRemoveAll.Text = "Remove All";
+ this.btnSceneRemoveAll.Click += new System.EventHandler(this.btnSceneRemove_Click);
+ //
+ // txtThumbnailFrame
+ //
+ this.txtThumbnailFrame.EditValue = "60";
+ this.txtThumbnailFrame.Location = new System.Drawing.Point(1035, 122);
+ this.txtThumbnailFrame.MenuManager = this.toolbarFormManager1;
+ this.txtThumbnailFrame.Name = "txtThumbnailFrame";
+ this.txtThumbnailFrame.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.txtThumbnailFrame.Properties.Appearance.Options.UseFont = true;
+ this.txtThumbnailFrame.Size = new System.Drawing.Size(107, 32);
+ this.txtThumbnailFrame.TabIndex = 1115;
+ //
+ // labelControl15
+ //
+ this.labelControl15.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl15.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.labelControl15.Appearance.Options.UseFont = true;
+ this.labelControl15.Appearance.Options.UseForeColor = true;
+ this.labelControl15.Location = new System.Drawing.Point(927, 125);
+ this.labelControl15.Name = "labelControl15";
+ this.labelControl15.Size = new System.Drawing.Size(102, 25);
+ this.labelControl15.TabIndex = 1114;
+ this.labelControl15.Text = "저장 프레임";
+ //
+ // btnThumbnailSceneListRefresh
+ //
+ this.btnThumbnailSceneListRefresh.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.btnThumbnailSceneListRefresh.Appearance.Options.UseFont = true;
+ this.btnThumbnailSceneListRefresh.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnThumbnailSceneListRefresh.ImageOptions.SvgImage")));
+ this.btnThumbnailSceneListRefresh.Location = new System.Drawing.Point(955, 165);
+ this.btnThumbnailSceneListRefresh.Name = "btnThumbnailSceneListRefresh";
+ this.btnThumbnailSceneListRefresh.Size = new System.Drawing.Size(187, 46);
+ this.btnThumbnailSceneListRefresh.TabIndex = 1113;
+ this.btnThumbnailSceneListRefresh.Text = "무응답 정상화";
+ this.btnThumbnailSceneListRefresh.Click += new System.EventHandler(this.btnThumbnailSceneListRefresh_Click);
+ //
+ // simpleButton4
+ //
+ this.simpleButton4.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.simpleButton4.Appearance.Options.UseFont = true;
+ this.simpleButton4.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("simpleButton4.ImageOptions.SvgImage")));
+ this.simpleButton4.Location = new System.Drawing.Point(756, 30);
+ this.simpleButton4.Name = "simpleButton4";
+ this.simpleButton4.Size = new System.Drawing.Size(120, 46);
+ this.simpleButton4.TabIndex = 1112;
+ this.simpleButton4.Text = "별칭 변경";
+ this.simpleButton4.Click += new System.EventHandler(this.simpleButton4_Click);
+ //
+ // txtGroupAliasName
+ //
+ this.txtGroupAliasName.Location = new System.Drawing.Point(497, 37);
+ this.txtGroupAliasName.MenuManager = this.toolbarFormManager1;
+ this.txtGroupAliasName.Name = "txtGroupAliasName";
+ this.txtGroupAliasName.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.txtGroupAliasName.Properties.Appearance.Options.UseFont = true;
+ this.txtGroupAliasName.Size = new System.Drawing.Size(243, 32);
+ this.txtGroupAliasName.TabIndex = 1111;
+ //
+ // labelControl36
+ //
+ this.labelControl36.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl36.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.labelControl36.Appearance.Options.UseFont = true;
+ this.labelControl36.Appearance.Options.UseForeColor = true;
+ this.labelControl36.Location = new System.Drawing.Point(370, 40);
+ this.labelControl36.Name = "labelControl36";
+ this.labelControl36.Size = new System.Drawing.Size(121, 25);
+ this.labelControl36.TabIndex = 1110;
+ this.labelControl36.Text = "Group명 별칭";
+ //
+ // labelControl16
+ //
+ this.labelControl16.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl16.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl16.Appearance.Options.UseFont = true;
+ this.labelControl16.Appearance.Options.UseForeColor = true;
+ this.labelControl16.Location = new System.Drawing.Point(1176, 307);
+ this.labelControl16.Name = "labelControl16";
+ this.labelControl16.Size = new System.Drawing.Size(64, 25);
+ this.labelControl16.TabIndex = 1109;
+ this.labelControl16.Text = "송출CG";
+ this.labelControl16.Visible = false;
+ //
+ // comboBoxEdit1
+ //
+ this.comboBoxEdit1.EditValue = "CG1";
+ this.comboBoxEdit1.Location = new System.Drawing.Point(1279, 300);
+ this.comboBoxEdit1.MenuManager = this.toolbarFormManager1;
+ this.comboBoxEdit1.Name = "comboBoxEdit1";
+ this.comboBoxEdit1.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.comboBoxEdit1.Properties.Appearance.Options.UseFont = true;
+ this.comboBoxEdit1.Properties.AppearanceDropDown.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.comboBoxEdit1.Properties.AppearanceDropDown.Options.UseFont = true;
+ this.comboBoxEdit1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.comboBoxEdit1.Properties.Items.AddRange(new object[] {
+ "CG1",
+ "CG2",
+ "CG3",
+ "CG4",
+ "CG5"});
+ this.comboBoxEdit1.Size = new System.Drawing.Size(130, 32);
+ this.comboBoxEdit1.TabIndex = 1108;
+ this.comboBoxEdit1.Visible = false;
+ //
+ // labelControl24
+ //
+ this.labelControl24.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl24.Appearance.ForeColor = System.Drawing.Color.White;
+ this.labelControl24.Appearance.Options.UseFont = true;
+ this.labelControl24.Appearance.Options.UseForeColor = true;
+ this.labelControl24.Location = new System.Drawing.Point(41, 40);
+ this.labelControl24.Name = "labelControl24";
+ this.labelControl24.Size = new System.Drawing.Size(161, 25);
+ this.labelControl24.TabIndex = 1056;
+ this.labelControl24.Text = "Scene Group 선택";
+ //
+ // cmbSceneListGroup
+ //
+ this.cmbSceneListGroup.EditValue = "Group1";
+ this.cmbSceneListGroup.Location = new System.Drawing.Point(208, 37);
+ this.cmbSceneListGroup.MenuManager = this.toolbarFormManager1;
+ this.cmbSceneListGroup.Name = "cmbSceneListGroup";
+ this.cmbSceneListGroup.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.cmbSceneListGroup.Properties.Appearance.Options.UseFont = true;
+ this.cmbSceneListGroup.Properties.AppearanceDropDown.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.cmbSceneListGroup.Properties.AppearanceDropDown.Options.UseFont = true;
+ this.cmbSceneListGroup.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.cmbSceneListGroup.Properties.Items.AddRange(new object[] {
+ "Group1",
+ "Group2",
+ "Group3",
+ "Group4",
+ "Group5",
+ "Group6",
+ "Group7",
+ "Group8",
+ "Group9",
+ "Group10",
+ "Group11",
+ "Group12",
+ "Group13",
+ "Group14",
+ "Group15"});
+ this.cmbSceneListGroup.Size = new System.Drawing.Size(130, 32);
+ this.cmbSceneListGroup.TabIndex = 1055;
+ this.cmbSceneListGroup.SelectedIndexChanged += new System.EventHandler(this.cmbSceneListGroup_SelectedIndexChanged);
+ //
+ // labelControl29
+ //
+ this.labelControl29.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl29.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl29.Appearance.Options.UseFont = true;
+ this.labelControl29.Appearance.Options.UseForeColor = true;
+ this.labelControl29.Location = new System.Drawing.Point(1176, 341);
+ this.labelControl29.Name = "labelControl29";
+ this.labelControl29.Size = new System.Drawing.Size(95, 25);
+ this.labelControl29.TabIndex = 1054;
+ this.labelControl29.Text = "송출레이어";
+ this.labelControl29.Visible = false;
+ //
+ // btnVariableListDel
+ //
+ this.btnVariableListDel.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.btnVariableListDel.Appearance.Options.UseFont = true;
+ this.btnVariableListDel.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnVariableListDel.ImageOptions.SvgImage")));
+ this.btnVariableListDel.Location = new System.Drawing.Point(1740, 642);
+ this.btnVariableListDel.Name = "btnVariableListDel";
+ this.btnVariableListDel.Size = new System.Drawing.Size(117, 55);
+ this.btnVariableListDel.TabIndex = 1045;
+ this.btnVariableListDel.Text = "변수삭제";
+ this.btnVariableListDel.Click += new System.EventHandler(this.btnVariableListDel_Click);
+ //
+ // btnVariableListAdd
+ //
+ this.btnVariableListAdd.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.btnVariableListAdd.Appearance.Options.UseFont = true;
+ this.btnVariableListAdd.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnVariableListAdd.ImageOptions.SvgImage")));
+ this.btnVariableListAdd.Location = new System.Drawing.Point(1603, 642);
+ this.btnVariableListAdd.Name = "btnVariableListAdd";
+ this.btnVariableListAdd.Size = new System.Drawing.Size(117, 55);
+ this.btnVariableListAdd.TabIndex = 1044;
+ this.btnVariableListAdd.Text = "변수추가";
+ this.btnVariableListAdd.Click += new System.EventHandler(this.btnVariableListAdd_Click);
+ //
+ // txtVariableListText
+ //
+ this.txtVariableListText.Location = new System.Drawing.Point(1673, 596);
+ this.txtVariableListText.MenuManager = this.toolbarFormManager1;
+ this.txtVariableListText.Name = "txtVariableListText";
+ this.txtVariableListText.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.txtVariableListText.Properties.Appearance.Options.UseFont = true;
+ this.txtVariableListText.Size = new System.Drawing.Size(184, 32);
+ this.txtVariableListText.TabIndex = 1043;
+ //
+ // labelControl44
+ //
+ this.labelControl44.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl44.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl44.Appearance.Options.UseFont = true;
+ this.labelControl44.Appearance.Options.UseForeColor = true;
+ this.labelControl44.Location = new System.Drawing.Point(1603, 599);
+ this.labelControl44.Name = "labelControl44";
+ this.labelControl44.Size = new System.Drawing.Size(57, 25);
+ this.labelControl44.TabIndex = 1042;
+ this.labelControl44.Text = "텍스트";
+ //
+ // txtVariableListTag
+ //
+ this.txtVariableListTag.Location = new System.Drawing.Point(1673, 545);
+ this.txtVariableListTag.MenuManager = this.toolbarFormManager1;
+ this.txtVariableListTag.Name = "txtVariableListTag";
+ this.txtVariableListTag.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.txtVariableListTag.Properties.Appearance.Options.UseFont = true;
+ this.txtVariableListTag.Size = new System.Drawing.Size(184, 32);
+ this.txtVariableListTag.TabIndex = 1041;
+ //
+ // labelControl43
+ //
+ this.labelControl43.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl43.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl43.Appearance.Options.UseFont = true;
+ this.labelControl43.Appearance.Options.UseForeColor = true;
+ this.labelControl43.Location = new System.Drawing.Point(1603, 548);
+ this.labelControl43.Name = "labelControl43";
+ this.labelControl43.Size = new System.Drawing.Size(57, 25);
+ this.labelControl43.TabIndex = 1040;
+ this.labelControl43.Text = "변수명";
+ //
+ // listBoxControl2
+ //
+ this.listBoxControl2.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.listBoxControl2.Appearance.Options.UseFont = true;
+ this.listBoxControl2.Location = new System.Drawing.Point(1603, 301);
+ this.listBoxControl2.Name = "listBoxControl2";
+ this.listBoxControl2.Size = new System.Drawing.Size(254, 235);
+ this.listBoxControl2.TabIndex = 1039;
+ this.listBoxControl2.SelectedIndexChanged += new System.EventHandler(this.listBoxControl2_SelectedIndexChanged);
+ //
+ // labelControl42
+ //
+ this.labelControl42.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl42.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl42.Appearance.Options.UseFont = true;
+ this.labelControl42.Appearance.Options.UseForeColor = true;
+ this.labelControl42.Location = new System.Drawing.Point(1603, 270);
+ this.labelControl42.Name = "labelControl42";
+ this.labelControl42.Size = new System.Drawing.Size(121, 25);
+ this.labelControl42.TabIndex = 1038;
+ this.labelControl42.Text = "변수명 리스트";
+ //
+ // btnSceneAdd
+ //
+ this.btnSceneAdd.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.btnSceneAdd.Appearance.Options.UseFont = true;
+ this.btnSceneAdd.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnSceneAdd.ImageOptions.SvgImage")));
+ this.btnSceneAdd.Location = new System.Drawing.Point(1183, 579);
+ this.btnSceneAdd.Name = "btnSceneAdd";
+ this.btnSceneAdd.Size = new System.Drawing.Size(238, 118);
+ this.btnSceneAdd.TabIndex = 1037;
+ this.btnSceneAdd.Text = "Scene Add";
+ this.btnSceneAdd.Click += new System.EventHandler(this.btnSceneAdd_Click);
+ //
+ // labelControl41
+ //
+ this.labelControl41.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl41.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl41.Appearance.Options.UseFont = true;
+ this.labelControl41.Appearance.Options.UseForeColor = true;
+ this.labelControl41.Location = new System.Drawing.Point(502, 186);
+ this.labelControl41.Name = "labelControl41";
+ this.labelControl41.Size = new System.Drawing.Size(57, 25);
+ this.labelControl41.TabIndex = 1036;
+ this.labelControl41.Text = "썸네일";
+ //
+ // txtSceneListTime
+ //
+ this.txtSceneListTime.Enabled = false;
+ this.txtSceneListTime.Location = new System.Drawing.Point(1239, 212);
+ this.txtSceneListTime.MenuManager = this.toolbarFormManager1;
+ this.txtSceneListTime.Name = "txtSceneListTime";
+ this.txtSceneListTime.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold);
+ this.txtSceneListTime.Properties.Appearance.Options.UseFont = true;
+ this.txtSceneListTime.Size = new System.Drawing.Size(317, 26);
+ this.txtSceneListTime.TabIndex = 1034;
+ //
+ // labelControl10
+ //
+ this.labelControl10.Appearance.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold);
+ this.labelControl10.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl10.Appearance.Options.UseFont = true;
+ this.labelControl10.Appearance.Options.UseForeColor = true;
+ this.labelControl10.Location = new System.Drawing.Point(1173, 215);
+ this.labelControl10.Name = "labelControl10";
+ this.labelControl10.Size = new System.Drawing.Size(60, 20);
+ this.labelControl10.TabIndex = 1033;
+ this.labelControl10.Text = "로드시점";
+ //
+ // txtSceneListPath
+ //
+ this.txtSceneListPath.Enabled = false;
+ this.txtSceneListPath.Location = new System.Drawing.Point(1239, 177);
+ this.txtSceneListPath.MenuManager = this.toolbarFormManager1;
+ this.txtSceneListPath.Name = "txtSceneListPath";
+ this.txtSceneListPath.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold);
+ this.txtSceneListPath.Properties.Appearance.Options.UseFont = true;
+ this.txtSceneListPath.Size = new System.Drawing.Size(618, 26);
+ this.txtSceneListPath.TabIndex = 1032;
+ //
+ // labelControl4
+ //
+ this.labelControl4.Appearance.Font = new System.Drawing.Font("맑은 고딕", 11F, System.Drawing.FontStyle.Bold);
+ this.labelControl4.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl4.Appearance.Options.UseFont = true;
+ this.labelControl4.Appearance.Options.UseForeColor = true;
+ this.labelControl4.Location = new System.Drawing.Point(1183, 180);
+ this.labelControl4.Name = "labelControl4";
+ this.labelControl4.Size = new System.Drawing.Size(50, 20);
+ this.labelControl4.TabIndex = 1031;
+ this.labelControl4.Text = "씬 경로";
+ //
+ // labelControl12
+ //
+ this.labelControl12.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl12.Appearance.ForeColor = System.Drawing.Color.White;
+ this.labelControl12.Appearance.Options.UseFont = true;
+ this.labelControl12.Appearance.Options.UseForeColor = true;
+ this.labelControl12.Location = new System.Drawing.Point(41, 79);
+ this.labelControl12.Name = "labelControl12";
+ this.labelControl12.Size = new System.Drawing.Size(116, 25);
+ this.labelControl12.TabIndex = 1014;
+ this.labelControl12.Text = "Scene 리스트";
+ //
+ // btnSceneRemove
+ //
+ this.btnSceneRemove.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.btnSceneRemove.Appearance.Options.UseFont = true;
+ this.btnSceneRemove.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnSceneRemove.ImageOptions.SvgImage")));
+ this.btnSceneRemove.Location = new System.Drawing.Point(41, 718);
+ this.btnSceneRemove.Name = "btnSceneRemove";
+ this.btnSceneRemove.Size = new System.Drawing.Size(238, 118);
+ this.btnSceneRemove.TabIndex = 1008;
+ this.btnSceneRemove.Text = "Remove Selected";
+ this.btnSceneRemove.Click += new System.EventHandler(this.btnSceneRemove_Click);
+ //
+ // txtSceneListName
+ //
+ this.txtSceneListName.Location = new System.Drawing.Point(1239, 122);
+ this.txtSceneListName.MenuManager = this.toolbarFormManager1;
+ this.txtSceneListName.Name = "txtSceneListName";
+ this.txtSceneListName.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.txtSceneListName.Properties.Appearance.Options.UseFont = true;
+ this.txtSceneListName.Size = new System.Drawing.Size(618, 32);
+ this.txtSceneListName.TabIndex = 1007;
+ //
+ // btnSceneLoad
+ //
+ this.btnSceneLoad.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.btnSceneLoad.Appearance.Options.UseFont = true;
+ this.btnSceneLoad.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnSceneLoad.ImageOptions.SvgImage")));
+ this.btnSceneLoad.Location = new System.Drawing.Point(502, 110);
+ this.btnSceneLoad.Name = "btnSceneLoad";
+ this.btnSceneLoad.Size = new System.Drawing.Size(238, 55);
+ this.btnSceneLoad.TabIndex = 1004;
+ this.btnSceneLoad.Text = "T2S Load and Add";
+ this.btnSceneLoad.Click += new System.EventHandler(this.btnSceneLoad_Click);
+ //
+ // labelControl14
+ //
+ this.labelControl14.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl14.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl14.Appearance.Options.UseFont = true;
+ this.labelControl14.Appearance.Options.UseForeColor = true;
+ this.labelControl14.Location = new System.Drawing.Point(1169, 125);
+ this.labelControl14.Name = "labelControl14";
+ this.labelControl14.Size = new System.Drawing.Size(64, 25);
+ this.labelControl14.TabIndex = 676;
+ this.labelControl14.Text = "씬 이름";
+ //
+ // pictureBoxThumbnailSceneList
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.pictureBoxThumbnailSceneList, DevExpress.Utils.DefaultBoolean.Default);
+ this.pictureBoxThumbnailSceneList.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.pictureBoxThumbnailSceneList.Image = global::SSG_Automation_Solution.Properties.Resources.no_image_icon_23494;
+ this.pictureBoxThumbnailSceneList.Location = new System.Drawing.Point(502, 217);
+ this.pictureBoxThumbnailSceneList.Name = "pictureBoxThumbnailSceneList";
+ this.pictureBoxThumbnailSceneList.Size = new System.Drawing.Size(640, 480);
+ this.pictureBoxThumbnailSceneList.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pictureBoxThumbnailSceneList.TabIndex = 1035;
+ this.pictureBoxThumbnailSceneList.TabStop = false;
+ //
+ // listBoxControl1
+ //
+ this.listBoxControl1.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.listBoxControl1.Appearance.Options.UseFont = true;
+ this.listBoxControl1.Location = new System.Drawing.Point(41, 110);
+ this.listBoxControl1.Name = "listBoxControl1";
+ this.listBoxControl1.Size = new System.Drawing.Size(450, 587);
+ this.listBoxControl1.TabIndex = 1047;
+ this.listBoxControl1.SelectedIndexChanged += new System.EventHandler(this.listBoxControl1_SelectedIndexChanged);
+ //
+ // cmbSceneListLayer
+ //
+ this.cmbSceneListLayer.EditValue = "0";
+ this.cmbSceneListLayer.Location = new System.Drawing.Point(1279, 338);
+ this.cmbSceneListLayer.MenuManager = this.toolbarFormManager1;
+ this.cmbSceneListLayer.Name = "cmbSceneListLayer";
+ this.cmbSceneListLayer.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.cmbSceneListLayer.Properties.Appearance.Options.UseFont = true;
+ this.cmbSceneListLayer.Properties.AppearanceDropDown.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.cmbSceneListLayer.Properties.AppearanceDropDown.Options.UseFont = true;
+ this.cmbSceneListLayer.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.cmbSceneListLayer.Properties.Items.AddRange(new object[] {
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "10",
+ "11",
+ "12",
+ "13",
+ "14",
+ "15"});
+ this.cmbSceneListLayer.Size = new System.Drawing.Size(130, 32);
+ this.cmbSceneListLayer.TabIndex = 1053;
+ this.cmbSceneListLayer.Visible = false;
+ //
+ // customersLabelControl
+ //
+ this.customersLabelControl.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
+ this.customersLabelControl.Appearance.Font = new System.Drawing.Font("Tahoma", 25.25F);
+ this.customersLabelControl.Appearance.ForeColor = System.Drawing.Color.Gray;
+ this.customersLabelControl.Appearance.Options.UseBackColor = true;
+ this.customersLabelControl.Appearance.Options.UseFont = true;
+ this.customersLabelControl.Appearance.Options.UseForeColor = true;
+ this.customersLabelControl.Appearance.Options.UseTextOptions = true;
+ this.customersLabelControl.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+ this.customersLabelControl.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
+ this.customersLabelControl.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.customersLabelControl.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.customersLabelControl.Location = new System.Drawing.Point(0, 0);
+ this.customersLabelControl.Name = "customersLabelControl";
+ this.customersLabelControl.Size = new System.Drawing.Size(1918, 917);
+ this.customersLabelControl.TabIndex = 2;
+ this.customersLabelControl.Text = "Customers";
+ //
+ // navigationPage2
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.navigationPage2, DevExpress.Utils.DefaultBoolean.Default);
+ this.navigationPage2.Controls.Add(this.groupControl2);
+ this.navigationPage2.Controls.Add(this.groupControl13);
+ this.navigationPage2.Controls.Add(this.groupControl6);
+ this.navigationPage2.Name = "navigationPage2";
+ this.navigationPage2.Size = new System.Drawing.Size(1918, 917);
+ //
+ // groupControl2
+ //
+ this.groupControl2.AppearanceCaption.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.groupControl2.AppearanceCaption.Options.UseFont = true;
+ this.groupControl2.Controls.Add(this.txtLog);
+ this.groupControl2.Dock = System.Windows.Forms.DockStyle.Top;
+ this.groupControl2.Location = new System.Drawing.Point(0, 610);
+ this.groupControl2.Margin = new System.Windows.Forms.Padding(2);
+ this.groupControl2.Name = "groupControl2";
+ this.groupControl2.Size = new System.Drawing.Size(1918, 314);
+ this.groupControl2.TabIndex = 3055;
+ this.groupControl2.Text = "Log";
+ this.groupControl2.ToolTipController = this.defaultToolTipController1.DefaultController;
+ //
+ // txtLog
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.txtLog, DevExpress.Utils.DefaultBoolean.Default);
+ this.txtLog.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(35)))));
+ this.txtLog.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.txtLog.Location = new System.Drawing.Point(2, 23);
+ this.txtLog.Name = "txtLog";
+ this.txtLog.Size = new System.Drawing.Size(1914, 289);
+ this.txtLog.TabIndex = 1;
+ this.txtLog.Text = "";
+ //
+ // groupControl13
+ //
+ this.groupControl13.AppearanceCaption.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.groupControl13.AppearanceCaption.Options.UseFont = true;
+ this.groupControl13.Controls.Add(this.lbl송출무시금지글자색);
+ this.groupControl13.Controls.Add(this.lbl송출무시금지배경색);
+ this.groupControl13.Controls.Add(this.label15);
+ this.groupControl13.Controls.Add(this.label14);
+ this.groupControl13.Controls.Add(this.comboBoxEdit2);
+ this.groupControl13.Controls.Add(this.lbl선택라인상태글자색);
+ this.groupControl13.Controls.Add(this.lbl선택라인상태배경색);
+ this.groupControl13.Controls.Add(this.label13);
+ this.groupControl13.Controls.Add(this.lbl선택라인종류글자색);
+ this.groupControl13.Controls.Add(this.lbl선택라인종류배경색);
+ this.groupControl13.Controls.Add(this.label12);
+ this.groupControl13.Controls.Add(this.lbl종류송출글자색);
+ this.groupControl13.Controls.Add(this.lbl종류송출배경색);
+ this.groupControl13.Controls.Add(this.label10);
+ this.groupControl13.Controls.Add(this.lbl종류스케쥴글자색);
+ this.groupControl13.Controls.Add(this.lbl종류스케쥴배경색);
+ this.groupControl13.Controls.Add(this.label11);
+ this.groupControl13.Controls.Add(this.lblNEXT송출글자색);
+ this.groupControl13.Controls.Add(this.lblNEXT송출배경색);
+ this.groupControl13.Controls.Add(this.label9);
+ this.groupControl13.Controls.Add(this.lbl완료상태글자색);
+ this.groupControl13.Controls.Add(this.lbl완료상태배경색);
+ this.groupControl13.Controls.Add(this.label8);
+ this.groupControl13.Controls.Add(this.lbl완료송출글자색);
+ this.groupControl13.Controls.Add(this.lbl완료송출배경색);
+ this.groupControl13.Controls.Add(this.label7);
+ this.groupControl13.Controls.Add(this.lblNEXT상태글자색);
+ this.groupControl13.Controls.Add(this.lblNEXT상태배경색);
+ this.groupControl13.Controls.Add(this.lblNEXT스케쥴글자색);
+ this.groupControl13.Controls.Add(this.lblNEXT스케쥴배경색);
+ this.groupControl13.Controls.Add(this.label5);
+ this.groupControl13.Controls.Add(this.label6);
+ this.groupControl13.Controls.Add(this.lbl선택라인글자색);
+ this.groupControl13.Controls.Add(this.lbl선택라인배경색);
+ this.groupControl13.Controls.Add(this.lblOnAir상태글자색);
+ this.groupControl13.Controls.Add(this.lblOnAir상태배경색);
+ this.groupControl13.Controls.Add(this.lblOnAir송출글자색);
+ this.groupControl13.Controls.Add(this.lblOnAir송출배경색);
+ this.groupControl13.Controls.Add(this.lblOnAir스케쥴글자색);
+ this.groupControl13.Controls.Add(this.lblOnAir스케쥴배경색);
+ this.groupControl13.Controls.Add(this.lbl완료스케쥴글자색);
+ this.groupControl13.Controls.Add(this.lbl완료스케쥴배경색);
+ this.groupControl13.Controls.Add(this.label4);
+ this.groupControl13.Controls.Add(this.label2);
+ this.groupControl13.Controls.Add(this.label1);
+ this.groupControl13.Controls.Add(this.label3);
+ this.groupControl13.Controls.Add(this.labelControl92);
+ this.groupControl13.Controls.Add(this.label69);
+ this.groupControl13.Controls.Add(this.label73);
+ this.groupControl13.Controls.Add(this.label61);
+ this.groupControl13.Dock = System.Windows.Forms.DockStyle.Top;
+ this.groupControl13.Location = new System.Drawing.Point(0, 316);
+ this.groupControl13.Margin = new System.Windows.Forms.Padding(2);
+ this.groupControl13.Name = "groupControl13";
+ this.groupControl13.Size = new System.Drawing.Size(1918, 294);
+ this.groupControl13.TabIndex = 3054;
+ this.groupControl13.Text = "스케쥴 설정";
+ this.groupControl13.ToolTipController = this.defaultToolTipController1.DefaultController;
+ //
+ // lbl송출무시금지글자색
+ //
+ this.lbl송출무시금지글자색.Appearance.BackColor = System.Drawing.Color.White;
+ this.lbl송출무시금지글자색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl송출무시금지글자색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl송출무시금지글자색.Appearance.Options.UseBackColor = true;
+ this.lbl송출무시금지글자색.Appearance.Options.UseFont = true;
+ this.lbl송출무시금지글자색.Appearance.Options.UseForeColor = true;
+ this.lbl송출무시금지글자색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl송출무시금지글자색.Location = new System.Drawing.Point(296, 191);
+ this.lbl송출무시금지글자색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl송출무시금지글자색.Name = "lbl송출무시금지글자색";
+ this.lbl송출무시금지글자색.Size = new System.Drawing.Size(84, 25);
+ this.lbl송출무시금지글자색.TabIndex = 3097;
+ //
+ // lbl송출무시금지배경색
+ //
+ this.lbl송출무시금지배경색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.lbl송출무시금지배경색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl송출무시금지배경색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl송출무시금지배경색.Appearance.Options.UseBackColor = true;
+ this.lbl송출무시금지배경색.Appearance.Options.UseFont = true;
+ this.lbl송출무시금지배경색.Appearance.Options.UseForeColor = true;
+ this.lbl송출무시금지배경색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl송출무시금지배경색.Location = new System.Drawing.Point(296, 138);
+ this.lbl송출무시금지배경색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl송출무시금지배경색.Name = "lbl송출무시금지배경색";
+ this.lbl송출무시금지배경색.Size = new System.Drawing.Size(84, 25);
+ this.lbl송출무시금지배경색.TabIndex = 3096;
+ //
+ // label15
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label15, DevExpress.Utils.DefaultBoolean.Default);
+ this.label15.AutoSize = true;
+ this.label15.BackColor = System.Drawing.Color.Transparent;
+ this.label15.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label15.Location = new System.Drawing.Point(285, 97);
+ this.label15.Name = "label15";
+ this.label15.Size = new System.Drawing.Size(104, 20);
+ this.label15.TabIndex = 3095;
+ this.label15.Text = "송출 금지무시";
+ //
+ // label14
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label14, DevExpress.Utils.DefaultBoolean.Default);
+ this.label14.AutoSize = true;
+ this.label14.BackColor = System.Drawing.Color.Transparent;
+ this.label14.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label14.Location = new System.Drawing.Point(175, 225);
+ this.label14.Name = "label14";
+ this.label14.Size = new System.Drawing.Size(84, 20);
+ this.label14.TabIndex = 3094;
+ this.label14.Text = "레이어번호";
+ //
+ // comboBoxEdit2
+ //
+ this.comboBoxEdit2.Location = new System.Drawing.Point(175, 248);
+ this.comboBoxEdit2.MenuManager = this.toolbarFormManager1;
+ this.comboBoxEdit2.Name = "comboBoxEdit2";
+ this.comboBoxEdit2.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.comboBoxEdit2.Properties.Appearance.Options.UseFont = true;
+ this.comboBoxEdit2.Properties.AppearanceDropDown.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.comboBoxEdit2.Properties.AppearanceDropDown.Options.UseFont = true;
+ this.comboBoxEdit2.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.comboBoxEdit2.Properties.Items.AddRange(new object[] {
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "10",
+ "11",
+ "12",
+ "13",
+ "14",
+ "15"});
+ this.comboBoxEdit2.Size = new System.Drawing.Size(84, 32);
+ this.comboBoxEdit2.TabIndex = 3093;
+ this.comboBoxEdit2.SelectedIndexChanged += new System.EventHandler(this.comboBoxEdit2_SelectedIndexChanged);
+ //
+ // lbl선택라인상태글자색
+ //
+ this.lbl선택라인상태글자색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lbl선택라인상태글자색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl선택라인상태글자색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl선택라인상태글자색.Appearance.Options.UseBackColor = true;
+ this.lbl선택라인상태글자색.Appearance.Options.UseFont = true;
+ this.lbl선택라인상태글자색.Appearance.Options.UseForeColor = true;
+ this.lbl선택라인상태글자색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl선택라인상태글자색.Location = new System.Drawing.Point(1700, 191);
+ this.lbl선택라인상태글자색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl선택라인상태글자색.Name = "lbl선택라인상태글자색";
+ this.lbl선택라인상태글자색.Size = new System.Drawing.Size(84, 25);
+ this.lbl선택라인상태글자색.TabIndex = 3092;
+ this.lbl선택라인상태글자색.Visible = false;
+ //
+ // lbl선택라인상태배경색
+ //
+ this.lbl선택라인상태배경색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lbl선택라인상태배경색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl선택라인상태배경색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl선택라인상태배경색.Appearance.Options.UseBackColor = true;
+ this.lbl선택라인상태배경색.Appearance.Options.UseFont = true;
+ this.lbl선택라인상태배경색.Appearance.Options.UseForeColor = true;
+ this.lbl선택라인상태배경색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl선택라인상태배경색.Location = new System.Drawing.Point(1700, 138);
+ this.lbl선택라인상태배경색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl선택라인상태배경색.Name = "lbl선택라인상태배경색";
+ this.lbl선택라인상태배경색.Size = new System.Drawing.Size(84, 25);
+ this.lbl선택라인상태배경색.TabIndex = 3091;
+ this.lbl선택라인상태배경색.Visible = false;
+ //
+ // label13
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label13, DevExpress.Utils.DefaultBoolean.Default);
+ this.label13.AutoSize = true;
+ this.label13.BackColor = System.Drawing.Color.Transparent;
+ this.label13.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label13.Location = new System.Drawing.Point(1704, 97);
+ this.label13.Name = "label13";
+ this.label13.Size = new System.Drawing.Size(74, 20);
+ this.label13.TabIndex = 3090;
+ this.label13.Text = "선택 상태";
+ this.label13.Visible = false;
+ //
+ // lbl선택라인종류글자색
+ //
+ this.lbl선택라인종류글자색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lbl선택라인종류글자색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl선택라인종류글자색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl선택라인종류글자색.Appearance.Options.UseBackColor = true;
+ this.lbl선택라인종류글자색.Appearance.Options.UseFont = true;
+ this.lbl선택라인종류글자색.Appearance.Options.UseForeColor = true;
+ this.lbl선택라인종류글자색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl선택라인종류글자색.Location = new System.Drawing.Point(1491, 191);
+ this.lbl선택라인종류글자색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl선택라인종류글자색.Name = "lbl선택라인종류글자색";
+ this.lbl선택라인종류글자색.Size = new System.Drawing.Size(84, 25);
+ this.lbl선택라인종류글자색.TabIndex = 3089;
+ this.lbl선택라인종류글자색.Visible = false;
+ //
+ // lbl선택라인종류배경색
+ //
+ this.lbl선택라인종류배경색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lbl선택라인종류배경색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl선택라인종류배경색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl선택라인종류배경색.Appearance.Options.UseBackColor = true;
+ this.lbl선택라인종류배경색.Appearance.Options.UseFont = true;
+ this.lbl선택라인종류배경색.Appearance.Options.UseForeColor = true;
+ this.lbl선택라인종류배경색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl선택라인종류배경색.Location = new System.Drawing.Point(1491, 138);
+ this.lbl선택라인종류배경색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl선택라인종류배경색.Name = "lbl선택라인종류배경색";
+ this.lbl선택라인종류배경색.Size = new System.Drawing.Size(84, 25);
+ this.lbl선택라인종류배경색.TabIndex = 3088;
+ this.lbl선택라인종류배경색.Visible = false;
+ //
+ // label12
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label12, DevExpress.Utils.DefaultBoolean.Default);
+ this.label12.AutoSize = true;
+ this.label12.BackColor = System.Drawing.Color.Transparent;
+ this.label12.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label12.Location = new System.Drawing.Point(1495, 97);
+ this.label12.Name = "label12";
+ this.label12.Size = new System.Drawing.Size(74, 20);
+ this.label12.TabIndex = 3087;
+ this.label12.Text = "선택 종류";
+ this.label12.Visible = false;
+ //
+ // lbl종류송출글자색
+ //
+ this.lbl종류송출글자색.Appearance.BackColor = System.Drawing.Color.White;
+ this.lbl종류송출글자색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl종류송출글자색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl종류송출글자색.Appearance.Options.UseBackColor = true;
+ this.lbl종류송출글자색.Appearance.Options.UseFont = true;
+ this.lbl종류송출글자색.Appearance.Options.UseForeColor = true;
+ this.lbl종류송출글자색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl종류송출글자색.Location = new System.Drawing.Point(519, 191);
+ this.lbl종류송출글자색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl종류송출글자색.Name = "lbl종류송출글자색";
+ this.lbl종류송출글자색.Size = new System.Drawing.Size(84, 25);
+ this.lbl종류송출글자색.TabIndex = 3086;
+ //
+ // lbl종류송출배경색
+ //
+ this.lbl종류송출배경색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.lbl종류송출배경색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl종류송출배경색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl종류송출배경색.Appearance.Options.UseBackColor = true;
+ this.lbl종류송출배경색.Appearance.Options.UseFont = true;
+ this.lbl종류송출배경색.Appearance.Options.UseForeColor = true;
+ this.lbl종류송출배경색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl종류송출배경색.Location = new System.Drawing.Point(519, 138);
+ this.lbl종류송출배경색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl종류송출배경색.Name = "lbl종류송출배경색";
+ this.lbl종류송출배경색.Size = new System.Drawing.Size(84, 25);
+ this.lbl종류송출배경색.TabIndex = 3085;
+ //
+ // label10
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label10, DevExpress.Utils.DefaultBoolean.Default);
+ this.label10.AutoSize = true;
+ this.label10.BackColor = System.Drawing.Color.Transparent;
+ this.label10.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label10.Location = new System.Drawing.Point(529, 97);
+ this.label10.Name = "label10";
+ this.label10.Size = new System.Drawing.Size(69, 20);
+ this.label10.TabIndex = 3084;
+ this.label10.Text = "종류송출";
+ //
+ // lbl종류스케쥴글자색
+ //
+ this.lbl종류스케쥴글자색.Appearance.BackColor = System.Drawing.Color.White;
+ this.lbl종류스케쥴글자색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl종류스케쥴글자색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl종류스케쥴글자색.Appearance.Options.UseBackColor = true;
+ this.lbl종류스케쥴글자색.Appearance.Options.UseFont = true;
+ this.lbl종류스케쥴글자색.Appearance.Options.UseForeColor = true;
+ this.lbl종류스케쥴글자색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl종류스케쥴글자색.Location = new System.Drawing.Point(413, 191);
+ this.lbl종류스케쥴글자색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl종류스케쥴글자색.Name = "lbl종류스케쥴글자색";
+ this.lbl종류스케쥴글자색.Size = new System.Drawing.Size(84, 25);
+ this.lbl종류스케쥴글자색.TabIndex = 3083;
+ //
+ // lbl종류스케쥴배경색
+ //
+ this.lbl종류스케쥴배경색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.lbl종류스케쥴배경색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl종류스케쥴배경색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl종류스케쥴배경색.Appearance.Options.UseBackColor = true;
+ this.lbl종류스케쥴배경색.Appearance.Options.UseFont = true;
+ this.lbl종류스케쥴배경색.Appearance.Options.UseForeColor = true;
+ this.lbl종류스케쥴배경색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl종류스케쥴배경색.Location = new System.Drawing.Point(413, 138);
+ this.lbl종류스케쥴배경색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl종류스케쥴배경색.Name = "lbl종류스케쥴배경색";
+ this.lbl종류스케쥴배경색.Size = new System.Drawing.Size(84, 25);
+ this.lbl종류스케쥴배경색.TabIndex = 3082;
+ //
+ // label11
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label11, DevExpress.Utils.DefaultBoolean.Default);
+ this.label11.AutoSize = true;
+ this.label11.BackColor = System.Drawing.Color.Transparent;
+ this.label11.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label11.Location = new System.Drawing.Point(413, 97);
+ this.label11.Name = "label11";
+ this.label11.Size = new System.Drawing.Size(84, 20);
+ this.label11.TabIndex = 3081;
+ this.label11.Text = "종류스케쥴";
+ //
+ // lblNEXT송출글자색
+ //
+ this.lblNEXT송출글자색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lblNEXT송출글자색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lblNEXT송출글자색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lblNEXT송출글자색.Appearance.Options.UseBackColor = true;
+ this.lblNEXT송출글자색.Appearance.Options.UseFont = true;
+ this.lblNEXT송출글자색.Appearance.Options.UseForeColor = true;
+ this.lblNEXT송출글자색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lblNEXT송출글자색.Location = new System.Drawing.Point(177, 191);
+ this.lblNEXT송출글자색.Margin = new System.Windows.Forms.Padding(2);
+ this.lblNEXT송출글자색.Name = "lblNEXT송출글자색";
+ this.lblNEXT송출글자색.Size = new System.Drawing.Size(84, 25);
+ this.lblNEXT송출글자색.TabIndex = 3080;
+ //
+ // lblNEXT송출배경색
+ //
+ this.lblNEXT송출배경색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lblNEXT송출배경색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lblNEXT송출배경색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lblNEXT송출배경색.Appearance.Options.UseBackColor = true;
+ this.lblNEXT송출배경색.Appearance.Options.UseFont = true;
+ this.lblNEXT송출배경색.Appearance.Options.UseForeColor = true;
+ this.lblNEXT송출배경색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lblNEXT송출배경색.Location = new System.Drawing.Point(177, 138);
+ this.lblNEXT송출배경색.Margin = new System.Windows.Forms.Padding(2);
+ this.lblNEXT송출배경색.Name = "lblNEXT송출배경색";
+ this.lblNEXT송출배경색.Size = new System.Drawing.Size(84, 25);
+ this.lblNEXT송출배경색.TabIndex = 3079;
+ //
+ // label9
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label9, DevExpress.Utils.DefaultBoolean.Default);
+ this.label9.AutoSize = true;
+ this.label9.BackColor = System.Drawing.Color.Transparent;
+ this.label9.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label9.Location = new System.Drawing.Point(175, 97);
+ this.label9.Name = "label9";
+ this.label9.Size = new System.Drawing.Size(89, 20);
+ this.label9.TabIndex = 3078;
+ this.label9.Text = "송출 라인색";
+ //
+ // lbl완료상태글자색
+ //
+ this.lbl완료상태글자색.Appearance.BackColor = System.Drawing.Color.White;
+ this.lbl완료상태글자색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl완료상태글자색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl완료상태글자색.Appearance.Options.UseBackColor = true;
+ this.lbl완료상태글자색.Appearance.Options.UseFont = true;
+ this.lbl완료상태글자색.Appearance.Options.UseForeColor = true;
+ this.lbl완료상태글자색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl완료상태글자색.Location = new System.Drawing.Point(790, 191);
+ this.lbl완료상태글자색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl완료상태글자색.Name = "lbl완료상태글자색";
+ this.lbl완료상태글자색.Size = new System.Drawing.Size(84, 25);
+ this.lbl완료상태글자색.TabIndex = 3077;
+ //
+ // lbl완료상태배경색
+ //
+ this.lbl완료상태배경색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.lbl완료상태배경색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl완료상태배경색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl완료상태배경색.Appearance.Options.UseBackColor = true;
+ this.lbl완료상태배경색.Appearance.Options.UseFont = true;
+ this.lbl완료상태배경색.Appearance.Options.UseForeColor = true;
+ this.lbl완료상태배경색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl완료상태배경색.Location = new System.Drawing.Point(790, 138);
+ this.lbl완료상태배경색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl완료상태배경색.Name = "lbl완료상태배경색";
+ this.lbl완료상태배경색.Size = new System.Drawing.Size(84, 25);
+ this.lbl완료상태배경색.TabIndex = 3076;
+ //
+ // label8
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label8, DevExpress.Utils.DefaultBoolean.Default);
+ this.label8.AutoSize = true;
+ this.label8.BackColor = System.Drawing.Color.Transparent;
+ this.label8.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label8.Location = new System.Drawing.Point(800, 97);
+ this.label8.Name = "label8";
+ this.label8.Size = new System.Drawing.Size(69, 20);
+ this.label8.TabIndex = 3075;
+ this.label8.Text = "완료상태";
+ //
+ // lbl완료송출글자색
+ //
+ this.lbl완료송출글자색.Appearance.BackColor = System.Drawing.Color.White;
+ this.lbl완료송출글자색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl완료송출글자색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl완료송출글자색.Appearance.Options.UseBackColor = true;
+ this.lbl완료송출글자색.Appearance.Options.UseFont = true;
+ this.lbl완료송출글자색.Appearance.Options.UseForeColor = true;
+ this.lbl완료송출글자색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl완료송출글자색.Location = new System.Drawing.Point(1827, 194);
+ this.lbl완료송출글자색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl완료송출글자색.Name = "lbl완료송출글자색";
+ this.lbl완료송출글자색.Size = new System.Drawing.Size(84, 25);
+ this.lbl완료송출글자색.TabIndex = 3074;
+ this.lbl완료송출글자색.Visible = false;
+ //
+ // lbl완료송출배경색
+ //
+ this.lbl완료송출배경색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.lbl완료송출배경색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl완료송출배경색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl완료송출배경색.Appearance.Options.UseBackColor = true;
+ this.lbl완료송출배경색.Appearance.Options.UseFont = true;
+ this.lbl완료송출배경색.Appearance.Options.UseForeColor = true;
+ this.lbl완료송출배경색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl완료송출배경색.Location = new System.Drawing.Point(1827, 160);
+ this.lbl완료송출배경색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl완료송출배경색.Name = "lbl완료송출배경색";
+ this.lbl완료송출배경색.Size = new System.Drawing.Size(84, 25);
+ this.lbl완료송출배경색.TabIndex = 3073;
+ this.lbl완료송출배경색.Visible = false;
+ //
+ // label7
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label7, DevExpress.Utils.DefaultBoolean.Default);
+ this.label7.AutoSize = true;
+ this.label7.BackColor = System.Drawing.Color.Transparent;
+ this.label7.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label7.Location = new System.Drawing.Point(1837, 138);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(69, 20);
+ this.label7.TabIndex = 3072;
+ this.label7.Text = "완료송출";
+ this.label7.Visible = false;
+ //
+ // lblNEXT상태글자색
+ //
+ this.lblNEXT상태글자색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lblNEXT상태글자색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lblNEXT상태글자색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lblNEXT상태글자색.Appearance.Options.UseBackColor = true;
+ this.lblNEXT상태글자색.Appearance.Options.UseFont = true;
+ this.lblNEXT상태글자색.Appearance.Options.UseForeColor = true;
+ this.lblNEXT상태글자색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lblNEXT상태글자색.Location = new System.Drawing.Point(1336, 191);
+ this.lblNEXT상태글자색.Margin = new System.Windows.Forms.Padding(2);
+ this.lblNEXT상태글자색.Name = "lblNEXT상태글자색";
+ this.lblNEXT상태글자색.Size = new System.Drawing.Size(84, 25);
+ this.lblNEXT상태글자색.TabIndex = 3071;
+ //
+ // lblNEXT상태배경색
+ //
+ this.lblNEXT상태배경색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lblNEXT상태배경색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lblNEXT상태배경색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lblNEXT상태배경색.Appearance.Options.UseBackColor = true;
+ this.lblNEXT상태배경색.Appearance.Options.UseFont = true;
+ this.lblNEXT상태배경색.Appearance.Options.UseForeColor = true;
+ this.lblNEXT상태배경색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lblNEXT상태배경색.Location = new System.Drawing.Point(1336, 138);
+ this.lblNEXT상태배경색.Margin = new System.Windows.Forms.Padding(2);
+ this.lblNEXT상태배경색.Name = "lblNEXT상태배경색";
+ this.lblNEXT상태배경색.Size = new System.Drawing.Size(84, 25);
+ this.lblNEXT상태배경색.TabIndex = 3070;
+ //
+ // lblNEXT스케쥴글자색
+ //
+ this.lblNEXT스케쥴글자색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lblNEXT스케쥴글자색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lblNEXT스케쥴글자색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lblNEXT스케쥴글자색.Appearance.Options.UseBackColor = true;
+ this.lblNEXT스케쥴글자색.Appearance.Options.UseFont = true;
+ this.lblNEXT스케쥴글자색.Appearance.Options.UseForeColor = true;
+ this.lblNEXT스케쥴글자색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lblNEXT스케쥴글자색.Location = new System.Drawing.Point(1230, 192);
+ this.lblNEXT스케쥴글자색.Margin = new System.Windows.Forms.Padding(2);
+ this.lblNEXT스케쥴글자색.Name = "lblNEXT스케쥴글자색";
+ this.lblNEXT스케쥴글자색.Size = new System.Drawing.Size(84, 25);
+ this.lblNEXT스케쥴글자색.TabIndex = 3069;
+ //
+ // lblNEXT스케쥴배경색
+ //
+ this.lblNEXT스케쥴배경색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lblNEXT스케쥴배경색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lblNEXT스케쥴배경색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lblNEXT스케쥴배경색.Appearance.Options.UseBackColor = true;
+ this.lblNEXT스케쥴배경색.Appearance.Options.UseFont = true;
+ this.lblNEXT스케쥴배경색.Appearance.Options.UseForeColor = true;
+ this.lblNEXT스케쥴배경색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lblNEXT스케쥴배경색.Location = new System.Drawing.Point(1230, 139);
+ this.lblNEXT스케쥴배경색.Margin = new System.Windows.Forms.Padding(2);
+ this.lblNEXT스케쥴배경색.Name = "lblNEXT스케쥴배경색";
+ this.lblNEXT스케쥴배경색.Size = new System.Drawing.Size(84, 25);
+ this.lblNEXT스케쥴배경색.TabIndex = 3068;
+ //
+ // label5
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label5, DevExpress.Utils.DefaultBoolean.Default);
+ this.label5.AutoSize = true;
+ this.label5.BackColor = System.Drawing.Color.Transparent;
+ this.label5.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label5.Location = new System.Drawing.Point(1334, 97);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(83, 20);
+ this.label5.TabIndex = 3067;
+ this.label5.Text = "NEXT 상태";
+ //
+ // label6
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label6, DevExpress.Utils.DefaultBoolean.Default);
+ this.label6.AutoSize = true;
+ this.label6.BackColor = System.Drawing.Color.Transparent;
+ this.label6.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label6.Location = new System.Drawing.Point(1226, 97);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(98, 20);
+ this.label6.TabIndex = 3066;
+ this.label6.Text = "NEXT 스케쥴";
+ //
+ // lbl선택라인글자색
+ //
+ this.lbl선택라인글자색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lbl선택라인글자색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl선택라인글자색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl선택라인글자색.Appearance.Options.UseBackColor = true;
+ this.lbl선택라인글자색.Appearance.Options.UseFont = true;
+ this.lbl선택라인글자색.Appearance.Options.UseForeColor = true;
+ this.lbl선택라인글자색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl선택라인글자색.Location = new System.Drawing.Point(1595, 191);
+ this.lbl선택라인글자색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl선택라인글자색.Name = "lbl선택라인글자색";
+ this.lbl선택라인글자색.Size = new System.Drawing.Size(84, 25);
+ this.lbl선택라인글자색.TabIndex = 3065;
+ //
+ // lbl선택라인배경색
+ //
+ this.lbl선택라인배경색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lbl선택라인배경색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl선택라인배경색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl선택라인배경색.Appearance.Options.UseBackColor = true;
+ this.lbl선택라인배경색.Appearance.Options.UseFont = true;
+ this.lbl선택라인배경색.Appearance.Options.UseForeColor = true;
+ this.lbl선택라인배경색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl선택라인배경색.Location = new System.Drawing.Point(1595, 138);
+ this.lbl선택라인배경색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl선택라인배경색.Name = "lbl선택라인배경색";
+ this.lbl선택라인배경색.Size = new System.Drawing.Size(84, 25);
+ this.lbl선택라인배경색.TabIndex = 3064;
+ //
+ // lblOnAir상태글자색
+ //
+ this.lblOnAir상태글자색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lblOnAir상태글자색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lblOnAir상태글자색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lblOnAir상태글자색.Appearance.Options.UseBackColor = true;
+ this.lblOnAir상태글자색.Appearance.Options.UseFont = true;
+ this.lblOnAir상태글자색.Appearance.Options.UseForeColor = true;
+ this.lblOnAir상태글자색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lblOnAir상태글자색.Location = new System.Drawing.Point(1074, 191);
+ this.lblOnAir상태글자색.Margin = new System.Windows.Forms.Padding(2);
+ this.lblOnAir상태글자색.Name = "lblOnAir상태글자색";
+ this.lblOnAir상태글자색.Size = new System.Drawing.Size(84, 25);
+ this.lblOnAir상태글자색.TabIndex = 3063;
+ //
+ // lblOnAir상태배경색
+ //
+ this.lblOnAir상태배경색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lblOnAir상태배경색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lblOnAir상태배경색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lblOnAir상태배경색.Appearance.Options.UseBackColor = true;
+ this.lblOnAir상태배경색.Appearance.Options.UseFont = true;
+ this.lblOnAir상태배경색.Appearance.Options.UseForeColor = true;
+ this.lblOnAir상태배경색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lblOnAir상태배경색.Location = new System.Drawing.Point(1074, 138);
+ this.lblOnAir상태배경색.Margin = new System.Windows.Forms.Padding(2);
+ this.lblOnAir상태배경색.Name = "lblOnAir상태배경색";
+ this.lblOnAir상태배경색.Size = new System.Drawing.Size(84, 25);
+ this.lblOnAir상태배경색.TabIndex = 3062;
+ //
+ // lblOnAir송출글자색
+ //
+ this.lblOnAir송출글자색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lblOnAir송출글자색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lblOnAir송출글자색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lblOnAir송출글자색.Appearance.Options.UseBackColor = true;
+ this.lblOnAir송출글자색.Appearance.Options.UseFont = true;
+ this.lblOnAir송출글자색.Appearance.Options.UseForeColor = true;
+ this.lblOnAir송출글자색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lblOnAir송출글자색.Location = new System.Drawing.Point(1827, 111);
+ this.lblOnAir송출글자색.Margin = new System.Windows.Forms.Padding(2);
+ this.lblOnAir송출글자색.Name = "lblOnAir송출글자색";
+ this.lblOnAir송출글자색.Size = new System.Drawing.Size(84, 25);
+ this.lblOnAir송출글자색.TabIndex = 3061;
+ this.lblOnAir송출글자색.Visible = false;
+ //
+ // lblOnAir송출배경색
+ //
+ this.lblOnAir송출배경색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lblOnAir송출배경색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lblOnAir송출배경색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lblOnAir송출배경색.Appearance.Options.UseBackColor = true;
+ this.lblOnAir송출배경색.Appearance.Options.UseFont = true;
+ this.lblOnAir송출배경색.Appearance.Options.UseForeColor = true;
+ this.lblOnAir송출배경색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lblOnAir송출배경색.Location = new System.Drawing.Point(1827, 77);
+ this.lblOnAir송출배경색.Margin = new System.Windows.Forms.Padding(2);
+ this.lblOnAir송출배경색.Name = "lblOnAir송출배경색";
+ this.lblOnAir송출배경색.Size = new System.Drawing.Size(84, 25);
+ this.lblOnAir송출배경색.TabIndex = 3060;
+ this.lblOnAir송출배경색.Visible = false;
+ //
+ // lblOnAir스케쥴글자색
+ //
+ this.lblOnAir스케쥴글자색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lblOnAir스케쥴글자색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lblOnAir스케쥴글자색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lblOnAir스케쥴글자색.Appearance.Options.UseBackColor = true;
+ this.lblOnAir스케쥴글자색.Appearance.Options.UseFont = true;
+ this.lblOnAir스케쥴글자색.Appearance.Options.UseForeColor = true;
+ this.lblOnAir스케쥴글자색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lblOnAir스케쥴글자색.Location = new System.Drawing.Point(956, 191);
+ this.lblOnAir스케쥴글자색.Margin = new System.Windows.Forms.Padding(2);
+ this.lblOnAir스케쥴글자색.Name = "lblOnAir스케쥴글자색";
+ this.lblOnAir스케쥴글자색.Size = new System.Drawing.Size(84, 25);
+ this.lblOnAir스케쥴글자색.TabIndex = 3059;
+ //
+ // lblOnAir스케쥴배경색
+ //
+ this.lblOnAir스케쥴배경색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(170)))), ((int)(((byte)(243)))));
+ this.lblOnAir스케쥴배경색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lblOnAir스케쥴배경색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lblOnAir스케쥴배경색.Appearance.Options.UseBackColor = true;
+ this.lblOnAir스케쥴배경색.Appearance.Options.UseFont = true;
+ this.lblOnAir스케쥴배경색.Appearance.Options.UseForeColor = true;
+ this.lblOnAir스케쥴배경색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lblOnAir스케쥴배경색.Location = new System.Drawing.Point(956, 138);
+ this.lblOnAir스케쥴배경색.Margin = new System.Windows.Forms.Padding(2);
+ this.lblOnAir스케쥴배경색.Name = "lblOnAir스케쥴배경색";
+ this.lblOnAir스케쥴배경색.Size = new System.Drawing.Size(84, 25);
+ this.lblOnAir스케쥴배경색.TabIndex = 3058;
+ //
+ // lbl완료스케쥴글자색
+ //
+ this.lbl완료스케쥴글자색.Appearance.BackColor = System.Drawing.Color.White;
+ this.lbl완료스케쥴글자색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl완료스케쥴글자색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl완료스케쥴글자색.Appearance.Options.UseBackColor = true;
+ this.lbl완료스케쥴글자색.Appearance.Options.UseFont = true;
+ this.lbl완료스케쥴글자색.Appearance.Options.UseForeColor = true;
+ this.lbl완료스케쥴글자색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl완료스케쥴글자색.Location = new System.Drawing.Point(683, 191);
+ this.lbl완료스케쥴글자색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl완료스케쥴글자색.Name = "lbl완료스케쥴글자색";
+ this.lbl완료스케쥴글자색.Size = new System.Drawing.Size(84, 25);
+ this.lbl완료스케쥴글자색.TabIndex = 3057;
+ //
+ // lbl완료스케쥴배경색
+ //
+ this.lbl완료스케쥴배경색.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.lbl완료스케쥴배경색.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl완료스케쥴배경색.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lbl완료스케쥴배경색.Appearance.Options.UseBackColor = true;
+ this.lbl완료스케쥴배경색.Appearance.Options.UseFont = true;
+ this.lbl완료스케쥴배경색.Appearance.Options.UseForeColor = true;
+ this.lbl완료스케쥴배경색.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lbl완료스케쥴배경색.Location = new System.Drawing.Point(683, 138);
+ this.lbl완료스케쥴배경색.Margin = new System.Windows.Forms.Padding(2);
+ this.lbl완료스케쥴배경색.Name = "lbl완료스케쥴배경색";
+ this.lbl완료스케쥴배경색.Size = new System.Drawing.Size(84, 25);
+ this.lbl완료스케쥴배경색.TabIndex = 3056;
+ //
+ // label4
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label4, DevExpress.Utils.DefaultBoolean.Default);
+ this.label4.AutoSize = true;
+ this.label4.BackColor = System.Drawing.Color.Transparent;
+ this.label4.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label4.Location = new System.Drawing.Point(1599, 97);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(74, 20);
+ this.label4.TabIndex = 3054;
+ this.label4.Text = "선택 라인";
+ //
+ // label2
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label2, DevExpress.Utils.DefaultBoolean.Default);
+ this.label2.AutoSize = true;
+ this.label2.BackColor = System.Drawing.Color.Transparent;
+ this.label2.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label2.Location = new System.Drawing.Point(54, 194);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(54, 20);
+ this.label2.TabIndex = 3053;
+ this.label2.Text = "글자색";
+ //
+ // label1
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label1, DevExpress.Utils.DefaultBoolean.Default);
+ this.label1.AutoSize = true;
+ this.label1.BackColor = System.Drawing.Color.Transparent;
+ this.label1.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label1.Location = new System.Drawing.Point(54, 143);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(54, 20);
+ this.label1.TabIndex = 3052;
+ this.label1.Text = "배경색";
+ //
+ // label3
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label3, DevExpress.Utils.DefaultBoolean.Default);
+ this.label3.AutoSize = true;
+ this.label3.BackColor = System.Drawing.Color.Transparent;
+ this.label3.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label3.Location = new System.Drawing.Point(1072, 97);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(86, 20);
+ this.label3.TabIndex = 3049;
+ this.label3.Text = "OnAir 상태";
+ //
+ // labelControl92
+ //
+ this.labelControl92.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.labelControl92.Appearance.Options.UseFont = true;
+ this.labelControl92.Location = new System.Drawing.Point(49, 54);
+ this.labelControl92.Name = "labelControl92";
+ this.labelControl92.Size = new System.Drawing.Size(64, 21);
+ this.labelControl92.TabIndex = 3047;
+ this.labelControl92.Text = "색상설정";
+ //
+ // label69
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label69, DevExpress.Utils.DefaultBoolean.Default);
+ this.label69.AutoSize = true;
+ this.label69.BackColor = System.Drawing.Color.Transparent;
+ this.label69.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label69.Location = new System.Drawing.Point(1823, 55);
+ this.label69.Name = "label69";
+ this.label69.Size = new System.Drawing.Size(86, 20);
+ this.label69.TabIndex = 591;
+ this.label69.Text = "OnAir 송출";
+ this.label69.Visible = false;
+ //
+ // label73
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label73, DevExpress.Utils.DefaultBoolean.Default);
+ this.label73.AutoSize = true;
+ this.label73.BackColor = System.Drawing.Color.Transparent;
+ this.label73.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label73.Location = new System.Drawing.Point(683, 97);
+ this.label73.Name = "label73";
+ this.label73.Size = new System.Drawing.Size(84, 20);
+ this.label73.TabIndex = 585;
+ this.label73.Text = "완료스케쥴";
+ //
+ // label61
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.label61, DevExpress.Utils.DefaultBoolean.Default);
+ this.label61.AutoSize = true;
+ this.label61.BackColor = System.Drawing.Color.Transparent;
+ this.label61.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.label61.Location = new System.Drawing.Point(949, 97);
+ this.label61.Name = "label61";
+ this.label61.Size = new System.Drawing.Size(101, 20);
+ this.label61.TabIndex = 587;
+ this.label61.Text = "OnAir 스케쥴";
+ //
+ // groupControl6
+ //
+ this.groupControl6.AppearanceCaption.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.groupControl6.AppearanceCaption.Options.UseFont = true;
+ this.groupControl6.Controls.Add(this.labelControl45);
+ this.groupControl6.Controls.Add(this.btnTimeGap1mm);
+ this.groupControl6.Controls.Add(this.btnTimeGap1m);
+ this.groupControl6.Controls.Add(this.txtTimeGap);
+ this.groupControl6.Controls.Add(this.labelControl40);
+ this.groupControl6.Controls.Add(this.btnTimeGap1sm);
+ this.groupControl6.Controls.Add(this.btnTimeGap1nm);
+ this.groupControl6.Controls.Add(this.btnTimeGap1s);
+ this.groupControl6.Controls.Add(this.btnTimeGap1n);
+ this.groupControl6.Controls.Add(this.labelControl39);
+ this.groupControl6.Controls.Add(this.groupBoxAdminOnly);
+ this.groupControl6.Controls.Add(this.labelControl23);
+ this.groupControl6.Controls.Add(this.lblAutoSync);
+ this.groupControl6.Controls.Add(this.toggleSwitchAutoSync);
+ this.groupControl6.Controls.Add(this.lbl수정모드);
+ this.groupControl6.Controls.Add(this.lblDoneDisplayInvisible);
+ this.groupControl6.Controls.Add(this.toggleSwitch수정모드);
+ this.groupControl6.Controls.Add(this.toggleSwitchDone송출보지않기);
+ this.groupControl6.Controls.Add(this.timeSpanEditForbidEnd);
+ this.groupControl6.Controls.Add(this.labelControl11);
+ this.groupControl6.Controls.Add(this.labelControl13);
+ this.groupControl6.Controls.Add(this.timeSpanEditForbidStart);
+ this.groupControl6.Controls.Add(this.labelControl8);
+ this.groupControl6.Controls.Add(this.labelControl6);
+ this.groupControl6.Controls.Add(this.labelControl7);
+ this.groupControl6.Controls.Add(this.labelControl34);
+ this.groupControl6.Controls.Add(this.labelControl33);
+ this.groupControl6.Controls.Add(this.txtDissolveTime);
+ this.groupControl6.Controls.Add(this.labelControl22);
+ this.groupControl6.Controls.Add(this.btnSettingTornado);
+ this.groupControl6.Controls.Add(this.labelControl26);
+ this.groupControl6.Controls.Add(this.txtDBIP);
+ this.groupControl6.Dock = System.Windows.Forms.DockStyle.Top;
+ this.groupControl6.Location = new System.Drawing.Point(0, 0);
+ this.groupControl6.Margin = new System.Windows.Forms.Padding(2);
+ this.groupControl6.Name = "groupControl6";
+ this.groupControl6.Size = new System.Drawing.Size(1918, 316);
+ this.groupControl6.TabIndex = 3053;
+ this.groupControl6.Text = "Options";
+ this.groupControl6.ToolTipController = this.defaultToolTipController1.DefaultController;
+ //
+ // labelControl45
+ //
+ this.labelControl45.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.labelControl45.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl45.Appearance.Options.UseFont = true;
+ this.labelControl45.Appearance.Options.UseForeColor = true;
+ this.labelControl45.Location = new System.Drawing.Point(696, 196);
+ this.labelControl45.Name = "labelControl45";
+ this.labelControl45.Size = new System.Drawing.Size(190, 21);
+ this.labelControl45.TabIndex = 1124;
+ this.labelControl45.Text = "(상단의 현재 시각을 변경)";
+ //
+ // btnTimeGap1mm
+ //
+ this.btnTimeGap1mm.Appearance.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold);
+ this.btnTimeGap1mm.Appearance.Options.UseFont = true;
+ this.btnTimeGap1mm.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnTimeGap1mm.ImageOptions.SvgImage")));
+ this.btnTimeGap1mm.Location = new System.Drawing.Point(880, 264);
+ this.btnTimeGap1mm.Name = "btnTimeGap1mm";
+ this.btnTimeGap1mm.Size = new System.Drawing.Size(90, 33);
+ this.btnTimeGap1mm.TabIndex = 1123;
+ this.btnTimeGap1mm.Text = "1분";
+ this.btnTimeGap1mm.Click += new System.EventHandler(this.btnTimeGap1n_Click);
+ //
+ // btnTimeGap1m
+ //
+ this.btnTimeGap1m.Appearance.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold);
+ this.btnTimeGap1m.Appearance.Options.UseFont = true;
+ this.btnTimeGap1m.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnTimeGap1m.ImageOptions.SvgImage")));
+ this.btnTimeGap1m.Location = new System.Drawing.Point(880, 223);
+ this.btnTimeGap1m.Name = "btnTimeGap1m";
+ this.btnTimeGap1m.Size = new System.Drawing.Size(90, 33);
+ this.btnTimeGap1m.TabIndex = 1122;
+ this.btnTimeGap1m.Text = "1분";
+ this.btnTimeGap1m.Click += new System.EventHandler(this.btnTimeGap1n_Click);
+ //
+ // txtTimeGap
+ //
+ this.txtTimeGap.EditValue = "0";
+ this.txtTimeGap.Location = new System.Drawing.Point(554, 223);
+ this.txtTimeGap.MenuManager = this.toolbarFormManager1;
+ this.txtTimeGap.Name = "txtTimeGap";
+ this.txtTimeGap.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 22F, System.Drawing.FontStyle.Bold);
+ this.txtTimeGap.Properties.Appearance.Options.UseFont = true;
+ this.txtTimeGap.Properties.Appearance.Options.UseTextOptions = true;
+ this.txtTimeGap.Properties.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+ this.txtTimeGap.Size = new System.Drawing.Size(76, 46);
+ this.txtTimeGap.TabIndex = 1120;
+ //
+ // labelControl40
+ //
+ this.labelControl40.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.labelControl40.Appearance.Options.UseFont = true;
+ this.labelControl40.Location = new System.Drawing.Point(644, 239);
+ this.labelControl40.Name = "labelControl40";
+ this.labelControl40.Size = new System.Drawing.Size(16, 21);
+ this.labelControl40.TabIndex = 1119;
+ this.labelControl40.Text = "초";
+ //
+ // btnTimeGap1sm
+ //
+ this.btnTimeGap1sm.Appearance.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold);
+ this.btnTimeGap1sm.Appearance.Options.UseFont = true;
+ this.btnTimeGap1sm.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnTimeGap1sm.ImageOptions.SvgImage")));
+ this.btnTimeGap1sm.Location = new System.Drawing.Point(784, 264);
+ this.btnTimeGap1sm.Name = "btnTimeGap1sm";
+ this.btnTimeGap1sm.Size = new System.Drawing.Size(90, 33);
+ this.btnTimeGap1sm.TabIndex = 1117;
+ this.btnTimeGap1sm.Text = "1초";
+ this.btnTimeGap1sm.Click += new System.EventHandler(this.btnTimeGap1n_Click);
+ //
+ // btnTimeGap1nm
+ //
+ this.btnTimeGap1nm.Appearance.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold);
+ this.btnTimeGap1nm.Appearance.Options.UseFont = true;
+ this.btnTimeGap1nm.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnTimeGap1nm.ImageOptions.SvgImage")));
+ this.btnTimeGap1nm.Location = new System.Drawing.Point(688, 264);
+ this.btnTimeGap1nm.Name = "btnTimeGap1nm";
+ this.btnTimeGap1nm.Size = new System.Drawing.Size(90, 33);
+ this.btnTimeGap1nm.TabIndex = 1116;
+ this.btnTimeGap1nm.Text = "0.1초";
+ this.btnTimeGap1nm.Click += new System.EventHandler(this.btnTimeGap1n_Click);
+ //
+ // btnTimeGap1s
+ //
+ this.btnTimeGap1s.Appearance.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold);
+ this.btnTimeGap1s.Appearance.Options.UseFont = true;
+ this.btnTimeGap1s.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnTimeGap1s.ImageOptions.SvgImage")));
+ this.btnTimeGap1s.Location = new System.Drawing.Point(784, 223);
+ this.btnTimeGap1s.Name = "btnTimeGap1s";
+ this.btnTimeGap1s.Size = new System.Drawing.Size(90, 33);
+ this.btnTimeGap1s.TabIndex = 1115;
+ this.btnTimeGap1s.Text = "1초";
+ this.btnTimeGap1s.Click += new System.EventHandler(this.btnTimeGap1n_Click);
+ //
+ // btnTimeGap1n
+ //
+ this.btnTimeGap1n.Appearance.Font = new System.Drawing.Font("맑은 고딕", 10F, System.Drawing.FontStyle.Bold);
+ this.btnTimeGap1n.Appearance.Options.UseFont = true;
+ this.btnTimeGap1n.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnTimeGap1n.ImageOptions.SvgImage")));
+ this.btnTimeGap1n.Location = new System.Drawing.Point(688, 223);
+ this.btnTimeGap1n.Name = "btnTimeGap1n";
+ this.btnTimeGap1n.Size = new System.Drawing.Size(90, 33);
+ this.btnTimeGap1n.TabIndex = 1114;
+ this.btnTimeGap1n.Text = "0.1초";
+ this.btnTimeGap1n.Click += new System.EventHandler(this.btnTimeGap1n_Click);
+ //
+ // labelControl39
+ //
+ this.labelControl39.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl39.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl39.Appearance.Options.UseFont = true;
+ this.labelControl39.Appearance.Options.UseForeColor = true;
+ this.labelControl39.Location = new System.Drawing.Point(538, 193);
+ this.labelControl39.Name = "labelControl39";
+ this.labelControl39.Size = new System.Drawing.Size(151, 25);
+ this.labelControl39.TabIndex = 1113;
+ this.labelControl39.Text = "TimeGap Setting";
+ //
+ // groupBoxAdminOnly
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.groupBoxAdminOnly, DevExpress.Utils.DefaultBoolean.Default);
+ this.groupBoxAdminOnly.Controls.Add(this.toggleSwitchChannel);
+ this.groupBoxAdminOnly.Controls.Add(this.lblSwitchChannel);
+ this.groupBoxAdminOnly.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Bold);
+ this.groupBoxAdminOnly.ForeColor = System.Drawing.Color.IndianRed;
+ this.groupBoxAdminOnly.Location = new System.Drawing.Point(1170, 45);
+ this.groupBoxAdminOnly.Name = "groupBoxAdminOnly";
+ this.groupBoxAdminOnly.Size = new System.Drawing.Size(246, 237);
+ this.groupBoxAdminOnly.TabIndex = 1109;
+ this.groupBoxAdminOnly.TabStop = false;
+ this.groupBoxAdminOnly.Text = "Admin Only";
+ this.groupBoxAdminOnly.Visible = false;
+ //
+ // toggleSwitchChannel
+ //
+ this.toggleSwitchChannel.Location = new System.Drawing.Point(67, 113);
+ this.toggleSwitchChannel.MenuManager = this.toolbarFormManager1;
+ this.toggleSwitchChannel.Name = "toggleSwitchChannel";
+ this.toggleSwitchChannel.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 15F);
+ this.toggleSwitchChannel.Properties.Appearance.ForeColor = System.Drawing.Color.White;
+ this.toggleSwitchChannel.Properties.Appearance.Options.UseFont = true;
+ this.toggleSwitchChannel.Properties.Appearance.Options.UseForeColor = true;
+ this.toggleSwitchChannel.Properties.GlyphAlignment = DevExpress.Utils.HorzAlignment.Default;
+ this.toggleSwitchChannel.Properties.OffText = "";
+ this.toggleSwitchChannel.Properties.OnText = "";
+ this.toggleSwitchChannel.Properties.ShowText = false;
+ this.toggleSwitchChannel.Size = new System.Drawing.Size(99, 31);
+ this.toggleSwitchChannel.TabIndex = 14;
+ this.toggleSwitchChannel.Toggled += new System.EventHandler(this.toggleSwitchChannel_Toggled);
+ //
+ // lblSwitchChannel
+ //
+ this.lblSwitchChannel.Appearance.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lblSwitchChannel.Appearance.ForeColor = System.Drawing.Color.Snow;
+ this.lblSwitchChannel.Appearance.Options.UseFont = true;
+ this.lblSwitchChannel.Appearance.Options.UseForeColor = true;
+ this.lblSwitchChannel.Location = new System.Drawing.Point(93, 79);
+ this.lblSwitchChannel.Name = "lblSwitchChannel";
+ this.lblSwitchChannel.Size = new System.Drawing.Size(44, 28);
+ this.lblSwitchChannel.TabIndex = 15;
+ this.lblSwitchChannel.Text = "IPTV";
+ //
+ // labelControl23
+ //
+ this.labelControl23.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
+ this.labelControl23.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.labelControl23.Appearance.ForeColor = System.Drawing.Color.Snow;
+ this.labelControl23.Appearance.Options.UseBackColor = true;
+ this.labelControl23.Appearance.Options.UseFont = true;
+ this.labelControl23.Appearance.Options.UseForeColor = true;
+ this.labelControl23.Location = new System.Drawing.Point(152, 190);
+ this.labelControl23.Name = "labelControl23";
+ this.labelControl23.Size = new System.Drawing.Size(75, 21);
+ this.labelControl23.TabIndex = 1082;
+ this.labelControl23.Text = "(1분 주기)";
+ this.labelControl23.Visible = false;
+ //
+ // lblAutoSync
+ //
+ this.lblAutoSync.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
+ this.lblAutoSync.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.lblAutoSync.Appearance.ForeColor = System.Drawing.Color.Snow;
+ this.lblAutoSync.Appearance.Options.UseBackColor = true;
+ this.lblAutoSync.Appearance.Options.UseFont = true;
+ this.lblAutoSync.Appearance.Options.UseForeColor = true;
+ this.lblAutoSync.Location = new System.Drawing.Point(111, 163);
+ this.lblAutoSync.Name = "lblAutoSync";
+ this.lblAutoSync.Size = new System.Drawing.Size(116, 21);
+ this.lblAutoSync.TabIndex = 1081;
+ this.lblAutoSync.Text = "자동 동기화 Off";
+ this.lblAutoSync.Visible = false;
+ //
+ // toggleSwitchAutoSync
+ //
+ this.toggleSwitchAutoSync.Location = new System.Drawing.Point(244, 158);
+ this.toggleSwitchAutoSync.MenuManager = this.toolbarFormManager1;
+ this.toggleSwitchAutoSync.Name = "toggleSwitchAutoSync";
+ this.toggleSwitchAutoSync.Properties.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50)))));
+ this.toggleSwitchAutoSync.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 15F);
+ this.toggleSwitchAutoSync.Properties.Appearance.ForeColor = System.Drawing.Color.White;
+ this.toggleSwitchAutoSync.Properties.Appearance.Options.UseBackColor = true;
+ this.toggleSwitchAutoSync.Properties.Appearance.Options.UseFont = true;
+ this.toggleSwitchAutoSync.Properties.Appearance.Options.UseForeColor = true;
+ this.toggleSwitchAutoSync.Properties.GlyphAlignment = DevExpress.Utils.HorzAlignment.Default;
+ this.toggleSwitchAutoSync.Properties.OffText = "";
+ this.toggleSwitchAutoSync.Properties.OnText = "";
+ this.toggleSwitchAutoSync.Properties.ShowText = false;
+ this.toggleSwitchAutoSync.Size = new System.Drawing.Size(99, 31);
+ this.toggleSwitchAutoSync.TabIndex = 1080;
+ this.toggleSwitchAutoSync.Visible = false;
+ this.toggleSwitchAutoSync.Toggled += new System.EventHandler(this.toggleSwitchAutoSync_Toggled);
+ //
+ // lbl수정모드
+ //
+ this.lbl수정모드.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(78)))), ((int)(((byte)(89)))), ((int)(((byte)(120)))));
+ this.lbl수정모드.Appearance.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lbl수정모드.Appearance.ForeColor = System.Drawing.Color.Snow;
+ this.lbl수정모드.Appearance.Options.UseBackColor = true;
+ this.lbl수정모드.Appearance.Options.UseFont = true;
+ this.lbl수정모드.Appearance.Options.UseForeColor = true;
+ this.lbl수정모드.Location = new System.Drawing.Point(1777, 59);
+ this.lbl수정모드.Name = "lbl수정모드";
+ this.lbl수정모드.Size = new System.Drawing.Size(117, 28);
+ this.lbl수정모드.TabIndex = 1101;
+ this.lbl수정모드.Text = "수정모드 Off";
+ this.lbl수정모드.Visible = false;
+ //
+ // lblDoneDisplayInvisible
+ //
+ this.lblDoneDisplayInvisible.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.lblDoneDisplayInvisible.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.lblDoneDisplayInvisible.Appearance.Options.UseFont = true;
+ this.lblDoneDisplayInvisible.Appearance.Options.UseForeColor = true;
+ this.lblDoneDisplayInvisible.Location = new System.Drawing.Point(979, 55);
+ this.lblDoneDisplayInvisible.Name = "lblDoneDisplayInvisible";
+ this.lblDoneDisplayInvisible.Size = new System.Drawing.Size(121, 25);
+ this.lblDoneDisplayInvisible.TabIndex = 1090;
+ this.lblDoneDisplayInvisible.Text = "송출완료 보임";
+ //
+ // toggleSwitch수정모드
+ //
+ this.toggleSwitch수정모드.Location = new System.Drawing.Point(1793, 94);
+ this.toggleSwitch수정모드.MenuManager = this.toolbarFormManager1;
+ this.toggleSwitch수정모드.Name = "toggleSwitch수정모드";
+ this.toggleSwitch수정모드.Properties.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(78)))), ((int)(((byte)(89)))), ((int)(((byte)(120)))));
+ this.toggleSwitch수정모드.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 15F);
+ this.toggleSwitch수정모드.Properties.Appearance.ForeColor = System.Drawing.Color.White;
+ this.toggleSwitch수정모드.Properties.Appearance.Options.UseBackColor = true;
+ this.toggleSwitch수정모드.Properties.Appearance.Options.UseFont = true;
+ this.toggleSwitch수정모드.Properties.Appearance.Options.UseForeColor = true;
+ this.toggleSwitch수정모드.Properties.GlyphAlignment = DevExpress.Utils.HorzAlignment.Default;
+ this.toggleSwitch수정모드.Properties.OffText = "";
+ this.toggleSwitch수정모드.Properties.OnText = "";
+ this.toggleSwitch수정모드.Properties.ShowText = false;
+ this.toggleSwitch수정모드.Size = new System.Drawing.Size(99, 31);
+ this.toggleSwitch수정모드.TabIndex = 1100;
+ this.toggleSwitch수정모드.Visible = false;
+ this.toggleSwitch수정모드.Toggled += new System.EventHandler(this.toggleSwitch수정모드_Toggled);
+ //
+ // toggleSwitchDone송출보지않기
+ //
+ this.toggleSwitchDone송출보지않기.Location = new System.Drawing.Point(995, 90);
+ this.toggleSwitchDone송출보지않기.MenuManager = this.toolbarFormManager1;
+ this.toggleSwitchDone송출보지않기.Name = "toggleSwitchDone송출보지않기";
+ this.toggleSwitchDone송출보지않기.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 15F);
+ this.toggleSwitchDone송출보지않기.Properties.Appearance.ForeColor = System.Drawing.Color.White;
+ this.toggleSwitchDone송출보지않기.Properties.Appearance.Options.UseFont = true;
+ this.toggleSwitchDone송출보지않기.Properties.Appearance.Options.UseForeColor = true;
+ this.toggleSwitchDone송출보지않기.Properties.GlyphAlignment = DevExpress.Utils.HorzAlignment.Default;
+ this.toggleSwitchDone송출보지않기.Properties.OffText = "";
+ this.toggleSwitchDone송출보지않기.Properties.OnText = "";
+ this.toggleSwitchDone송출보지않기.Properties.ShowText = false;
+ this.toggleSwitchDone송출보지않기.Size = new System.Drawing.Size(99, 31);
+ this.toggleSwitchDone송출보지않기.TabIndex = 1089;
+ this.toggleSwitchDone송출보지않기.Toggled += new System.EventHandler(this.toggleSwitchDone송출보지않기_Toggled);
+ //
+ // timeSpanEditForbidEnd
+ //
+ this.timeSpanEditForbidEnd.EditValue = System.TimeSpan.Parse("00:03:00");
+ this.timeSpanEditForbidEnd.Location = new System.Drawing.Point(631, 130);
+ this.timeSpanEditForbidEnd.MenuManager = this.toolbarFormManager1;
+ this.timeSpanEditForbidEnd.Name = "timeSpanEditForbidEnd";
+ this.timeSpanEditForbidEnd.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.timeSpanEditForbidEnd.Properties.Appearance.Options.UseFont = true;
+ this.timeSpanEditForbidEnd.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.timeSpanEditForbidEnd.Size = new System.Drawing.Size(130, 32);
+ this.timeSpanEditForbidEnd.TabIndex = 1079;
+ //
+ // labelControl11
+ //
+ this.labelControl11.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.labelControl11.Appearance.Options.UseFont = true;
+ this.labelControl11.Location = new System.Drawing.Point(537, 136);
+ this.labelControl11.Name = "labelControl11";
+ this.labelControl11.Size = new System.Drawing.Size(86, 21);
+ this.labelControl11.TabIndex = 1078;
+ this.labelControl11.Text = "테이프 종료";
+ //
+ // labelControl13
+ //
+ this.labelControl13.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.labelControl13.Appearance.Options.UseFont = true;
+ this.labelControl13.Location = new System.Drawing.Point(767, 136);
+ this.labelControl13.Name = "labelControl13";
+ this.labelControl13.Size = new System.Drawing.Size(54, 21);
+ this.labelControl13.TabIndex = 1077;
+ this.labelControl13.Text = "전 금지";
+ //
+ // timeSpanEditForbidStart
+ //
+ this.timeSpanEditForbidStart.EditValue = System.TimeSpan.Parse("00:03:00");
+ this.timeSpanEditForbidStart.Location = new System.Drawing.Point(631, 92);
+ this.timeSpanEditForbidStart.MenuManager = this.toolbarFormManager1;
+ this.timeSpanEditForbidStart.Name = "timeSpanEditForbidStart";
+ this.timeSpanEditForbidStart.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.timeSpanEditForbidStart.Properties.Appearance.Options.UseFont = true;
+ this.timeSpanEditForbidStart.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.timeSpanEditForbidStart.Size = new System.Drawing.Size(130, 32);
+ this.timeSpanEditForbidStart.TabIndex = 1076;
+ //
+ // labelControl8
+ //
+ this.labelControl8.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.labelControl8.Appearance.Options.UseFont = true;
+ this.labelControl8.Location = new System.Drawing.Point(537, 98);
+ this.labelControl8.Name = "labelControl8";
+ this.labelControl8.Size = new System.Drawing.Size(92, 21);
+ this.labelControl8.TabIndex = 681;
+ this.labelControl8.Text = "테이프 시작 ";
+ //
+ // labelControl6
+ //
+ this.labelControl6.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl6.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl6.Appearance.Options.UseFont = true;
+ this.labelControl6.Appearance.Options.UseForeColor = true;
+ this.labelControl6.Location = new System.Drawing.Point(533, 55);
+ this.labelControl6.Name = "labelControl6";
+ this.labelControl6.Size = new System.Drawing.Size(173, 25);
+ this.labelControl6.TabIndex = 680;
+ this.labelControl6.Text = "방송 금지 시각 설정";
+ //
+ // labelControl7
+ //
+ this.labelControl7.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.labelControl7.Appearance.Options.UseFont = true;
+ this.labelControl7.Location = new System.Drawing.Point(767, 98);
+ this.labelControl7.Name = "labelControl7";
+ this.labelControl7.Size = new System.Drawing.Size(70, 21);
+ this.labelControl7.TabIndex = 678;
+ this.labelControl7.Text = "동안 금지";
+ //
+ // labelControl34
+ //
+ this.labelControl34.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl34.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl34.Appearance.Options.UseFont = true;
+ this.labelControl34.Appearance.Options.UseForeColor = true;
+ this.labelControl34.Location = new System.Drawing.Point(995, 235);
+ this.labelControl34.Name = "labelControl34";
+ this.labelControl34.Size = new System.Drawing.Size(74, 25);
+ this.labelControl34.TabIndex = 677;
+ this.labelControl34.Text = "Dissolve";
+ this.labelControl34.Visible = false;
+ //
+ // labelControl33
+ //
+ this.labelControl33.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl33.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl33.Appearance.Options.UseFont = true;
+ this.labelControl33.Appearance.Options.UseForeColor = true;
+ this.labelControl33.Location = new System.Drawing.Point(105, 57);
+ this.labelControl33.Name = "labelControl33";
+ this.labelControl33.Size = new System.Drawing.Size(103, 25);
+ this.labelControl33.TabIndex = 676;
+ this.labelControl33.Text = "Connection";
+ //
+ // txtDissolveTime
+ //
+ this.txtDissolveTime.EditValue = "5";
+ this.txtDissolveTime.Location = new System.Drawing.Point(1056, 266);
+ this.txtDissolveTime.Name = "txtDissolveTime";
+ this.txtDissolveTime.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.txtDissolveTime.Properties.Appearance.Options.UseFont = true;
+ this.txtDissolveTime.Properties.Appearance.Options.UseTextOptions = true;
+ this.txtDissolveTime.Properties.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+ this.txtDissolveTime.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
+ this.txtDissolveTime.Properties.MaskSettings.Set("mask", "d");
+ this.txtDissolveTime.Properties.MaskSettings.Set("valueAfterDelete", DevExpress.Data.Mask.NumericMaskManager.ValueAfterDelete.ZeroThenNull);
+ this.txtDissolveTime.Properties.UseMaskAsDisplayFormat = true;
+ this.txtDissolveTime.Size = new System.Drawing.Size(46, 28);
+ this.txtDissolveTime.TabIndex = 666;
+ this.txtDissolveTime.Visible = false;
+ //
+ // labelControl22
+ //
+ this.labelControl22.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.labelControl22.Appearance.Options.UseFont = true;
+ this.labelControl22.Location = new System.Drawing.Point(1108, 269);
+ this.labelControl22.Name = "labelControl22";
+ this.labelControl22.Size = new System.Drawing.Size(54, 21);
+ this.labelControl22.TabIndex = 665;
+ this.labelControl22.Text = "Frames";
+ this.labelControl22.Visible = false;
+ //
+ // btnSettingTornado
+ //
+ this.btnSettingTornado.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.btnSettingTornado.Appearance.Options.UseFont = true;
+ this.btnSettingTornado.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnSettingTornado.ImageOptions.SvgImage")));
+ this.btnSettingTornado.Location = new System.Drawing.Point(1473, 114);
+ this.btnSettingTornado.Name = "btnSettingTornado";
+ this.btnSettingTornado.Size = new System.Drawing.Size(203, 96);
+ this.btnSettingTornado.TabIndex = 656;
+ this.btnSettingTornado.Text = "Save and Adjust";
+ this.btnSettingTornado.Click += new System.EventHandler(this.btnSettingTornado_Click);
+ //
+ // labelControl26
+ //
+ this.labelControl26.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.labelControl26.Appearance.Options.UseFont = true;
+ this.labelControl26.Location = new System.Drawing.Point(111, 100);
+ this.labelControl26.Name = "labelControl26";
+ this.labelControl26.Size = new System.Drawing.Size(43, 21);
+ this.labelControl26.TabIndex = 658;
+ this.labelControl26.Text = "DB IP";
+ //
+ // txtDBIP
+ //
+ this.txtDBIP.EditValue = "127.0.0.1";
+ this.txtDBIP.Location = new System.Drawing.Point(179, 97);
+ this.txtDBIP.Name = "txtDBIP";
+ this.txtDBIP.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.txtDBIP.Properties.Appearance.Options.UseFont = true;
+ this.txtDBIP.Properties.Appearance.Options.UseTextOptions = true;
+ this.txtDBIP.Properties.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+ this.txtDBIP.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.RegExpMaskManager));
+ this.txtDBIP.Properties.MaskSettings.Set("MaskManagerSignature", "isOptimistic=False");
+ this.txtDBIP.Properties.MaskSettings.Set("mask", "(([01]?[0-9]?[0-9])|(2[0-4][0-9])|(25[0-5]))\\.(([01]?[0-9]?[0-9])|(2[0-4][0-9])|(" +
+ "25[0-5]))\\.(([01]?[0-9]?[0-9])|(2[0-4][0-9])|(25[0-5]))\\.(([01]?[0-9]?[0-9])|(2[" +
+ "0-4][0-9])|(25[0-5]))");
+ this.txtDBIP.Properties.UseMaskAsDisplayFormat = true;
+ this.txtDBIP.Size = new System.Drawing.Size(156, 28);
+ this.txtDBIP.TabIndex = 654;
+ //
+ // fluentDesignFormContainer1
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.fluentDesignFormContainer1, DevExpress.Utils.DefaultBoolean.Default);
+ this.fluentDesignFormContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.fluentDesignFormContainer1.Location = new System.Drawing.Point(0, 131);
+ this.fluentDesignFormContainer1.Name = "fluentDesignFormContainer1";
+ this.fluentDesignFormContainer1.Size = new System.Drawing.Size(1918, 917);
+ this.fluentDesignFormContainer1.TabIndex = 4;
+ //
+ // navigationPage1
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this.navigationPage1, DevExpress.Utils.DefaultBoolean.Default);
+ this.navigationPage1.Controls.Add(this.groupControl5);
+ this.navigationPage1.Name = "navigationPage1";
+ this.navigationPage1.Size = new System.Drawing.Size(1918, 917);
+ //
+ // groupControl5
+ //
+ this.groupControl5.AppearanceCaption.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.groupControl5.AppearanceCaption.Options.UseFont = true;
+ this.groupControl5.Controls.Add(this.labelControl21);
+ this.groupControl5.Controls.Add(this.btnUserRemove);
+ this.groupControl5.Controls.Add(this.listBoxControlUsers);
+ this.groupControl5.Controls.Add(this.btnUserAdd);
+ this.groupControl5.Controls.Add(this.txtPassWord2);
+ this.groupControl5.Controls.Add(this.txtPassWord1);
+ this.groupControl5.Controls.Add(this.labelControl20);
+ this.groupControl5.Controls.Add(this.labelControl19);
+ this.groupControl5.Controls.Add(this.txtUserID);
+ this.groupControl5.Controls.Add(this.labelControl18);
+ this.groupControl5.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.groupControl5.Location = new System.Drawing.Point(0, 0);
+ this.groupControl5.Margin = new System.Windows.Forms.Padding(2);
+ this.groupControl5.Name = "groupControl5";
+ this.groupControl5.Size = new System.Drawing.Size(1918, 917);
+ this.groupControl5.TabIndex = 873;
+ this.groupControl5.Text = "계정 관리";
+ this.groupControl5.ToolTipController = this.defaultToolTipController1.DefaultController;
+ //
+ // labelControl21
+ //
+ this.labelControl21.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl21.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl21.Appearance.Options.UseFont = true;
+ this.labelControl21.Appearance.Options.UseForeColor = true;
+ this.labelControl21.Location = new System.Drawing.Point(848, 44);
+ this.labelControl21.Name = "labelControl21";
+ this.labelControl21.Size = new System.Drawing.Size(121, 25);
+ this.labelControl21.TabIndex = 1052;
+ this.labelControl21.Text = "등록된 아이디";
+ //
+ // btnUserRemove
+ //
+ this.btnUserRemove.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.btnUserRemove.Appearance.Options.UseFont = true;
+ this.btnUserRemove.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnUserRemove.ImageOptions.SvgImage")));
+ this.btnUserRemove.Location = new System.Drawing.Point(1345, 255);
+ this.btnUserRemove.Name = "btnUserRemove";
+ this.btnUserRemove.Size = new System.Drawing.Size(238, 118);
+ this.btnUserRemove.TabIndex = 1051;
+ this.btnUserRemove.Text = "Select User Remove";
+ this.btnUserRemove.Click += new System.EventHandler(this.btnUserRemove_Click);
+ //
+ // listBoxControlUsers
+ //
+ this.listBoxControlUsers.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.listBoxControlUsers.Appearance.Options.UseFont = true;
+ this.listBoxControlUsers.Location = new System.Drawing.Point(848, 84);
+ this.listBoxControlUsers.Name = "listBoxControlUsers";
+ this.listBoxControlUsers.Size = new System.Drawing.Size(450, 803);
+ this.listBoxControlUsers.TabIndex = 1050;
+ //
+ // btnUserAdd
+ //
+ this.btnUserAdd.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.btnUserAdd.Appearance.Options.UseFont = true;
+ this.btnUserAdd.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnUserAdd.ImageOptions.SvgImage")));
+ this.btnUserAdd.Location = new System.Drawing.Point(240, 255);
+ this.btnUserAdd.Name = "btnUserAdd";
+ this.btnUserAdd.Size = new System.Drawing.Size(238, 118);
+ this.btnUserAdd.TabIndex = 1049;
+ this.btnUserAdd.Text = "User Add";
+ this.btnUserAdd.Click += new System.EventHandler(this.btnUserAdd_Click);
+ //
+ // txtPassWord2
+ //
+ this.txtPassWord2.Location = new System.Drawing.Point(167, 190);
+ this.txtPassWord2.MenuManager = this.toolbarFormManager1;
+ this.txtPassWord2.Name = "txtPassWord2";
+ this.txtPassWord2.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.txtPassWord2.Properties.Appearance.Options.UseFont = true;
+ this.txtPassWord2.Properties.UseSystemPasswordChar = true;
+ this.txtPassWord2.Size = new System.Drawing.Size(311, 32);
+ this.txtPassWord2.TabIndex = 1048;
+ //
+ // txtPassWord1
+ //
+ this.txtPassWord1.Location = new System.Drawing.Point(167, 139);
+ this.txtPassWord1.MenuManager = this.toolbarFormManager1;
+ this.txtPassWord1.Name = "txtPassWord1";
+ this.txtPassWord1.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.txtPassWord1.Properties.Appearance.Options.UseFont = true;
+ this.txtPassWord1.Properties.UseSystemPasswordChar = true;
+ this.txtPassWord1.Size = new System.Drawing.Size(311, 32);
+ this.txtPassWord1.TabIndex = 1047;
+ //
+ // labelControl20
+ //
+ this.labelControl20.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl20.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl20.Appearance.Options.UseFont = true;
+ this.labelControl20.Appearance.Options.UseForeColor = true;
+ this.labelControl20.Location = new System.Drawing.Point(97, 193);
+ this.labelControl20.Name = "labelControl20";
+ this.labelControl20.Size = new System.Drawing.Size(38, 25);
+ this.labelControl20.TabIndex = 1046;
+ this.labelControl20.Text = "확인";
+ //
+ // labelControl19
+ //
+ this.labelControl19.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl19.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl19.Appearance.Options.UseFont = true;
+ this.labelControl19.Appearance.Options.UseForeColor = true;
+ this.labelControl19.Location = new System.Drawing.Point(97, 142);
+ this.labelControl19.Name = "labelControl19";
+ this.labelControl19.Size = new System.Drawing.Size(38, 25);
+ this.labelControl19.TabIndex = 1044;
+ this.labelControl19.Text = "비번";
+ //
+ // txtUserID
+ //
+ this.txtUserID.Location = new System.Drawing.Point(167, 90);
+ this.txtUserID.MenuManager = this.toolbarFormManager1;
+ this.txtUserID.Name = "txtUserID";
+ this.txtUserID.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.txtUserID.Properties.Appearance.Options.UseFont = true;
+ this.txtUserID.Size = new System.Drawing.Size(311, 32);
+ this.txtUserID.TabIndex = 1043;
+ //
+ // labelControl18
+ //
+ this.labelControl18.Appearance.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.labelControl18.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.labelControl18.Appearance.Options.UseFont = true;
+ this.labelControl18.Appearance.Options.UseForeColor = true;
+ this.labelControl18.Location = new System.Drawing.Point(97, 93);
+ this.labelControl18.Name = "labelControl18";
+ this.labelControl18.Size = new System.Drawing.Size(57, 25);
+ this.labelControl18.TabIndex = 1042;
+ this.labelControl18.Text = "아이디";
+ //
+ // gridControlSchedule
+ //
+ this.gridControlSchedule.Dock = System.Windows.Forms.DockStyle.Left;
+ this.gridControlSchedule.Font = new System.Drawing.Font("맑은 고딕", 9.75F);
+ this.gridControlSchedule.Location = new System.Drawing.Point(0, 0);
+ this.gridControlSchedule.MainView = this.gridViewSchedule;
+ this.gridControlSchedule.MenuManager = this.toolbarFormManager1;
+ this.gridControlSchedule.Name = "gridControlSchedule";
+ this.gridControlSchedule.Size = new System.Drawing.Size(1383, 917);
+ this.gridControlSchedule.TabIndex = 3;
+ this.gridControlSchedule.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
+ this.gridViewSchedule});
+ this.gridControlSchedule.KeyDown += new System.Windows.Forms.KeyEventHandler(this.gridControlSchedule_KeyDown);
+ //
+ // gridViewSchedule
+ //
+ this.gridViewSchedule.GridControl = this.gridControlSchedule;
+ this.gridViewSchedule.Name = "gridViewSchedule";
+ this.gridViewSchedule.OptionsBehavior.Editable = false;
+ this.gridViewSchedule.OptionsMenu.EnableColumnMenu = false;
+ this.gridViewSchedule.OptionsMenu.EnableFooterMenu = false;
+ this.gridViewSchedule.OptionsMenu.EnableGroupPanelMenu = false;
+ this.gridViewSchedule.OptionsMenu.ShowAutoFilterRowItem = false;
+ this.gridViewSchedule.OptionsMenu.ShowGroupSortSummaryItems = false;
+ this.gridViewSchedule.OptionsMenu.ShowSplitItem = false;
+ this.gridViewSchedule.OptionsSelection.EnableAppearanceFocusedCell = false;
+ this.gridViewSchedule.OptionsSelection.MultiSelect = true;
+ this.gridViewSchedule.OptionsView.ShowGroupPanel = false;
+ this.gridViewSchedule.VertScrollVisibility = DevExpress.XtraGrid.Views.Base.ScrollVisibility.Never;
+ this.gridViewSchedule.SelectionChanged += new DevExpress.Data.SelectionChangedEventHandler(this.gridViewSchedule_SelectionChanged);
+ //
+ // employeesLabelControl
+ //
+ this.employeesLabelControl.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(70)))), ((int)(((byte)(70)))));
+ this.employeesLabelControl.Appearance.Font = new System.Drawing.Font("Tahoma", 25.25F);
+ this.employeesLabelControl.Appearance.ForeColor = System.Drawing.Color.Gray;
+ this.employeesLabelControl.Appearance.Options.UseBackColor = true;
+ this.employeesLabelControl.Appearance.Options.UseFont = true;
+ this.employeesLabelControl.Appearance.Options.UseForeColor = true;
+ this.employeesLabelControl.Appearance.Options.UseTextOptions = true;
+ this.employeesLabelControl.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+ this.employeesLabelControl.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
+ this.employeesLabelControl.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.employeesLabelControl.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.employeesLabelControl.Location = new System.Drawing.Point(0, 0);
+ this.employeesLabelControl.Name = "employeesLabelControl";
+ this.employeesLabelControl.Size = new System.Drawing.Size(1918, 917);
+ this.employeesLabelControl.TabIndex = 2;
+ this.employeesLabelControl.Text = "Schedule";
+ //
+ // gaugeControl1
+ //
+ this.gaugeControl1.AutoLayout = false;
+ this.gaugeControl1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(78)))), ((int)(((byte)(89)))), ((int)(((byte)(120)))));
+ this.gaugeControl1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
+ this.gaugeControl1.Gauges.AddRange(new DevExpress.XtraGauges.Base.IGauge[] {
+ this.digitalGauge1});
+ this.gaugeControl1.Location = new System.Drawing.Point(1045, 39);
+ this.gaugeControl1.Name = "gaugeControl1";
+ this.gaugeControl1.Size = new System.Drawing.Size(262, 86);
+ this.gaugeControl1.TabIndex = 3;
+ this.gaugeControl1.ToolTipController = this.defaultToolTipController1.DefaultController;
+ //
+ // digitalGauge1
+ //
+ this.digitalGauge1.AppearanceOff.ContentBrush = new DevExpress.XtraGauges.Core.Drawing.SolidBrushObject("Color:#0FFF5000");
+ this.digitalGauge1.AppearanceOn.ContentBrush = new DevExpress.XtraGauges.Core.Drawing.SolidBrushObject("Color:#FF5000");
+ this.digitalGauge1.BackgroundLayers.AddRange(new DevExpress.XtraGauges.Win.Gauges.Digital.DigitalBackgroundLayerComponent[] {
+ this.digitalBackgroundLayerComponent1});
+ this.digitalGauge1.Bounds = new System.Drawing.Rectangle(8, 2, 238, 78);
+ this.digitalGauge1.DigitCount = 5;
+ this.digitalGauge1.Name = "digitalGauge1";
+ this.digitalGauge1.Text = "00,000";
+ //
+ // digitalBackgroundLayerComponent1
+ //
+ this.digitalBackgroundLayerComponent1.BottomRight = new DevExpress.XtraGauges.Core.Base.PointF2D(259.8125F, 99.9625F);
+ this.digitalBackgroundLayerComponent1.Name = "digitalBackgroundLayerComponent13";
+ this.digitalBackgroundLayerComponent1.ShapeType = DevExpress.XtraGauges.Core.Model.DigitalBackgroundShapeSetType.Style3;
+ this.digitalBackgroundLayerComponent1.TopLeft = new DevExpress.XtraGauges.Core.Base.PointF2D(20F, 0F);
+ this.digitalBackgroundLayerComponent1.ZOrder = 1000;
+ //
+ // timerClock
+ //
+ this.timerClock.Enabled = true;
+ this.timerClock.Interval = 500;
+ this.timerClock.Tick += new System.EventHandler(this.timerClock_Tick);
+ //
+ // toolbarFormControl1
+ //
+ this.toolbarFormControl1.Location = new System.Drawing.Point(0, 0);
+ this.toolbarFormControl1.Manager = this.toolbarFormManager1;
+ this.toolbarFormControl1.Name = "toolbarFormControl1";
+ this.toolbarFormControl1.Size = new System.Drawing.Size(1918, 31);
+ this.toolbarFormControl1.TabIndex = 5;
+ this.toolbarFormControl1.TabStop = false;
+ this.toolbarFormControl1.ToolbarForm = this;
+ //
+ // openFileDialog1
+ //
+ this.openFileDialog1.FileName = "openFileDialog1";
+ this.openFileDialog1.Filter = "T2S파일|*.t2s";
+ this.openFileDialog1.Multiselect = true;
+ //
+ // lblIsAutoDisplaying
+ //
+ this.lblIsAutoDisplaying.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(78)))), ((int)(((byte)(89)))), ((int)(((byte)(120)))));
+ this.lblIsAutoDisplaying.Appearance.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lblIsAutoDisplaying.Appearance.ForeColor = System.Drawing.Color.Snow;
+ this.lblIsAutoDisplaying.Appearance.Options.UseBackColor = true;
+ this.lblIsAutoDisplaying.Appearance.Options.UseFont = true;
+ this.lblIsAutoDisplaying.Appearance.Options.UseForeColor = true;
+ this.lblIsAutoDisplaying.Location = new System.Drawing.Point(1313, 52);
+ this.lblIsAutoDisplaying.Name = "lblIsAutoDisplaying";
+ this.lblIsAutoDisplaying.Size = new System.Drawing.Size(127, 28);
+ this.lblIsAutoDisplaying.TabIndex = 566;
+ this.lblIsAutoDisplaying.Text = "자동송출 꺼짐";
+ //
+ // toggleSwitch1
+ //
+ this.toggleSwitch1.Location = new System.Drawing.Point(1332, 86);
+ this.toggleSwitch1.MenuManager = this.toolbarFormManager1;
+ this.toggleSwitch1.Name = "toggleSwitch1";
+ this.toggleSwitch1.Properties.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(78)))), ((int)(((byte)(89)))), ((int)(((byte)(120)))));
+ this.toggleSwitch1.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 15F);
+ this.toggleSwitch1.Properties.Appearance.ForeColor = System.Drawing.Color.White;
+ this.toggleSwitch1.Properties.Appearance.Options.UseBackColor = true;
+ this.toggleSwitch1.Properties.Appearance.Options.UseFont = true;
+ this.toggleSwitch1.Properties.Appearance.Options.UseForeColor = true;
+ this.toggleSwitch1.Properties.GlyphAlignment = DevExpress.Utils.HorzAlignment.Default;
+ this.toggleSwitch1.Properties.OffText = "";
+ this.toggleSwitch1.Properties.OnText = "";
+ this.toggleSwitch1.Properties.ShowText = false;
+ this.toggleSwitch1.Size = new System.Drawing.Size(99, 31);
+ this.toggleSwitch1.TabIndex = 565;
+ this.toggleSwitch1.Toggled += new System.EventHandler(this.toggleSwitch1_Toggled);
+ //
+ // btnScheduleCopy
+ //
+ this.btnScheduleCopy.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.btnScheduleCopy.Appearance.Options.UseFont = true;
+ this.btnScheduleCopy.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnScheduleCopy.ImageOptions.SvgImage")));
+ this.btnScheduleCopy.Location = new System.Drawing.Point(761, 79);
+ this.btnScheduleCopy.Name = "btnScheduleCopy";
+ this.btnScheduleCopy.Size = new System.Drawing.Size(259, 44);
+ this.btnScheduleCopy.TabIndex = 1079;
+ this.btnScheduleCopy.Text = "CABLE 스케쥴 복사해오기";
+ this.btnScheduleCopy.Visible = false;
+ this.btnScheduleCopy.Click += new System.EventHandler(this.btnScheduleCopy_Click);
+ //
+ // timeEdit2
+ //
+ this.timeEdit2.EditValue = new System.DateTime(2025, 1, 1, 0, 0, 0, 0);
+ this.timeEdit2.Location = new System.Drawing.Point(761, 59);
+ this.timeEdit2.MenuManager = this.toolbarFormManager1;
+ this.timeEdit2.Name = "timeEdit2";
+ this.timeEdit2.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 15F, System.Drawing.FontStyle.Bold);
+ this.timeEdit2.Properties.Appearance.Options.UseFont = true;
+ this.timeEdit2.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.timeEdit2.Properties.CalendarTimeProperties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.timeEdit2.Properties.CalendarTimeProperties.DisplayFormat.FormatString = "yyyy년 M월 d일 dddd";
+ this.timeEdit2.Properties.DisplayFormat.FormatString = "yyyy년 M월 d일 dddd";
+ this.timeEdit2.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
+ this.timeEdit2.Size = new System.Drawing.Size(259, 34);
+ this.timeEdit2.TabIndex = 1084;
+ this.timeEdit2.EditValueChanged += new System.EventHandler(this.timeEdit2_EditValueChanged);
+ //
+ // btnSyncData
+ //
+ this.btnSyncData.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.btnSyncData.Appearance.Options.UseFont = true;
+ this.btnSyncData.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnSyncData.ImageOptions.SvgImage")));
+ this.btnSyncData.Location = new System.Drawing.Point(1769, 44);
+ this.btnSyncData.Name = "btnSyncData";
+ this.btnSyncData.Size = new System.Drawing.Size(119, 36);
+ this.btnSyncData.TabIndex = 1095;
+ this.btnSyncData.Text = "DB 수동 동기화";
+ this.btnSyncData.Visible = false;
+ this.btnSyncData.Click += new System.EventHandler(this.btnSyncData_Click);
+ //
+ // timerSync
+ //
+ this.timerSync.Enabled = true;
+ this.timerSync.Interval = 60000;
+ this.timerSync.Tick += new System.EventHandler(this.timerSync_Tick);
+ //
+ // picTornado
+ //
+ this.picTornado.Cursor = System.Windows.Forms.Cursors.Default;
+ this.picTornado.EditValue = ((object)(resources.GetObject("picTornado.EditValue")));
+ this.picTornado.Location = new System.Drawing.Point(1757, 42);
+ this.picTornado.Name = "picTornado";
+ this.picTornado.Properties.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(78)))), ((int)(((byte)(89)))), ((int)(((byte)(120)))));
+ this.picTornado.Properties.Appearance.Options.UseBackColor = true;
+ this.picTornado.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
+ this.picTornado.Properties.ShowCameraMenuItem = DevExpress.XtraEditors.Controls.CameraMenuItemVisibility.Auto;
+ this.picTornado.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Stretch;
+ this.picTornado.Size = new System.Drawing.Size(39, 35);
+ this.picTornado.TabIndex = 1092;
+ //
+ // lblConnectionTornado2
+ //
+ this.lblConnectionTornado2.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
+ this.lblConnectionTornado2.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.lblConnectionTornado2.Appearance.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.lblConnectionTornado2.Appearance.Options.UseBackColor = true;
+ this.lblConnectionTornado2.Appearance.Options.UseFont = true;
+ this.lblConnectionTornado2.Appearance.Options.UseForeColor = true;
+ this.lblConnectionTornado2.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.lblConnectionTornado2.Location = new System.Drawing.Point(1801, 47);
+ this.lblConnectionTornado2.Margin = new System.Windows.Forms.Padding(2);
+ this.lblConnectionTornado2.Name = "lblConnectionTornado2";
+ this.lblConnectionTornado2.Size = new System.Drawing.Size(106, 24);
+ this.lblConnectionTornado2.TabIndex = 1112;
+ //
+ // lblisCable
+ //
+ this.lblisCable.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(78)))), ((int)(((byte)(89)))), ((int)(((byte)(120)))));
+ this.lblisCable.Appearance.Font = new System.Drawing.Font("맑은 고딕", 18F, System.Drawing.FontStyle.Bold);
+ this.lblisCable.Appearance.ForeColor = System.Drawing.Color.Snow;
+ this.lblisCable.Appearance.Options.UseBackColor = true;
+ this.lblisCable.Appearance.Options.UseFont = true;
+ this.lblisCable.Appearance.Options.UseForeColor = true;
+ this.lblisCable.Location = new System.Drawing.Point(666, 62);
+ this.lblisCable.Name = "lblisCable";
+ this.lblisCable.Size = new System.Drawing.Size(53, 32);
+ this.lblisCable.TabIndex = 1117;
+ this.lblisCable.Text = "IPTV";
+ //
+ // btnDBSave
+ //
+ this.btnDBSave.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.btnDBSave.Appearance.Options.UseFont = true;
+ this.btnDBSave.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnDBSave.ImageOptions.SvgImage")));
+ this.btnDBSave.Location = new System.Drawing.Point(1578, 38);
+ this.btnDBSave.Name = "btnDBSave";
+ this.btnDBSave.Size = new System.Drawing.Size(160, 40);
+ this.btnDBSave.TabIndex = 1122;
+ this.btnDBSave.Text = "DB 저장";
+ this.btnDBSave.Click += new System.EventHandler(this.btnDBSave_Click);
+ //
+ // btnDBLoad
+ //
+ this.btnDBLoad.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.btnDBLoad.Appearance.Options.UseFont = true;
+ this.btnDBLoad.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnDBLoad.ImageOptions.SvgImage")));
+ this.btnDBLoad.Location = new System.Drawing.Point(1578, 83);
+ this.btnDBLoad.Name = "btnDBLoad";
+ this.btnDBLoad.Size = new System.Drawing.Size(160, 40);
+ this.btnDBLoad.TabIndex = 1123;
+ this.btnDBLoad.Text = "DB 로드";
+ this.btnDBLoad.Click += new System.EventHandler(this.btnDBLoad_Click);
+ //
+ // labelControl32
+ //
+ this.labelControl32.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(78)))), ((int)(((byte)(89)))), ((int)(((byte)(120)))));
+ this.labelControl32.Appearance.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Bold);
+ this.labelControl32.Appearance.ForeColor = System.Drawing.Color.Snow;
+ this.labelControl32.Appearance.Options.UseBackColor = true;
+ this.labelControl32.Appearance.Options.UseFont = true;
+ this.labelControl32.Appearance.Options.UseForeColor = true;
+ this.labelControl32.Location = new System.Drawing.Point(1468, 89);
+ this.labelControl32.Name = "labelControl32";
+ this.labelControl32.Size = new System.Drawing.Size(45, 23);
+ this.labelControl32.TabIndex = 1124;
+ this.labelControl32.Text = "Index";
+ //
+ // comboBoxEdit3
+ //
+ this.comboBoxEdit3.EditValue = "1";
+ this.comboBoxEdit3.Location = new System.Drawing.Point(1519, 86);
+ this.comboBoxEdit3.MenuManager = this.toolbarFormManager1;
+ this.comboBoxEdit3.Name = "comboBoxEdit3";
+ this.comboBoxEdit3.Properties.Appearance.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Bold);
+ this.comboBoxEdit3.Properties.Appearance.Options.UseFont = true;
+ this.comboBoxEdit3.Properties.AppearanceDropDown.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold);
+ this.comboBoxEdit3.Properties.AppearanceDropDown.Options.UseFont = true;
+ this.comboBoxEdit3.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+ this.comboBoxEdit3.Properties.Items.AddRange(new object[] {
+ "1",
+ "2",
+ "3",
+ "4",
+ "5"});
+ this.comboBoxEdit3.Size = new System.Drawing.Size(41, 30);
+ this.comboBoxEdit3.TabIndex = 1125;
+ //
+ // labelControl38
+ //
+ this.labelControl38.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(78)))), ((int)(((byte)(89)))), ((int)(((byte)(120)))));
+ this.labelControl38.Appearance.Font = new System.Drawing.Font("맑은 고딕", 13F, System.Drawing.FontStyle.Bold);
+ this.labelControl38.Appearance.ForeColor = System.Drawing.Color.Snow;
+ this.labelControl38.Appearance.Options.UseBackColor = true;
+ this.labelControl38.Appearance.Options.UseFont = true;
+ this.labelControl38.Appearance.Options.UseForeColor = true;
+ this.labelControl38.Location = new System.Drawing.Point(1485, 52);
+ this.labelControl38.Name = "labelControl38";
+ this.labelControl38.Size = new System.Drawing.Size(66, 25);
+ this.labelControl38.TabIndex = 1131;
+ this.labelControl38.Text = "DB 선택";
+ //
+ // btnDBCrossLoad
+ //
+ this.btnDBCrossLoad.Appearance.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Bold);
+ this.btnDBCrossLoad.Appearance.Options.UseFont = true;
+ this.btnDBCrossLoad.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnDBCrossLoad.ImageOptions.SvgImage")));
+ this.btnDBCrossLoad.Location = new System.Drawing.Point(1744, 83);
+ this.btnDBCrossLoad.Name = "btnDBCrossLoad";
+ this.btnDBCrossLoad.Size = new System.Drawing.Size(167, 40);
+ this.btnDBCrossLoad.TabIndex = 1136;
+ this.btnDBCrossLoad.Text = "DB 크로스 로드";
+ this.btnDBCrossLoad.Click += new System.EventHandler(this.btnDBCrossLoad_Click);
+ //
+ // MainForm
+ //
+ this.defaultToolTipController1.SetAllowHtmlText(this, DevExpress.Utils.DefaultBoolean.Default);
+ this.Appearance.BackColor = System.Drawing.Color.White;
+ this.Appearance.Options.UseBackColor = true;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1918, 1048);
+ this.Controls.Add(this.btnDBCrossLoad);
+ this.Controls.Add(this.labelControl38);
+ this.Controls.Add(this.comboBoxEdit3);
+ this.Controls.Add(this.labelControl32);
+ this.Controls.Add(this.btnDBLoad);
+ this.Controls.Add(this.btnDBSave);
+ this.Controls.Add(this.lblisCable);
+ this.Controls.Add(this.lblConnectionTornado2);
+ this.Controls.Add(this.picTornado);
+ this.Controls.Add(this.btnSyncData);
+ this.Controls.Add(this.timeEdit2);
+ this.Controls.Add(this.btnScheduleCopy);
+ this.Controls.Add(this.lblIsAutoDisplaying);
+ this.Controls.Add(this.toggleSwitch1);
+ this.Controls.Add(this.gaugeControl1);
+ this.Controls.Add(this.navigationFrame);
+ this.Controls.Add(this.fluentDesignFormContainer1);
+ this.Controls.Add(this.tileBar);
+ this.Controls.Add(this.barDockControlLeft);
+ this.Controls.Add(this.barDockControlRight);
+ this.Controls.Add(this.barDockControlBottom);
+ this.Controls.Add(this.barDockControlTop);
+ this.Controls.Add(this.toolbarFormControl1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.IconOptions.Image = ((System.Drawing.Image)(resources.GetObject("MainForm.IconOptions.Image")));
+ this.MaximizeBox = false;
+ this.Name = "MainForm";
+ this.Text = "Shinsegae Live Shopping Automation Solution [26.02.19]";
+ this.ToolbarFormControl = this.toolbarFormControl1;
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
+ this.Shown += new System.EventHandler(this.MainForm_ShownAsync);
+ ((System.ComponentModel.ISupportInitialize)(this.navigationFrame)).EndInit();
+ this.navigationFrame.ResumeLayout(false);
+ this.employeesNavigationPage.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl3)).EndInit();
+ this.groupControl3.ResumeLayout(false);
+ this.panel1.ResumeLayout(false);
+ this.panel1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.chk모든상품적용.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.toolbarFormManager1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.chk송출금지무시.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureEdit1.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeSpanRepeat.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cmbSceneGroup.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.chkUseTapeTime.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit3.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeSpanEdit1.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeEdit1.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit1.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit2.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeSpanEdit5.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.listBoxControl5)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.textEdit8.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cmbSceneSchedule.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cmbScheduleSelectedLayer.Properties)).EndInit();
+ this.customersNavigationPage.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.xtraTabControl1)).EndInit();
+ this.xtraTabControl1.ResumeLayout(false);
+ this.xtraTabPage1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl1)).EndInit();
+ this.groupControl1.ResumeLayout(false);
+ this.groupControl1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.txtThumbnailFrame.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtGroupAliasName.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.comboBoxEdit1.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cmbSceneListGroup.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtVariableListText.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtVariableListTag.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.listBoxControl2)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtSceneListTime.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtSceneListPath.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtSceneListName.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBoxThumbnailSceneList)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.listBoxControl1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.cmbSceneListLayer.Properties)).EndInit();
+ this.navigationPage2.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl2)).EndInit();
+ this.groupControl2.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl13)).EndInit();
+ this.groupControl13.ResumeLayout(false);
+ this.groupControl13.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.comboBoxEdit2.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl6)).EndInit();
+ this.groupControl6.ResumeLayout(false);
+ this.groupControl6.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.txtTimeGap.Properties)).EndInit();
+ this.groupBoxAdminOnly.ResumeLayout(false);
+ this.groupBoxAdminOnly.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.toggleSwitchChannel.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.toggleSwitchAutoSync.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.toggleSwitch수정모드.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.toggleSwitchDone송출보지않기.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeSpanEditForbidEnd.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeSpanEditForbidStart.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtDissolveTime.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtDBIP.Properties)).EndInit();
+ this.navigationPage1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl5)).EndInit();
+ this.groupControl5.ResumeLayout(false);
+ this.groupControl5.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.listBoxControlUsers)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtPassWord2.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtPassWord1.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.txtUserID.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.gridControlSchedule)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.gridViewSchedule)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.digitalGauge1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.digitalBackgroundLayerComponent1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.toolbarFormControl1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.toggleSwitch1.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeEdit2.Properties.CalendarTimeProperties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.timeEdit2.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.picTornado.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.comboBoxEdit3.Properties)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private DevExpress.XtraBars.Navigation.TileBar tileBar;
+ private DevExpress.XtraBars.Navigation.NavigationFrame navigationFrame;
+ private DevExpress.XtraBars.Navigation.TileBarGroup tileBarGroupTables;
+ private DevExpress.XtraBars.Navigation.TileBarItem customersTileBarItem;
+ private DevExpress.XtraBars.Navigation.NavigationPage employeesNavigationPage;
+ private DevExpress.XtraBars.Navigation.NavigationPage customersNavigationPage;
+ private DevExpress.XtraEditors.LabelControl employeesLabelControl;
+ private DevExpress.XtraEditors.LabelControl customersLabelControl;
+ private DevExpress.XtraGauges.Win.GaugeControl gaugeControl1;
+ private System.Windows.Forms.Timer timerClock;
+ private DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormContainer fluentDesignFormContainer1;
+ private DevExpress.XtraBars.ToolbarForm.ToolbarFormControl toolbarFormControl1;
+ private DevExpress.XtraBars.ToolbarForm.ToolbarFormManager toolbarFormManager1;
+ private DevExpress.XtraBars.BarDockControl barDockControlTop;
+ private DevExpress.XtraBars.BarDockControl barDockControlBottom;
+ private DevExpress.XtraBars.BarDockControl barDockControlLeft;
+ private DevExpress.XtraBars.BarDockControl barDockControlRight;
+ private DevExpress.XtraGrid.GridControl gridControlSchedule;
+ private DevExpress.XtraBars.Navigation.TileBarItem tileBarItem1;
+ private DevExpress.XtraBars.Navigation.TileBarItem tileBarItem2;
+ private DevExpress.XtraGrid.Views.Grid.GridView gridViewSchedule;
+ public DevExpress.XtraEditors.LabelControl labelControl1;
+ public DevExpress.XtraEditors.LabelControl labelControl3;
+ private DevExpress.XtraEditors.ToggleSwitch toggleSwitchChannel;
+ private DevExpress.XtraEditors.LabelControl lblSwitchChannel;
+ private DevExpress.XtraEditors.GroupControl groupControl1;
+ public DevExpress.XtraEditors.SimpleButton btnSceneLoad;
+ public DevExpress.XtraEditors.LabelControl labelControl14;
+ public DevExpress.XtraEditors.LabelControl labelControl12;
+ public DevExpress.XtraEditors.SimpleButton btnSceneRemove;
+ private DevExpress.XtraEditors.TextEdit txtSceneListName;
+ public DevExpress.XtraEditors.LabelControl labelControl27;
+ public DevExpress.XtraEditors.LabelControl labelControl35;
+ private DevExpress.XtraEditors.TimeSpanEdit timeSpanEdit5;
+ public DevExpress.XtraEditors.LabelControl labelControl37;
+ private System.Windows.Forms.OpenFileDialog openFileDialog1;
+ private DevExpress.XtraEditors.TextEdit txtSceneListPath;
+ public DevExpress.XtraEditors.LabelControl labelControl4;
+ private DevExpress.XtraEditors.TextEdit txtSceneListTime;
+ public DevExpress.XtraEditors.LabelControl labelControl10;
+ public DevExpress.XtraEditors.LabelControl labelControl41;
+ private System.Windows.Forms.PictureBox pictureBoxThumbnailSceneList;
+ private DevExpress.XtraEditors.TextEdit txtVariableListText;
+ public DevExpress.XtraEditors.LabelControl labelControl44;
+ private DevExpress.XtraEditors.TextEdit txtVariableListTag;
+ public DevExpress.XtraEditors.LabelControl labelControl43;
+ private DevExpress.XtraEditors.ListBoxControl listBoxControl2;
+ public DevExpress.XtraEditors.LabelControl labelControl42;
+ public DevExpress.XtraEditors.SimpleButton btnSceneAdd;
+ public DevExpress.XtraEditors.SimpleButton btnVariableListDel;
+ public DevExpress.XtraEditors.SimpleButton btnVariableListAdd;
+ private DevExpress.XtraEditors.ListBoxControl listBoxControl1;
+ public SimpleButton simpleButton3;
+ private TextEdit textEdit1;
+ public LabelControl labelControl2;
+ private TextEdit textEdit2;
+ public LabelControl labelControl46;
+ private ListBoxControl listBoxControl5;
+ public LabelControl labelControl47;
+ private TextEdit textEdit8;
+ public LabelControl labelControl9;
+ private System.Windows.Forms.PictureBox pictureBox1;
+ private ComboBoxEdit cmbSceneSchedule;
+ public SimpleButton simpleButton8;
+ public SimpleButton simpleButton7;
+ private System.Windows.Forms.Panel panel1;
+ private GroupControl groupControl3;
+ public LabelControl labelControl29;
+ private TimeEdit timeEdit1;
+ private TimeSpanEdit timeSpanEdit1;
+ public LabelControl labelControl30;
+ private TextEdit textEdit3;
+ public LabelControl labelControl31;
+ private LabelControl lblIsAutoDisplaying;
+ private ToggleSwitch toggleSwitch1;
+ public SimpleButton simpleButton9;
+ public SimpleButton simpleButton2;
+ public SimpleButton btnScheduleCopy;
+ private DevExpress.XtraGauges.Win.Gauges.Digital.DigitalGauge digitalGauge1;
+ private DevExpress.XtraGauges.Win.Gauges.Digital.DigitalBackgroundLayerComponent digitalBackgroundLayerComponent1;
+ private ComboBoxEdit cmbSceneListLayer;
+ private ComboBoxEdit cmbScheduleSelectedLayer;
+ private DevExpress.XtraBars.Navigation.NavigationPage navigationPage2;
+ private GroupControl groupControl2;
+ private System.Windows.Forms.RichTextBox txtLog;
+ private GroupControl groupControl13;
+ public LabelControl lbl선택라인상태글자색;
+ public LabelControl lbl선택라인상태배경색;
+ private System.Windows.Forms.Label label13;
+ public LabelControl lbl선택라인종류글자색;
+ public LabelControl lbl선택라인종류배경색;
+ private System.Windows.Forms.Label label12;
+ public LabelControl lbl종류송출글자색;
+ public LabelControl lbl종류송출배경색;
+ private System.Windows.Forms.Label label10;
+ public LabelControl lbl종류스케쥴글자색;
+ public LabelControl lbl종류스케쥴배경색;
+ private System.Windows.Forms.Label label11;
+ public LabelControl lblNEXT송출글자색;
+ public LabelControl lblNEXT송출배경색;
+ private System.Windows.Forms.Label label9;
+ public LabelControl lbl완료상태글자색;
+ public LabelControl lbl완료상태배경색;
+ private System.Windows.Forms.Label label8;
+ public LabelControl lbl완료송출글자색;
+ public LabelControl lbl완료송출배경색;
+ private System.Windows.Forms.Label label7;
+ public LabelControl lblNEXT상태글자색;
+ public LabelControl lblNEXT상태배경색;
+ public LabelControl lblNEXT스케쥴글자색;
+ public LabelControl lblNEXT스케쥴배경색;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Label label6;
+ public LabelControl lbl선택라인글자색;
+ public LabelControl lbl선택라인배경색;
+ public LabelControl lblOnAir상태글자색;
+ public LabelControl lblOnAir상태배경색;
+ public LabelControl lblOnAir송출글자색;
+ public LabelControl lblOnAir송출배경색;
+ public LabelControl lblOnAir스케쥴글자색;
+ public LabelControl lblOnAir스케쥴배경색;
+ public LabelControl lbl완료스케쥴글자색;
+ public LabelControl lbl완료스케쥴배경색;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label3;
+ private LabelControl labelControl92;
+ private System.Windows.Forms.Label label69;
+ private System.Windows.Forms.Label label73;
+ private System.Windows.Forms.Label label61;
+ private GroupControl groupControl6;
+ private LabelControl labelControl34;
+ public LabelControl labelControl33;
+ public TextEdit txtDissolveTime;
+ private LabelControl labelControl22;
+ public SimpleButton btnSettingTornado;
+ private LabelControl labelControl26;
+ public TextEdit txtDBIP;
+ private DateEdit timeEdit2;
+ private System.Windows.Forms.RichTextBox richTextBox1;
+ private XtraTabControl xtraTabControl1;
+ private XtraTabPage xtraTabPage1;
+ private DevExpress.Utils.DefaultToolTipController defaultToolTipController1;
+ private LabelControl lblDoneDisplayInvisible;
+ private ToggleSwitch toggleSwitchDone송출보지않기;
+ private CheckEdit chkUseTapeTime;
+ private TimeSpanEdit timeSpanEditForbidEnd;
+ private LabelControl labelControl11;
+ private LabelControl labelControl13;
+ private TimeSpanEdit timeSpanEditForbidStart;
+ private LabelControl labelControl8;
+ private LabelControl labelControl6;
+ private LabelControl labelControl7;
+ public LabelControl labelControl17;
+ private ComboBoxEdit cmbSceneGroup;
+ private DevExpress.XtraBars.Navigation.TileBarItem tileBarItem3;
+ private DevExpress.XtraBars.Navigation.NavigationPage navigationPage1;
+ private GroupControl groupControl5;
+ public SimpleButton btnUserRemove;
+ private ListBoxControl listBoxControlUsers;
+ public SimpleButton btnUserAdd;
+ private TextEdit txtPassWord2;
+ private TextEdit txtPassWord1;
+ public LabelControl labelControl20;
+ public LabelControl labelControl19;
+ private TextEdit txtUserID;
+ public LabelControl labelControl18;
+ public LabelControl labelControl21;
+ public SimpleButton btnSyncData;
+ private LabelControl lbl수정모드;
+ private ToggleSwitch toggleSwitch수정모드;
+ private LabelControl lblAutoSync;
+ private ToggleSwitch toggleSwitchAutoSync;
+ private LabelControl labelControl23;
+ private System.Windows.Forms.Timer timerSync;
+ public LabelControl labelControl24;
+ private ComboBoxEdit cmbSceneListGroup;
+ public LabelControl labelControl16;
+ private ComboBoxEdit comboBoxEdit1;
+ public SimpleButton simpleButton1;
+ public LabelControl labelControl28;
+ private TimeSpanEdit timeSpanRepeat;
+ public LabelControl labelControl25;
+ public LabelControl lblConnectionTornado2;
+ public PictureEdit picTornado;
+ public PictureEdit pictureEdit1;
+ private LabelControl lblisCable;
+ private System.Windows.Forms.GroupBox groupBoxAdminOnly;
+ public LabelControl lblGroupAliasName;
+ private TextEdit txtGroupAliasName;
+ public LabelControl labelControl36;
+ public SimpleButton simpleButton4;
+ public LabelControl labelControl5;
+ private CheckEdit chk송출금지무시;
+ public SimpleButton btnThumbnailSceneListRefresh;
+ private System.Windows.Forms.Label label14;
+ private ComboBoxEdit comboBoxEdit2;
+ private TextEdit txtThumbnailFrame;
+ public LabelControl labelControl15;
+ public SimpleButton btnSceneRemoveAll;
+ public SimpleButton btnDBSave;
+ private ComboBoxEdit comboBoxEdit3;
+ private LabelControl labelControl32;
+ public SimpleButton btnDBLoad;
+ private LabelControl labelControl38;
+ public LabelControl lbl송출무시금지글자색;
+ public LabelControl lbl송출무시금지배경색;
+ private System.Windows.Forms.Label label15;
+ public SimpleButton btnDBCrossLoad;
+ private CheckEdit chk모든상품적용;
+ public SimpleButton simpleButton5;
+ public SimpleButton btnTimeGap1sm;
+ public SimpleButton btnTimeGap1nm;
+ public SimpleButton btnTimeGap1s;
+ public SimpleButton btnTimeGap1n;
+ private LabelControl labelControl39;
+ private LabelControl labelControl40;
+ private TextEdit txtTimeGap;
+ public SimpleButton btnTimeGap1mm;
+ public SimpleButton btnTimeGap1m;
+ private LabelControl labelControl45;
+ }
+}
\ No newline at end of file
diff --git a/SSG_Automation_Solution/Design/Forms/MainForm.cs b/SSG_Automation_Solution/Design/Forms/MainForm.cs
new file mode 100644
index 0000000..ac4398e
--- /dev/null
+++ b/SSG_Automation_Solution/Design/Forms/MainForm.cs
@@ -0,0 +1,3507 @@
+using DevExpress.Utils;
+using DevExpress.XtraEditors;
+using DevExpress.XtraEditors.ColorPick.Picker;
+using DevExpress.XtraEditors.Repository;
+using Microsoft.Win32;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using SSG_Automation_Solution.Data;
+using SSG_Automation_Solution.Design.CustomControl;
+using SSG_Automation_Solution.Tornado;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using static SSG_Automation_Solution.Data.LogWriter;
+using static SSG_Automation_Solution.Data.Options;
+
+namespace SSG_Automation_Solution.Design.Forms
+{
+ public partial class MainForm : DevExpress.XtraBars.ToolbarForm.ToolbarForm
+ {
+
+ #region Variables
+
+ Options GetOptions = Options.getInstance();
+ private SyncManager syncManager;
+
+
+
+ private bool _isCable;
+ public bool isCable
+ {
+ get => _isCable;
+ set
+ {
+ _isCable = value;
+ lblSwitchChannel.Text = _isCable ? "CABLE" : "IPTV";
+ lblisCable.Text = _isCable ? "CABLE" : "IPTV";
+ btnScheduleCopy.Text = (!_isCable ? "CABLE" : "IPTV") + " 스케쥴 복사해오기";
+ }
+ }
+
+ private bool _isAutoDisplaying;
+ public bool isAutoDisplaying
+ {
+ get => _isAutoDisplaying;
+ set
+ {
+ _isAutoDisplaying = value;
+ lblIsAutoDisplaying.Text = _isAutoDisplaying ? "자동송출 켜짐" : "자동송출 꺼짐";
+ lblIsAutoDisplaying.ForeColor = _isAutoDisplaying ? Color.OrangeRed : Color.Snow;
+ }
+ }
+
+ private bool _isModifying = true;
+ public bool isModifying
+ {
+ get => _isModifying;
+ set
+ {
+ _isModifying = value;
+
+ if (lbl수정모드.InvokeRequired)
+ {
+ lbl수정모드.Invoke(new Action(() => UpdateLabel()));
+ }
+ else
+ {
+ UpdateLabel();
+ }
+ }
+ }
+ private void UpdateLabel()
+ {
+ lbl수정모드.Text = _isModifying ? "수정모드 ON" : "수정모드 OFF";
+ lbl수정모드.ForeColor = _isModifying ? Color.OrangeRed : Color.Snow;
+ }
+
+ private bool _isDoneDisplayInvisible;
+ public bool isDoneDisplayInvisible
+ {
+ get => _isDoneDisplayInvisible;
+ set
+ {
+ _isDoneDisplayInvisible = value;
+ lblDoneDisplayInvisible.Text = _isDoneDisplayInvisible ? "송출완료 숨김" : "송출완료 보임";
+ }
+ }
+
+ private bool _isAutoSync;
+ public bool isAutoSync
+ {
+ get => _isAutoSync;
+ set
+ {
+ _isAutoSync = value;
+ lblAutoSync.Text = _isAutoSync ? "자동 동기화 On" : "자동 동기화 Off";
+ lblAutoSync.ForeColor = _isAutoSync ? Color.OrangeRed : Color.Snow;
+ }
+ }
+
+ string dafaultOptionListPath = Environment.CurrentDirectory + @"\Data\options.json";
+ string dafaultGroupPath = Environment.CurrentDirectory + @"\Data\groups.json";
+
+ public void SaveDafaultOptions()
+ {
+ if (!isLoading)
+ {
+ JObject jobj = new JObject(
+ new JProperty("isCable", isCable),
+ new JProperty("isAutoDisplaying", isAutoDisplaying),
+ new JProperty("isDoneDisplayInvisible", isDoneDisplayInvisible),
+ new JProperty("isAutoSync", isAutoSync),
+ new JProperty("forbidStart", forbidStart),
+ new JProperty("forbidEnd", forbidEnd),
+ new JProperty("DBIP", DBIP)
+ );
+
+ try
+ {
+ File.WriteAllText(dafaultOptionListPath, jobj.ToString(), Encoding.UTF8);
+ Log($"[SaveDafaultOptions] 기본 옵션 저장 성공: {dafaultOptionListPath}", LogType.Normal);
+ }
+ catch (Exception ex)
+ {
+ Log($"[SaveDafaultOptions] 옵션 저장 실패: {ex.Message}", LogType.Error);
+ }
+ }
+ }
+
+ bool isLoading = true;
+ public void LoadDafaultOptions()
+ {
+ if (File.Exists(dafaultOptionListPath))
+ {
+ using (StreamReader file = new StreamReader(dafaultOptionListPath))
+ {
+ JObject jobj = JObject.Parse(file.ReadToEnd());
+
+
+ if (jobj.ContainsKey("isCable")) toggleSwitchChannel.IsOn = (bool)jobj["isCable"];
+ if (jobj.ContainsKey("isAutoSync")) toggleSwitchAutoSync.IsOn = (bool)jobj["isAutoSync"];
+ if (jobj.ContainsKey("isAutoDisplaying")) toggleSwitch1.IsOn = (bool)jobj["isAutoDisplaying"];
+ if (jobj.ContainsKey("isDoneDisplayInvisible")) toggleSwitchDone송출보지않기.IsOn = (bool)jobj["isDoneDisplayInvisible"];
+ if (jobj.ContainsKey("forbidStart"))
+ {
+ timeSpanEditForbidStart.EditValue = (TimeSpan)jobj["forbidStart"];
+ forbidStart = (TimeSpan)timeSpanEditForbidStart.EditValue;
+ }
+ if (jobj.ContainsKey("forbidEnd"))
+ {
+ timeSpanEditForbidEnd.EditValue = (TimeSpan)jobj["forbidEnd"];
+ forbidEnd = (TimeSpan)timeSpanEditForbidEnd.EditValue;
+ }
+ if (jobj.ContainsKey("DBIP"))
+ {
+ DBIP = jobj["DBIP"].ToString();
+ txtDBIP.Text = DBIP;
+ }
+
+ isLoading = false;
+ }
+ }
+
+ Log($"기본 옵션을 {dafaultOptionListPath}에서 불러왔습니다.", LogType.Normal);
+ }
+
+ #endregion
+
+ bool isAdmin = false;
+ string UserName = "";
+ string subKey = @"SOFTWARE\CI";
+
+ LabelControl[] labelControlsFore = new LabelControl[16];
+ LabelControl[] labelControlsBack = new LabelControl[16];
+
+ public MainForm(int LoginResult, string _UserName)
+ {
+ InitializeComponent();
+
+ if (LoginResult == 1) isAdmin = true;
+ UserName = _UserName;
+
+ LW = LogWriter.getInstance();
+ LW.LogFileName = String.Format("{0}", DateTime.Now.ToString("yyMMdd hhmmss"));
+
+ timeSpanEdit1.Properties.Mask.EditMask = "hh:mm:ss";
+ timeSpanEdit1.Properties.Mask.UseMaskAsDisplayFormat = true;
+
+ //ShowLoginForm();
+ for (int i = 0; i < 16; i++)
+ {
+ labelControlsFore[i] = new LabelControl();
+ labelControlsBack[i] = new LabelControl();
+
+ labelControlsBack[i].BackColor = Color.FromArgb(80, 80, 80);
+ labelControlsFore[i].BackColor = Color.White;
+
+ labelControlsFore[i].Name = "lblLayerForeColor" + i;
+ labelControlsBack[i].Name = "lblLayerBackColor" + i;
+ labelControlsFore[i].Visible = false;
+ labelControlsBack[i].Visible = false;
+ groupControl13.Controls.Add(labelControlsFore[i]);
+ groupControl13.Controls.Add(labelControlsBack[i]);
+ }
+
+
+ GetOptions.LoadGridCOlor();
+
+
+ foreach (gridColor g in GetOptions.gridColors)
+ {
+ if (this.Controls.Find(g.명칭, true).Count() > 0)
+ this.Controls.Find(g.명칭, true)[0].BackColor = g.색상;
+ }
+
+ foreach (Control c in groupControl13.Controls)
+ {
+ if (c is LabelControl) c.Click += lbl색상_Click;
+ }
+
+
+ //ListControl 초기화
+ for (int i = 0; i < 15; i++)
+ {
+ SceneLists.Add(new BindingList());
+ }
+
+ listBoxControl1.DisplayMember = "SceneName";
+ listBoxControl1.ValueMember = "SceneDate";
+ listBoxControl1.DataSource = SceneLists[0];
+
+ listBoxControl2.DisplayMember = "Tag";
+ listBoxControl2.ValueMember = "Tag";
+ listBoxControl2.DataSource = nowSelectedSceneVariables;
+
+ listBoxControl5.DisplayMember = "Tag";
+ listBoxControl5.ValueMember = "Tag";
+ listBoxControl5.DataSource = nowScheduleVariables;
+
+ syncManager = new SyncManager(UserName);
+ }
+
+
+ private async void MainForm_ShownAsync(object sender, EventArgs e)
+ {
+ //Schedule GridControl
+ gridInit();
+
+ //Custom Toggle Switch Painter
+ InitializeSceneGroupComboBox();
+
+ TM = TornadoManager.getInstance();
+ TM.setMainFrom(this);
+ TornadoAliveCheckThread = new System.Threading.Thread(new System.Threading.ThreadStart(CheckWorkerTornado));
+ TornadoAliveCheckThread.Start();
+ AliveControlTornado = lblConnectionTornado2;
+
+ timeEdit2.EditValue = DateTime.Now.Add(timeGap);
+
+ toggleSwitchChannel.IsOn = !toggleSwitchChannel.IsOn;
+
+ LoadDafaultOptions();
+
+ sceneListLoad();
+
+ timeEdit2.EditValue = DateTime.Now.Add(timeGap);
+
+ LoadSchedule();
+
+ //LoadSceneGroups();
+
+ if (isAdmin) InitlistBoxControlUsers();
+ tileBarItem3.Visible = isAdmin;
+ //customersTileBarItem.Visible = isAdmin;
+
+ /*
+ // ✅ 서버와 자동 동기화 실행
+ string date = DateTime.Now.ToString("yyyyMMdd");
+ bool isCable = this.isCable; // 현재 채널 상태 반영
+ await syncManager.SyncDataAsync(date, isCable);
+ */
+
+ comboBoxEdit2.SelectedIndex = 0;
+
+
+
+ RegistryKey key = Registry.CurrentUser.CreateSubKey(subKey);
+ if (key.GetValue("timeGap") != null)
+ {
+ txtTimeGap.Text = key.GetValue("timeGap").ToString();
+ setTimeGap(0);
+ }
+ key.Close();
+
+
+ }
+
+ private void CheckWorkerTornado()
+ {
+ while (true)
+ {
+ try
+ {
+ isReqeustHeartbeat = true;
+ TM.AliveCheck();
+ System.Threading.Thread.Sleep(CheckTimeTornado);
+
+
+ Color color = !isReqeustHeartbeat ? AliveColor : DeadColor;
+
+
+ if (this.InvokeRequired)
+ {
+ this.Invoke((MethodInvoker)(() => AliveControlTornado.BackColor = color));
+
+ }
+ else
+ {
+ AliveControlTornado.BackColor = color;
+
+ }
+
+ if (isReqeustHeartbeat) TM.Connection();
+ }
+ catch (Exception ex)
+ {
+ Log(ex.Message, LogWriter.LogType.Error);
+ }
+
+ }
+ }
+
+
+
+ private void InitializeSceneGroupComboBox()
+ {
+ /*
+ // cmbSceneGroup 초기화
+ cmbSceneGroup.Properties.Items.Clear();
+ //cmbSceneGroup.Properties.Items.Add("전체Scene"); // 기본 선택 항목
+ cmbSceneGroup.SelectedIndex = 0;
+
+ // SceneGroups 추가
+ foreach (var group in SceneGroups)
+ {
+ cmbSceneGroup.Properties.Items.Add(group.GroupName);
+ }
+ */
+
+ // 초기 데이터 설정
+ UpdateSceneScheduleComboBox();
+ }
+
+
+ bool isFormClosing = false;
+ private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
+ {
+ if (MessageBox.Show("신세계라이브쇼핑 자동화 솔루션을 종료하시겠습니까?", "종료", MessageBoxButtons.OKCancel) == DialogResult.OK)
+ {
+ try
+ {
+ isFormClosing = true;
+ TornadoAliveCheckThread.Abort();
+ Dispose(true);
+ Application.Exit();
+ }
+ catch (Exception ex)
+ {
+
+ }
+ Dispose(true);
+ Application.Exit();
+ }
+ else
+ {
+ e.Cancel = true;
+ }
+ }
+
+
+ #region Tornado Manager
+
+ private Color AliveColor = Color.FromArgb(0, 192, 0);
+ private Color DeadColor = Color.FromArgb(192, 0, 0);
+
+ private Thread TornadoAliveCheckThread = null;
+ public int CheckTimeTornado = 5000;
+ public LabelControl AliveControlTornado;
+ public bool isReqeustHeartbeat = false;
+
+ public TornadoManager TM = TornadoManager.getInstance();
+
+ List waitThumbnailPath = new List();
+ internal void OnLogMessage(string logMessage)
+ {
+ Console.WriteLine("토네이도 메시지 : " + logMessage);
+
+ if (logMessage.Contains("[SUCCESS] HEART_BEAT"))
+ {
+ isReqeustHeartbeat = false;
+ }
+ else if (waitThumbnailPath.Count > 0)
+ {
+ if (logMessage.Contains("[SUCCESS] DOWNLOAD_THUMBNAIL"))
+ {
+ // SceneName:20250226195730_1
+ string[] splitStrs = logMessage.Split(' ');
+ string fileName = "";
+ foreach (string s in splitStrs) if (s.Contains("SceneName:")) fileName = s.Replace("SceneName:", "");
+
+ if (fileName != "")
+ {
+ int targetIndex = -1;
+
+ for (int i = 0; i < waitThumbnailPath.Count; i++)
+ {
+ if (waitThumbnailPath[i].Contains(fileName)) targetIndex = i;
+ }
+
+ if (targetIndex != -1)
+ {
+
+ string target = waitThumbnailPath[targetIndex];
+ waitThumbnailPath.RemoveAt(targetIndex);
+
+ if (waitThumbnailPath.Count == 0) pictureBoxThumbnailSceneList.Image = Image.FromFile(target);
+ }
+
+ }
+ }
+ }
+ }
+ #endregion
+
+
+
+
+ #region Options
+
+ private void lbl색상_Click(object sender, EventArgs e)
+ {
+ LabelControl target = (LabelControl)sender;
+
+ ColorPickEdit colorPickEdit1 = new ColorPickEdit();
+ FrmColorPicker frm = new FrmColorPicker(colorPickEdit1.Properties);
+ frm.StartPosition = FormStartPosition.CenterScreen;
+ frm.SelectedColor = target.BackColor;
+ frm.TopMost = true;
+ if (frm.ShowDialog(colorPickEdit1.FindForm()) == System.Windows.Forms.DialogResult.OK)
+ {
+ target.BackColor = frm.SelectedColor;
+
+ if (target.Name.Equals(lblNEXT송출배경색.Name))
+ {
+ int index = comboBoxEdit2.SelectedIndex;
+ labelControlsBack[index].BackColor = target.BackColor;
+ target = labelControlsBack[index];
+ }
+ else if (target.Name.Equals(lblNEXT송출글자색.Name))
+ {
+ int index = comboBoxEdit2.SelectedIndex;
+ labelControlsFore[index].BackColor = target.BackColor;
+ target = labelControlsFore[index];
+ }
+
+ GetOptions.ChangeGridColor(target.Name, target.BackColor);
+ GetOptions.SaveGridColor();
+ }
+ }
+
+ #endregion
+
+ #region Schedule
+
+ bool isFirst = true;
+
+ TimeSpan timeGap = new TimeSpan(0);
+ string DBIP = "10.10.50.205";
+ TimeSpan forbidStart = new TimeSpan(0, 3, 0);
+ TimeSpan forbidEnd = new TimeSpan(0, 3, 0);
+ private void LoadSchedule()
+ {
+ if (InvokeRequired)
+ {
+ Invoke(new Action(LoadSchedule));
+ return;
+ }
+
+ try
+ {
+ if (isLoading) return;
+
+ string port = "60021";
+ string mcode = isCable ? "TV01" : "TV05";
+
+ string date1 = ((DateTime)timeEdit2.EditValue).ToString("yyyyMMdd") + "000000";
+ string date2 = ((DateTime)timeEdit2.EditValue).ToString("yyyyMMdd") + "235959";
+ string urlAddOn = "&confirmYn=0" + "&livetalkYn=0";
+
+ string requestURL = "http://" + DBIP + ":" + port + "/방송용/새데이터조회/방송편성?보낸사람=web&mediaCode=" + mcode + "&broadStartFromDate=" + date1 + "&broadStartToDate=" + date2 + urlAddOn;
+
+ //반대편 정보 Cable, IPTV 정보를 읽어와서 이원편성인지 확인하는 과정
+ string mcodeReverse = !isCable ? "TV01" : "TV05";
+ string requestURLReverse = "http://" + DBIP + ":" + port + "/방송용/새데이터조회/방송편성?보낸사람=web&mediaCode=" + mcodeReverse + "&broadStartFromDate=" + date1 + "&broadStartToDate=" + date2 + urlAddOn;
+
+ WebRequest requestReverse = WebRequest.Create(requestURLReverse);
+ requestReverse.Method = "GET";
+ requestReverse.ContentType = "application/json; charset=UTF-8;";
+ //request.ContentType = "charset=UTF-8";
+
+ BindingList schedulesReverse = new BindingList();
+
+ using (WebResponse responseReverse = requestReverse.GetResponse())
+ using (Stream streamReverse = responseReverse.GetResponseStream())
+ using (StreamReader readerReverse = new StreamReader(streamReverse))
+ {
+ string data = readerReverse.ReadToEnd();
+ JObject obj = JObject.Parse(data);
+
+ JArray jArray = (JArray)obj["scheduleChart"];
+
+ if (jArray != null)
+ {
+ foreach (JObject j in jArray)
+ {
+ DateTime startTime = Convert.ToDateTime(j["startTime"].ToString());
+ DateTime endTime = Convert.ToDateTime(j["endTime"].ToString());
+ int duration = Convert.ToInt32(j["duration"].ToString());
+ int tapeTime = Convert.ToInt32(j["tapeTime"].ToString());
+ TimeSpan tapeTimeSpan = new TimeSpan(0, 0, tapeTime);
+ TimeSpan durationSpan = new TimeSpan(0, 0, duration);
+ string sceneName = j["programName"].ToString();
+ string doneString = "";
+ bool isServiceGoods = j["lgroupName"].ToString().Equals("무형서비스");
+
+
+ Schedule bufSchedule = new Schedule() { scheduleType = "스케쥴", StartTimeDateTime = startTime, TapeTime = tapeTimeSpan, DurationSpan = durationSpan, sceneName = sceneName, doneString = doneString, IsServiceGoods = isServiceGoods };
+
+ schedulesReverse.Add(bufSchedule);
+ }
+ }
+ }
+
+ //반대편 정보 입력 완료
+
+
+ WebRequest request = WebRequest.Create(requestURL);
+ request.Method = "GET";
+ request.ContentType = "application/json; charset=UTF-8;";
+ //request.ContentType = "charset=UTF-8";
+
+ schedules = new BindingList();
+
+ using (WebResponse response = request.GetResponse())
+ using (Stream stream = response.GetResponseStream())
+ using (StreamReader reader = new StreamReader(stream))
+ {
+ string data = reader.ReadToEnd();
+ JObject obj = JObject.Parse(data);
+
+ JArray jArray = (JArray)obj["scheduleChart"];
+
+ //if (isFirst)
+ {
+ isFirst = false;
+ /*
+ var v = obj["조회시간"];
+ var s = Convert.ToDateTime(v.ToString());
+ timeGap = s - DateTime.Now;
+ syncManager.setTimeGap(timeGap);
+ Console.WriteLine(timeGap);
+ */
+ }
+ if (jArray != null)
+ {
+ foreach (JObject j in jArray)
+ {
+ DateTime startTime = Convert.ToDateTime(j["startTime"].ToString());
+ DateTime endTime = Convert.ToDateTime(j["endTime"].ToString());
+ int duration = Convert.ToInt32(j["duration"].ToString());
+ int tapeTime = Convert.ToInt32(j["tapeTime"].ToString());
+ TimeSpan tapeTimeSpan = new TimeSpan(0, 0, tapeTime);
+ TimeSpan durationSpan = new TimeSpan(0, 0, duration);
+ string sceneName = j["programName"].ToString();
+ string doneString = "";
+ bool isServiceGoods = j["lgroupName"].ToString().Equals("무형서비스");
+
+
+
+ Schedule bufSchedule = new Schedule() { scheduleType = "스케쥴", StartTimeDateTime = startTime, TapeTime = tapeTimeSpan, DurationSpan = durationSpan, sceneName = sceneName, doneString = doneString, IsServiceGoods = isServiceGoods };
+
+ foreach (Schedule s in schedulesReverse)
+ {
+ if (bufSchedule.StartTimeDateTime == s.StartTimeDateTime)
+ {
+ if (bufSchedule.sceneName == s.sceneName)
+ {
+ bufSchedule.scheduleSimulCastName = "동시편성";
+ }
+ }
+ }
+
+ schedules.Add(bufSchedule);
+ }
+ }
+ }
+
+ //기존정보가 있는지, 확인하는 과정
+ BindingList loadedSchedule = loadScheduleData();
+ bool isExistDiffer = false;
+ Schedule differSchedule = null;
+
+ if (loadedSchedule.Count > 0)
+ {
+
+ foreach (var v in schedules)
+ {
+ bool isExistSchedule = false;
+ foreach (var v2 in loadedSchedule)
+ {
+ if (v2.sceneName.Equals(v.sceneName) && v2.StartTimeDateTime.Equals(v.StartTimeDateTime) && v2.TapeTime.Equals(v.TapeTime)) isExistSchedule = true;
+ }
+
+ if (!isExistSchedule)
+ {
+ isExistDiffer = true;
+ differSchedule = v;
+ }
+ }
+
+ //다른 정보가 있음.. 임시로 놓고 나중에 대응할 것
+ //if (isExistDiffer)
+ {
+ loadedSchedule[0].doneString = "";
+ foreach (var v in loadedSchedule) if (v.scheduleType == "송출")
+ {
+ if (isExistDiffer)
+ {
+ if (differSchedule.StartTimeDateTime < v.StartTimeDateTime && differSchedule.EndTimeDateTime > v.StartTimeDateTime) continue;
+ }
+ schedules.Add(v);
+ }
+ }
+ /*
+ else
+ {
+ loadedSchedule[0].doneString = "";
+ schedules.Clear();
+ foreach (var v in loadedSchedule) schedules.Add(v);
+ }
+ */
+ }
+
+ foreach (var schedule in schedules)
+ {
+ schedule.RelativeStartTime = schedule.GetPreviousScheduleStartTime(schedules);
+ }
+
+
+ gridControlSchedule.DataSource = schedules;
+
+ gridViewSchedule.BestFitColumns();
+
+ DoneTime();
+
+ Log($"스케줄 파일을 {GetSchedulePath()}에서 성공적으로 로드했습니다.", LogType.Normal);
+
+ if (isExistDiffer)
+ {
+ MessageBox.Show(differSchedule.StartTimeDateTime.ToString() + " 시작 스케줄이 변경되어, 송출을 삭제하였습니다.");
+ }
+ }
+ catch (Exception ex)
+ {
+ Log($"스케줄 로드 중 오류 발생: {ex.Message}", LogType.Error);
+ }
+
+ }
+
+ private void btnScheduleCopy_Click(object sender, EventArgs e)
+ {
+ if (!isModifying)
+ {
+ MessageBox.Show("수정 모드에서만 사용할 수 있습니다.");
+ return;
+ }
+
+ BindingList loadedSchedule = loadScheduleData(true);
+ if (loadedSchedule.Count > 0)
+ {
+ List forCopy = new List();
+ foreach (var v in schedules)
+ {
+ if (v.scheduleType == "스케쥴")
+ {
+ foreach (var v2 in loadedSchedule)
+ {
+ if (v2.scheduleType == "스케쥴")
+ {
+ if (v2.sceneName.Equals(v.sceneName) && v2.StartTimeDateTime.Equals(v.StartTimeDateTime))
+ {
+ //해당 시각 내에 있는 같은 값들을 반환하여 집어넣어야 함
+ foreach (var v3 in loadedSchedule)
+ {
+ if (v3.scheduleType == "송출")
+ {
+ if (v2.StartTimeDateTime <= v3.StartTimeDateTime && v2.EndTimeDateTime >= v3.StartTimeDateTime)
+ {
+ //같은 값이 있는지 확인 후 넣어야함
+ if (!schedules.Any(x => x.StartTimeDateTime == v3.StartTimeDateTime && x.sceneName == v3.sceneName && x.DurationSpan == v3.DurationSpan))
+ {
+ forCopy.Add(v3);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ foreach (var v in forCopy)
+ {
+
+ schedules.Add(v);
+ }
+
+ if (forCopy.Count > 0) schedules[0].doneString = "";
+ }
+ }
+
+
+ private void DoneTime(bool isAddOrDelete = false)
+ {
+ if (schedules == null) return;
+
+
+ int[] selecteds = gridViewSchedule.GetSelectedRows();
+ bool isChanged = false;
+
+ foreach (Schedule s in schedules)
+ {
+ if (s.StartTimeDateTime > DateTime.Now.Add(timeGap))
+ {
+ if (s.doneString != "NEXT")
+ {
+ s.doneString = "NEXT";
+ isChanged = true;
+ }
+ }
+ else if (s.StartTimeDateTime + s.DurationSpan > DateTime.Now.Add(timeGap))
+ {
+ if (s.doneString != "ON AIR")
+ {
+ s.doneString = "ON AIR";
+ isChanged = true;
+ }
+ }
+ else
+ {
+ if (s.doneString != "DONE")
+ {
+ s.doneString = "DONE";
+ isChanged = true;
+ }
+ }
+ }
+
+ try
+ {
+ TimeSpan _timeGap = DateTime.Now.Add(timeGap) - (DateTime)timeEdit1.EditValue;
+
+ if (_timeGap < new TimeSpan(0, 0, 0))
+ {
+ textEdit8.Text = _timeGap.ToString(@"hh\:mm\:ss");
+ }
+ else
+ {
+ if (_timeGap < (TimeSpan)timeSpanEdit5.EditValue)
+ {
+ textEdit8.Text = "On Air";
+ }
+ else
+ {
+ textEdit8.Text = "DONE";
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Log($"DoneTime Error : {ex.Message}", LogType.Error);
+ }
+
+ if (isChanged)
+ {
+ gridControlSchedule.DataSource = schedules.OrderBy(x => x.StartTimeDateTime).ToList();
+
+ gridViewSchedule.ClearSelection();
+ foreach (var v in selecteds) gridViewSchedule.SelectRow(v);
+
+ if (selecteds.Length > 0)
+ {
+ gridViewSchedule.MakeRowVisible(selecteds[0]);
+ }
+
+ saveScheduleData();
+
+ }
+
+ //schedules = schedules.OrderBy(x => x.StartTimeDateTime).ToList();
+ //gridControlSchedule.DataSource = schedules;
+ //gridViewSchedule.SelectRow(selecteds
+ }
+
+ private void ApplyRowFilter()
+ {
+ gridViewSchedule.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Never;
+
+
+ // isDoneDisplayInvisible이 false인 경우에만 필터를 적용
+ if (!isDoneDisplayInvisible)
+ {
+ gridViewSchedule.ActiveFilterString = string.Empty;
+ }
+ else
+ {
+ gridViewSchedule.ActiveFilterString = "NOT ([scheduleType] = '송출' AND [doneString] = 'DONE')";
+ }
+ }
+
+
+
+ private string GetSchedulePath(bool isReverse = false)
+ {
+ string date = ((DateTime)timeEdit2.EditValue).ToString("yyyyMMdd");
+ string path = Environment.CurrentDirectory + @"\Data\scheduleData\" + isCable + "_" + date + ".json";
+ if (isReverse) path = Environment.CurrentDirectory + @"\Data\scheduleData\" + !isCable + "_" + date + ".json";
+ return path;
+ }
+
+ private void saveScheduleData()
+ {
+ string json = JsonConvert.SerializeObject(schedules);
+ File.WriteAllText(GetSchedulePath(), json.ToString(), Encoding.UTF8);
+
+ DateTime serverTime = DateTime.Now.Add(timeGap);
+ // 서버 시간을 기준으로 파일 수정 시간 설정
+ File.SetLastWriteTimeUtc(GetSchedulePath(), serverTime);
+ }
+
+ private BindingList loadScheduleData(bool isReverse = false)
+ {
+ BindingList bufschedules = new BindingList();
+
+ if (File.Exists(GetSchedulePath()))
+ {
+ using (StreamReader file = new StreamReader(GetSchedulePath(isReverse)))
+ {
+ BindingList buf = JsonConvert.DeserializeObject>(file.ReadToEnd());
+
+ foreach (var v in buf)
+ {
+ bufschedules.Add(v);
+ }
+ }
+ }
+
+ return bufschedules;
+ }
+
+ BindingList schedules;
+ private void gridInit()
+ {
+ Font font = gridControlSchedule.Font;
+ foreach (AppearanceObject ap in gridViewSchedule.Appearance)
+ {
+ ap.Font = font;
+ }
+
+ if (gridViewSchedule.FormatConditions.Count > 0)
+ {
+ for (int i = 0; i < gridViewSchedule.FormatConditions.Count; i++)
+ {
+ gridViewSchedule.FormatConditions[i].Appearance.Font = new Font(font.FontFamily, font.Size, gridViewSchedule.FormatConditions[i].Appearance.Font.Style);
+ }
+ }
+
+ gridViewSchedule.OptionsCustomization.AllowSort = false;
+ gridViewSchedule.OptionsCustomization.AllowFilter = false;
+
+ schedules = new BindingList() { };
+
+
+ gridControlSchedule.DataSource = schedules;
+
+ ((RepositoryItemDateEdit)gridViewSchedule.Columns["StartTimeDateTime"].RealColumnEdit).EditMask = "HH:mm:ss";
+ ((RepositoryItemDateEdit)gridViewSchedule.Columns["StartTimeDateTime"].RealColumnEdit).UseMaskAsDisplayFormat = true;
+
+ ((RepositoryItemDateEdit)gridViewSchedule.Columns["EndTimeDateTime"].RealColumnEdit).EditMask = "HH:mm:ss";
+ ((RepositoryItemDateEdit)gridViewSchedule.Columns["EndTimeDateTime"].RealColumnEdit).UseMaskAsDisplayFormat = true;
+
+ ((RepositoryItemTimeSpanEdit)gridViewSchedule.Columns["RelativeStartTime"].RealColumnEdit).EditMask = "HH:mm:ss";
+ //((RepositoryItemTimeSpanEdit)gridViewSchedule.Columns["RelativeStartTime"].RealColumnEdit).UseMaskAsDisplayFormat = true;
+
+ /*
+ imageComboBoxEdit1.DataBindings.Add(new Binding("EditValue", schedules, "sceneName"));
+ imageComboBoxEdit1.Properties.ValidateOnEnterKey = true;
+
+ txtScheduleType.DataBindings.Add(new Binding("EditValue", schedules, "scheduleType"));
+ txtScheduleType.Properties.ValidateOnEnterKey = true;
+
+
+ timeSpanEdit1.DataBindings.Add(new Binding("EditValue", schedules, "DurationSpan"));
+ timeSpanEdit1.Properties.ValidateOnEnterKey = true;
+ */
+
+ gridViewSchedule.RowStyle += (sender, e) =>
+ {
+ if (e.RowHandle < 0) return;
+ DevExpress.XtraGrid.Views.Grid.GridView view = sender as DevExpress.XtraGrid.Views.Grid.GridView;
+
+ var done = ((Schedule)gridViewSchedule.GetRow(e.RowHandle)).doneString;
+ var r = ((Schedule)gridViewSchedule.GetRow(e.RowHandle)).scheduleType;
+
+ if (r != "스케쥴")
+ {
+ var layer = ((Schedule)gridViewSchedule.GetRow(e.RowHandle)).layerNumber;
+ //e.Appearance.ForeColor = Color.White;
+ //e.Appearance.BackColor = Color.FromArgb(80, 130, 201);
+
+ if (((Schedule)gridViewSchedule.GetRow(e.RowHandle)).IgnoreForbid)
+ {
+ e.Appearance.ForeColor = GetOptions.GetGridColor(lbl송출무시금지글자색);
+ e.Appearance.BackColor = GetOptions.GetGridColor(lbl송출무시금지배경색);
+ }
+ else if (layer != null)
+ {
+ //e.Appearance.ForeColor = GetOptions.GetGridColor(lblNEXT송출글자색);
+ //e.Appearance.BackColor = GetOptions.GetGridColor(lblNEXT송출배경색);
+ e.Appearance.ForeColor = GetOptions.GetGridColor(labelControlsFore[(int)layer]);
+ e.Appearance.BackColor = GetOptions.GetGridColor(labelControlsBack[(int)layer]);
+
+ }
+ }
+ else
+ {
+ if (done == "DONE")
+ {
+ e.Appearance.ForeColor = GetOptions.GetGridColor(lbl완료스케쥴글자색);
+ e.Appearance.BackColor = GetOptions.GetGridColor(lbl완료스케쥴배경색);
+ }
+ else
+ {
+ if (done == "ON AIR")
+ {
+ e.Appearance.ForeColor = GetOptions.GetGridColor(lblOnAir스케쥴글자색);
+ e.Appearance.BackColor = GetOptions.GetGridColor(lblOnAir스케쥴배경색);
+ }
+ else
+ {
+ e.Appearance.ForeColor = GetOptions.GetGridColor(lblNEXT스케쥴글자색);
+ e.Appearance.BackColor = GetOptions.GetGridColor(lblNEXT스케쥴배경색);
+ }
+
+ }
+ }
+
+ };
+
+ gridViewSchedule.RowCellStyle += (sender, e) =>
+ {
+ if (e.RowHandle < 0) return;
+ DevExpress.XtraGrid.Views.Grid.GridView view = sender as DevExpress.XtraGrid.Views.Grid.GridView;
+
+
+ //Selected Row Style
+ int[] selectedRows = gridViewSchedule.GetSelectedRows();
+ if (selectedRows.Contains(e.RowHandle))
+ {
+ e.Appearance.ForeColor = GetOptions.GetGridColor(lbl선택라인글자색);
+ e.Appearance.BackColor = GetOptions.GetGridColor(lbl선택라인배경색);
+ /*
+ if (e.CellValue != null)
+ {
+ if (e.Column.FieldName == "scheduleType")
+ {
+ e.Appearance.ForeColor = GetOptions.GetGridColor(lbl선택라인종류글자색);
+ e.Appearance.BackColor = GetOptions.GetGridColor(lbl선택라인종류배경색);
+ }
+ else if (e.Column.FieldName == "doneString")
+ {
+ e.Appearance.ForeColor = GetOptions.GetGridColor(lbl선택라인상태글자색);
+ e.Appearance.BackColor = GetOptions.GetGridColor(lbl선택라인상태배경색);
+ }
+ }
+ */
+ }
+
+ if (e.CellValue != null && e.Column.FieldName == "doneString")
+ {
+ if (e.CellValue.ToString() == "DONE")
+ {
+ //e.Appearance.ForeColor = Color.White;
+ //e.Appearance.BackColor = Color.FromArgb(120, 120, 120);
+ e.Appearance.ForeColor = GetOptions.GetGridColor(lbl완료상태글자색);
+ e.Appearance.BackColor = GetOptions.GetGridColor(lbl완료상태배경색);
+ }
+ else if (e.CellValue.ToString() == "ON AIR")
+ {
+ //e.Appearance.ForeColor = Color.AliceBlue;
+ //e.Appearance.BackColor = Color.Red;
+ e.Appearance.ForeColor = GetOptions.GetGridColor(lblOnAir상태글자색);
+ e.Appearance.BackColor = GetOptions.GetGridColor(lblOnAir상태배경색);
+ }
+ else if (e.CellValue.ToString() == "NEXT")
+ {
+ //e.Appearance.ForeColor = Color.AliceBlue;
+ //e.Appearance.BackColor = Color.Red;
+ e.Appearance.ForeColor = GetOptions.GetGridColor(lblNEXT상태글자색);
+ e.Appearance.BackColor = GetOptions.GetGridColor(lblNEXT상태배경색);
+ }
+ }
+
+ if (e.CellValue != null && e.Column.FieldName == "scheduleType")
+ {
+ if (e.CellValue.ToString() == "스케쥴")
+ {
+ e.Appearance.ForeColor = GetOptions.GetGridColor(lbl종류스케쥴글자색);
+ e.Appearance.BackColor = GetOptions.GetGridColor(lbl종류스케쥴배경색);
+ }
+ else if (e.CellValue.ToString() == "송출")
+ {
+ e.Appearance.ForeColor = GetOptions.GetGridColor(lbl종류송출글자색);
+ e.Appearance.BackColor = GetOptions.GetGridColor(lbl종류송출배경색);
+ }
+ }
+
+
+
+
+ };
+ }
+
+ private void gridViewSchedule_SelectionChanged(object sender, DevExpress.Data.SelectionChangedEventArgs e)
+ {
+ int[] rows = gridViewSchedule.GetSelectedRows();
+ if (rows.Count() == 1)
+ {
+
+ var s = (Schedule)gridViewSchedule.GetRow(rows[0]);
+ var v = s.scheduleType;
+ panel1.Visible = true;
+ simpleButton3.Visible = v == "스케쥴";
+ //chkUseTapeTime.Visible = v == "스케쥴";
+ simpleButton7.Visible = v != "스케쥴";
+ simpleButton9.Visible = v != "스케쥴";
+ simpleButton1.Visible = v != "스케쥴";
+
+
+ if (v == "스케쥴")
+ {
+ groupControl3.Text = "스케쥴 선택 : 송출 추가";
+ }
+ else
+ {
+ groupControl3.Text = "송출 선택 : 송출 수정";
+ //chkUseTapeTime.Checked = false;
+ }
+
+ SelectInformation(s);
+ }
+ else if (rows.Count() > 1)
+ {
+ panel1.Visible = false;
+ groupControl3.Text = "다중선택 : 다수 복사 기능";
+
+ // 선택된 행들의 인덱스 배열을 얻기
+ int[] selectedRows = gridViewSchedule.GetSelectedRows();
+ richTextBox1.Clear(); // 기존 텍스트 초기화
+
+ // 선택된 행들의 데이터 추출
+ foreach (int rowIndex in selectedRows)
+ {
+ if (gridViewSchedule.GetRow(rowIndex) is Schedule schedule)
+ {
+ // 스케줄 타입에 따라 색상 지정
+ Color typeColor = schedule.scheduleType == "스케쥴" ? Color.Gray : Color.White;
+ Color relativeTimeColor = Color.DarkOrange;
+
+
+ // 스케줄 타입
+ AppendColoredText(richTextBox1, $"{schedule.scheduleType}\n", typeColor);
+ // 씬 이름
+ richTextBox1.AppendText($" {schedule.sceneName}\n");
+ if (schedule.scheduleType != "스케쥴")
+ {
+ AppendColoredText(richTextBox1, " 레이어 : ", Color.White);
+ AppendColoredText(richTextBox1, $"{schedule.layerNumber}\n", relativeTimeColor);
+
+ AppendColoredText(richTextBox1, " 상대시간 : ", Color.White);
+ AppendColoredText(richTextBox1, $"{schedule.RelativeStartTime}\n", relativeTimeColor);
+
+ AppendColoredText(richTextBox1, " 길이 : ", Color.White);
+ AppendColoredText(richTextBox1, $"{schedule.DurationSpan}\n", relativeTimeColor);
+ }
+ }
+ }
+
+ if (richTextBox1.TextLength == 0)
+ {
+ richTextBox1.Text = "No rows selected.";
+ }
+ }
+ }
+ private void AppendColoredText(RichTextBox richTextBox, string text, Color color)
+ {
+ int start = richTextBox.TextLength;
+ richTextBox.AppendText(text);
+ richTextBox.SelectionStart = start;
+ richTextBox.SelectionLength = text.Length;
+ richTextBox.SelectionColor = color;
+ richTextBox.SelectionLength = 0; // 선택 해제
+ }
+
+
+
+ BindingList nowScheduleVariables = new BindingList();
+
+
+ private void SelectInformation(Schedule s)
+ {
+ if (s.scheduleType == "스케쥴")
+ {
+ /*
+ cmbSceneSchedule.Properties.Items.Clear();
+ //foreach (var v in WholeScenes) cmbSceneSchedule.Properties.Items.Add(v.SceneName);
+ cmbSceneSchedule.SelectedIndex = -1;
+ cmbSceneSchedule.Text = "";
+ pictureBox1.Image = null;
+ */
+ timeEdit1.EditValue = s.StartTimeDateTime.Value.AddSeconds(((TimeSpan)timeSpanEdit1.EditValue).TotalSeconds);
+ //timeEdit1.EditValue = s.StartTimeDateTime.Value.AddMinutes(5);
+ //timeSpanEdit5.EditValue = new TimeSpan(0, 0, 30);
+ }
+ else //송출
+ {
+
+ if (s.sceneGroupName == null) return;
+
+ cmbSceneSchedule.Properties.Items.Clear();
+ cmbSceneGroup.SelectedIndex = Convert.ToInt32(s.sceneGroupName.Replace("Group", "")) - 1;
+ cmbSceneGroup_SelectedIndexChanged(null, null);
+ cmbSceneSchedule.SelectedIndexChanged -= cmbSceneSchedule_SelectedIndexChanged;
+ cmbSceneSchedule.SelectedIndex = GetWholeSceneIndex(cmbSceneGroup.SelectedIndex, s.sceneName);
+ cmbSceneSchedule.SelectedIndexChanged += cmbSceneSchedule_SelectedIndexChanged;
+
+
+ chk송출금지무시.Checked = s.IgnoreForbid;
+ chkUseTapeTime_CheckedChanged(chk송출금지무시, null);
+
+
+ timeEdit1.EditValue = s.StartTimeDateTime;
+ timeSpanEdit5.EditValue = s.DurationSpan;
+
+
+ cmbScheduleSelectedLayer.Text = s.layerNumber.ToString();
+
+ int index = GetWholeSceneIndex(cmbSceneGroup.SelectedIndex, s.sceneName); //GetWholeSceneIndex(cmbSceneSchedule.Text);
+ if (index == -1)
+ {
+ try
+ {
+ //MessageBox.Show("존재하지 않는 Scene 입니다. 송출 값을 삭제합니다..");
+ //송출 삭제
+ //schedules.Remove(s);
+ //schedules[0].doneString = "";
+ return;
+ }
+ catch (Exception ex)
+ {
+ Log($"미존재 Scene Error : {ex.Message}", LogType.Error);
+ }
+ }
+ SceneVO selected = SceneLists[cmbSceneGroup.SelectedIndex][index];
+ string imgPath = Environment.CurrentDirectory + @"\Thumbnail\" + selected.SceneDate + ".png";
+ try
+ {
+ if (File.Exists(imgPath))
+ {
+ pictureBox1.Image = Image.FromFile(imgPath);
+ }
+ else
+ {
+ Log($"썸네일 이미지가 존재하지 않습니다: {imgPath}", LogType.Error);
+ pictureBox1.Image = Properties.Resources.no_image_icon_23494;
+ }
+ }
+ catch (Exception ex)
+ {
+ Log($"썸네일 이미지 로드 중 오류 발생: {ex.Message}", LogType.Error);
+ pictureBox1.Image = Properties.Resources.no_image_icon_23494;
+ }
+
+ nowScheduleVariables.Clear();
+ foreach (var v in s.변수정보)
+ {
+ var buf = new VariablesVO();
+ buf.Tag = v.Tag;
+ buf.Text = v.Text;
+ nowScheduleVariables.Add(buf);
+ }
+ nowModifyingSchedule = s;
+ }
+ }
+
+ private bool IsOverlapping(Schedule newSchedule)
+ {
+ foreach (var schedule in schedules)
+ {
+ if (schedule.scheduleType == "송출" && schedule.layerNumber == newSchedule.layerNumber)
+ {
+ DateTime existingStart = (DateTime)schedule.StartTimeDateTime;
+ DateTime existingEnd = (DateTime)(schedule.StartTimeDateTime + schedule.DurationSpan);
+
+ DateTime newStart = (DateTime)newSchedule.StartTimeDateTime;
+ DateTime newEnd = (DateTime)(newSchedule.StartTimeDateTime + newSchedule.DurationSpan);
+
+ // 시간이 겹치는지 확인
+ if (newStart < existingEnd && newEnd > existingStart)
+ {
+ return true; // 겹침
+ }
+ }
+ }
+ return false; // 겹치지 않음
+ }
+
+
+ private void cmbSceneSchedule_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (cmbSceneSchedule.SelectedIndex > -1)
+ {
+ int index = GetWholeSceneIndex(cmbSceneGroup.SelectedIndex, cmbSceneSchedule.Text);
+
+ SceneVO selected = SceneLists[cmbSceneGroup.SelectedIndex][index];
+
+
+ cmbScheduleSelectedLayer.Text = selected.SceneLayer;
+
+ nowScheduleVariables.Clear();
+ foreach (var v in selected.Variables)
+ {
+ var buf = new VariablesVO();
+ buf.Tag = v.Tag;
+ buf.Text = v.Text;
+ nowScheduleVariables.Add(buf);
+ }
+
+ string imgPath = Environment.CurrentDirectory + @"\Thumbnail\" + selected.SceneDate + ".png";
+ try
+ {
+ if (File.Exists(imgPath))
+ {
+ pictureBox1.Image = Image.FromFile(imgPath);
+ }
+ else
+ {
+ Log($"썸네일 이미지가 존재하지 않습니다: {imgPath}", LogType.Error);
+ pictureBox1.Image = Properties.Resources.no_image_icon_23494;
+ }
+ }
+ catch (Exception ex)
+ {
+ Log($"썸네일 이미지 로드 중 오류 발생: {ex.Message}", LogType.Error);
+ pictureBox1.Image = Properties.Resources.no_image_icon_23494;
+ }
+
+
+ }
+ }
+
+ Schedule nowModifyingSchedule = null;
+ private void listBoxControl5_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (listBoxControl5.SelectedItems.Count > 0)
+ {
+ VariablesVO selected = nowScheduleVariables[listBoxControl5.SelectedIndex];
+ textEdit2.Text = selected.Tag;
+ textEdit1.Text = selected.Text;
+ }
+ else
+ {
+ textEdit2.Text = "";
+ textEdit1.Text = "";
+ }
+ }
+
+ private void simpleButton3_Click(object sender, EventArgs e)
+ {
+ if (!isModifying)
+ {
+ MessageBox.Show("수정 모드에서만 사용할 수 있습니다.");
+ return;
+ }
+
+ if (cmbSceneSchedule.Text == "") return;
+
+ if ((TimeSpan)timeSpanEdit5.EditValue < new TimeSpan(0, 0, 1))
+ {
+ MessageBox.Show("길이를 설정해주세요.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+
+ if (sender == null && chk모든상품적용.Checked)
+ {
+ MessageBox.Show("모든 상품 적용은 '송출 추가'만 가능합니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+
+ BindingList variablesVOs = new BindingList();
+ foreach (var v in nowScheduleVariables)
+ {
+ var buf = new VariablesVO();
+ buf.Tag = v.Tag;
+ buf.Text = v.Text;
+ variablesVOs.Add(buf);
+ }
+
+
+ //기존방식 - 모든상품 추가가 아닌 경우
+ if (!chk모든상품적용.Checked)
+ {
+
+ int[] selectedRows = gridViewSchedule.GetSelectedRows();
+
+ // 새로 추가: timeSpanRepeat 컨트롤 값이 0보다 큰지 확인
+ TimeSpan repeatInterval = (TimeSpan)timeSpanRepeat.EditValue;
+ if (repeatInterval > TimeSpan.Zero)
+ {
+ string errMsg = "";
+
+
+ // 반복 모드: 반드시 단일 스케쥴이 선택되어 있어야 함
+ if (selectedRows.Length != 1)
+ {
+ MessageBox.Show("스케쥴 1개 선택시에만 Repeat 기능을 사용할 수 있습니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+
+ var baseSchedule = (Schedule)gridViewSchedule.GetRow(selectedRows[0]);
+ if (baseSchedule.scheduleType != "스케쥴")
+ {
+ MessageBox.Show("Repeat 기능은 '스케쥴' 유형에서만 사용할 수 있습니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+
+ // 기준 스케쥴의 시작 시간과 끝 시간
+ DateTime baseStart = baseSchedule.StartTimeDateTime.Value;
+ DateTime baseEnd = (DateTime)(baseStart + baseSchedule.DurationSpan);
+
+ // 사용자 지정 시작 시간 (timeEdit1)에서부터 반복 시작
+ DateTime currentTime = (DateTime)timeEdit1.EditValue;
+
+ // 반복 루프: currentTime이 기준 스케쥴 종료 전까지 반복
+ while (currentTime < baseEnd)
+ {
+ var newSchedule = new Schedule()
+ {
+ scheduleType = "송출",
+ StartTimeDateTime = currentTime,
+ DurationSpan = (TimeSpan)timeSpanEdit5.EditValue,
+ sceneGroupName = cmbSceneGroup.Text,
+ sceneName = cmbSceneSchedule.Text,
+ layerNumber = (short)Convert.ToInt32(cmbScheduleSelectedLayer.Text),
+ doneString = "",
+ 변수정보 = variablesVOs
+ };
+
+ // 금지 시간 검사
+ bool isAllowed = false;
+ foreach (var schedule in schedules.Where(s => s.scheduleType == "스케쥴"))
+ {
+ if (IsWithinPlayableTime(newSchedule, schedule, forbidStart, forbidEnd))
+ {
+ isAllowed = true;
+ break;
+ }
+ }
+
+ if (chk송출금지무시.Checked)
+ {
+ newSchedule.IgnoreForbid = true;
+ isAllowed = true;
+ }
+
+ if (!isAllowed)
+ {
+ errMsg += "스케쥴의 금지 시간에 포함되어 추가할 수 없습니다. " + currentTime + Environment.NewLine;
+ currentTime = currentTime.Add(repeatInterval);
+ continue;
+ }
+ else if (IsOverlapping(newSchedule))
+ {
+ errMsg += $"Layer {newSchedule.layerNumber}에 겹치는 시간이 존재합니다. " + currentTime + Environment.NewLine;
+ currentTime = currentTime.Add(repeatInterval);
+ continue;
+ }
+ else
+ {
+ schedules.Add(newSchedule);
+ newSchedule.RelativeStartTime = newSchedule.GetPreviousScheduleStartTime(schedules);
+ }
+
+ // 다음 반복
+ currentTime = currentTime.Add(repeatInterval);
+ }
+
+ if (errMsg != "") MessageBox.Show(errMsg, "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ else if (chkUseTapeTime.Checked)
+ {
+ string errMsg = "";
+
+ if (selectedRows.Length != 1)
+ {
+ MessageBox.Show("스케쥴 1개 선택시에만 TapeTime 기능을 사용할 수 있습니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+
+ var selectedSchedule = (Schedule)gridViewSchedule.GetRow(selectedRows[0]);
+
+ if (selectedSchedule.scheduleType != "스케쥴")
+ {
+ MessageBox.Show("TapeTime 기능은 '스케쥴' 유형에서만 사용할 수 있습니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+
+ // TapeTime 기준으로 송출 추가
+ TimeSpan tapeTime = (TimeSpan)selectedSchedule.TapeTime;
+ TimeSpan addedTime = (TimeSpan)timeSpanEdit1.EditValue;
+ DateTime startTime = selectedSchedule.StartTimeDateTime.Value;
+ DateTime endTime = (DateTime)(startTime + selectedSchedule.DurationSpan);
+ DateTime newEndTime = startTime;
+ for (int i = 0; i < 10; i++)
+ {
+ newEndTime += tapeTime;
+
+ if (endTime < newEndTime)
+ {
+ endTime = newEndTime - tapeTime;
+ break;
+ }
+ }
+
+ for (DateTime current = startTime + addedTime; current < endTime; current += tapeTime)
+ {
+ var newSchedule = new Schedule()
+ {
+ scheduleType = "송출",
+ StartTimeDateTime = current,
+ DurationSpan = (TimeSpan)timeSpanEdit5.EditValue,
+ sceneGroupName = cmbSceneGroup.Text,
+ sceneName = cmbSceneSchedule.Text,
+ layerNumber = (short)Convert.ToInt32(cmbScheduleSelectedLayer.Text),
+ doneString = "",
+ 변수정보 = variablesVOs
+ };
+
+ // 금지 시간 검사: 한 번이라도 통과하면 허용
+ bool isAllowed = false;
+ foreach (var schedule in schedules.Where(s => s.scheduleType == "스케쥴"))
+ {
+ if (IsWithinPlayableTime(newSchedule, schedule, forbidStart, forbidEnd))
+ {
+ isAllowed = true;
+ break; // 통과 가능한 구간이 발견되면 더 이상 검사하지 않음
+ }
+ }
+
+ if (chk송출금지무시.Checked)
+ {
+ newSchedule.IgnoreForbid = true;
+ isAllowed = true;
+ }
+
+ if (!isAllowed)
+ {
+ errMsg += "스케쥴의 금지 시간에 포함되어 추가할 수 없습니다. " + current + Environment.NewLine;
+ continue;
+ }
+ else if (IsOverlapping(newSchedule)) // 겹치는지 확인
+ {
+ errMsg += $"Layer {newSchedule.layerNumber}에 겹치는 시간이 존재합니다." + current + Environment.NewLine;
+ continue; // 겹치는 경우 추가하지 않음
+ }
+
+ schedules.Add(newSchedule);
+ newSchedule.RelativeStartTime = newSchedule.GetPreviousScheduleStartTime(schedules);
+ }
+
+ if (errMsg != "")
+ {
+ MessageBox.Show(errMsg, "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ }
+ else
+ {
+ // 기존 로직
+ var newSchedule = new Schedule()
+ {
+ scheduleType = "송출",
+ StartTimeDateTime = (DateTime)timeEdit1.EditValue, // + new TimeSpan(0, 0, Convert.ToInt32(timeSpanEdit1.TimeSpan.TotalSeconds)),
+ DurationSpan = (TimeSpan)timeSpanEdit5.EditValue,
+ sceneGroupName = cmbSceneGroup.Text,
+ sceneName = cmbSceneSchedule.Text,
+ layerNumber = (short)Convert.ToInt32(cmbScheduleSelectedLayer.Text),
+ doneString = "",
+ 변수정보 = variablesVOs
+ };
+
+ // 금지 시간 검사: 한 번이라도 통과하면 허용
+ bool isAllowed = false;
+ foreach (var schedule in schedules.Where(s => s.scheduleType == "스케쥴"))
+ {
+ if (IsWithinPlayableTime(newSchedule, schedule, forbidStart, forbidEnd))
+ {
+ isAllowed = true;
+ break; // 통과 가능한 구간이 발견되면 더 이상 검사하지 않음
+ }
+ }
+
+ if (chk송출금지무시.Checked)
+ {
+ newSchedule.IgnoreForbid = true;
+ isAllowed = true;
+ }
+
+ modifyErrorChecker = false;
+ if (!isAllowed)
+ {
+ MessageBox.Show("스케쥴의 금지 시간에 포함되어 추가할 수 없습니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ else if (IsOverlapping(newSchedule)) // 겹치는지 확인
+ {
+ MessageBox.Show($"Layer {newSchedule.layerNumber}에 겹치는 시간이 존재합니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ else
+ {
+ modifyErrorChecker = true;
+ schedules.Add(newSchedule);
+ newSchedule.RelativeStartTime = newSchedule.GetPreviousScheduleStartTime(schedules);
+ }
+ }
+
+
+ // 기존에 선택되었던 행을 다시 선택
+ gridViewSchedule.ClearSelection();
+ foreach (var rowIndex in selectedRows)
+ {
+ gridViewSchedule.SelectRow(rowIndex);
+ }
+
+ // 필요한 경우 스크롤을 선택된 행으로 이동
+ if (selectedRows.Length > 0)
+ {
+ int visibleIndex = gridViewSchedule.GetVisibleIndex(selectedRows[0]);
+ gridViewSchedule.TopRowIndex = visibleIndex;
+ //gridViewSchedule.MakeRowVisible(selectedRows[0]);
+ }
+ }
+ else
+ //추가된 방식 - 모든상품에 추가
+ //timeSpanEdit1
+ {
+ int[] realSelectedRows = gridViewSchedule.GetSelectedRows();
+
+ for (int ii = 0; ii < gridViewSchedule.DataRowCount; ii++)
+ {
+ int[] selectedRows = new int[] { ii };
+
+ var target = (Schedule)gridViewSchedule.GetRow(ii);
+ if (target.scheduleType != "스케쥴") continue;
+ if (target.IsServiceGoods) continue;
+
+ TimeSpan repeatInterval = (TimeSpan)timeSpanRepeat.EditValue;
+ if (repeatInterval > TimeSpan.Zero)
+ {
+ string errMsg = "";
+
+ var baseSchedule = target;
+
+ // 기준 스케쥴의 시작 시간과 끝 시간
+ DateTime baseStart = baseSchedule.StartTimeDateTime.Value;
+ DateTime baseEnd = (DateTime)(baseStart + baseSchedule.DurationSpan);
+
+ // 사용자 지정 시작 시간 (timeEdit1)에서부터 반복 시작
+ DateTime currentTime = (DateTime)(baseStart.Add((TimeSpan)timeSpanEdit1.EditValue));
+
+ // 반복 루프: currentTime이 기준 스케쥴 종료 전까지 반복
+ while (currentTime < baseEnd)
+ {
+ var newSchedule = new Schedule()
+ {
+ scheduleType = "송출",
+ StartTimeDateTime = currentTime,
+ DurationSpan = (TimeSpan)timeSpanEdit5.EditValue,
+ sceneGroupName = cmbSceneGroup.Text,
+ sceneName = cmbSceneSchedule.Text,
+ layerNumber = (short)Convert.ToInt32(cmbScheduleSelectedLayer.Text),
+ doneString = "",
+ 변수정보 = variablesVOs
+ };
+
+ // 금지 시간 검사
+ bool isAllowed = false;
+ foreach (var schedule in schedules.Where(s => s.scheduleType == "스케쥴"))
+ {
+ if (IsWithinPlayableTime(newSchedule, schedule, forbidStart, forbidEnd))
+ {
+ isAllowed = true;
+ break;
+ }
+ }
+
+ if (chk송출금지무시.Checked)
+ {
+ newSchedule.IgnoreForbid = true;
+ isAllowed = true;
+ }
+
+ if (!isAllowed)
+ {
+ errMsg += "스케쥴의 금지 시간에 포함되어 추가할 수 없습니다. " + currentTime + Environment.NewLine;
+ currentTime = currentTime.Add(repeatInterval);
+ continue;
+ }
+ else if (IsOverlapping(newSchedule))
+ {
+ errMsg += $"Layer {newSchedule.layerNumber}에 겹치는 시간이 존재합니다. " + currentTime + Environment.NewLine;
+ currentTime = currentTime.Add(repeatInterval);
+ continue;
+ }
+ else
+ {
+ schedules.Add(newSchedule);
+ newSchedule.RelativeStartTime = newSchedule.GetPreviousScheduleStartTime(schedules);
+ }
+
+ // 다음 반복
+ currentTime = currentTime.Add(repeatInterval);
+ }
+
+ //if (errMsg != "") MessageBox.Show(errMsg, "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ else if (chkUseTapeTime.Checked)
+ {
+ string errMsg = "";
+
+ if (selectedRows.Length != 1)
+ {
+ MessageBox.Show("스케쥴 1개 선택시에만 TapeTime 기능을 사용할 수 있습니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+
+ var selectedSchedule = (Schedule)gridViewSchedule.GetRow(selectedRows[0]);
+
+ if (selectedSchedule.scheduleType != "스케쥴")
+ {
+ MessageBox.Show("TapeTime 기능은 '스케쥴' 유형에서만 사용할 수 있습니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+
+ // TapeTime 기준으로 송출 추가
+ TimeSpan tapeTime = (TimeSpan)selectedSchedule.TapeTime;
+ TimeSpan addedTime = (TimeSpan)timeSpanEdit1.EditValue;
+ DateTime startTime = selectedSchedule.StartTimeDateTime.Value;
+ DateTime endTime = (DateTime)(startTime + selectedSchedule.DurationSpan);
+ DateTime newEndTime = startTime;
+ for (int i = 0; i < 10; i++)
+ {
+ newEndTime += tapeTime;
+
+ if (endTime < newEndTime)
+ {
+ endTime = newEndTime - tapeTime;
+ break;
+ }
+ }
+
+ for (DateTime current = startTime + addedTime; current < endTime; current += tapeTime)
+ {
+ var newSchedule = new Schedule()
+ {
+ scheduleType = "송출",
+ StartTimeDateTime = current,
+ DurationSpan = (TimeSpan)timeSpanEdit5.EditValue,
+ sceneGroupName = cmbSceneGroup.Text,
+ sceneName = cmbSceneSchedule.Text,
+ layerNumber = (short)Convert.ToInt32(cmbScheduleSelectedLayer.Text),
+ doneString = "",
+ 변수정보 = variablesVOs
+ };
+
+ // 금지 시간 검사: 한 번이라도 통과하면 허용
+ bool isAllowed = false;
+ foreach (var schedule in schedules.Where(s => s.scheduleType == "스케쥴"))
+ {
+ if (IsWithinPlayableTime(newSchedule, schedule, forbidStart, forbidEnd))
+ {
+ isAllowed = true;
+ break; // 통과 가능한 구간이 발견되면 더 이상 검사하지 않음
+ }
+ }
+
+ if (chk송출금지무시.Checked)
+ {
+ newSchedule.IgnoreForbid = true;
+ isAllowed = true;
+ }
+
+ if (!isAllowed)
+ {
+ errMsg += "스케쥴의 금지 시간에 포함되어 추가할 수 없습니다. " + current + Environment.NewLine;
+ continue;
+ }
+ else if (IsOverlapping(newSchedule)) // 겹치는지 확인
+ {
+ errMsg += $"Layer {newSchedule.layerNumber}에 겹치는 시간이 존재합니다." + current + Environment.NewLine;
+ continue; // 겹치는 경우 추가하지 않음
+ }
+
+ schedules.Add(newSchedule);
+ newSchedule.RelativeStartTime = newSchedule.GetPreviousScheduleStartTime(schedules);
+ }
+
+ if (errMsg != "")
+ {
+ MessageBox.Show(errMsg, "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ }
+ else
+ {
+ // 기존 로직
+
+ var newSchedule = new Schedule()
+ {
+ scheduleType = "송출",
+ StartTimeDateTime = (DateTime)(target.StartTimeDateTime.Value.Add((TimeSpan)timeSpanEdit1.EditValue)), // + new TimeSpan(0, 0, Convert.ToInt32(timeSpanEdit1.TimeSpan.TotalSeconds)),
+ DurationSpan = (TimeSpan)timeSpanEdit5.EditValue,
+ sceneGroupName = cmbSceneGroup.Text,
+ sceneName = cmbSceneSchedule.Text,
+ layerNumber = (short)Convert.ToInt32(cmbScheduleSelectedLayer.Text),
+ doneString = "",
+ 변수정보 = variablesVOs
+ };
+
+ if (target.StartTimeDateTime < newSchedule.StartTimeDateTime && target.EndTimeDateTime > newSchedule.StartTimeDateTime) ;
+ else continue;
+
+ // 금지 시간 검사: 한 번이라도 통과하면 허용
+ bool isAllowed = false;
+ foreach (var schedule in schedules.Where(s => s.scheduleType == "스케쥴"))
+ {
+ if (IsWithinPlayableTime(newSchedule, schedule, forbidStart, forbidEnd))
+ {
+ isAllowed = true;
+ break; // 통과 가능한 구간이 발견되면 더 이상 검사하지 않음
+ }
+ }
+
+ if (chk송출금지무시.Checked)
+ {
+ newSchedule.IgnoreForbid = true;
+ isAllowed = true;
+ }
+
+ modifyErrorChecker = false;
+ if (!isAllowed)
+ {
+ MessageBox.Show("스케쥴의 금지 시간에 포함되어 추가할 수 없습니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ else if (IsOverlapping(newSchedule)) // 겹치는지 확인
+ {
+ MessageBox.Show($"Layer {newSchedule.layerNumber}에 겹치는 시간이 존재합니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ else
+ {
+ modifyErrorChecker = true;
+ schedules.Add(newSchedule);
+ newSchedule.RelativeStartTime = newSchedule.GetPreviousScheduleStartTime(schedules);
+ }
+ }
+ }
+
+
+
+
+
+ // 기존에 선택되었던 행을 다시 선택
+ gridViewSchedule.ClearSelection();
+ foreach (var rowIndex in realSelectedRows)
+ {
+ gridViewSchedule.SelectRow(rowIndex);
+ }
+
+ // 필요한 경우 스크롤을 선택된 행으로 이동
+ if (realSelectedRows.Length > 0)
+ {
+ int visibleIndex = gridViewSchedule.GetVisibleIndex(realSelectedRows[0]);
+ gridViewSchedule.TopRowIndex = visibleIndex;
+ //gridViewSchedule.MakeRowVisible(selectedRows[0]);
+ }
+ }
+ }
+
+ private bool IsWithinPlayableTime(Schedule newSchedule, Schedule existingSchedule, TimeSpan forbidStart, TimeSpan forbidEnd)
+ {
+ DateTime current = existingSchedule.StartTimeDateTime.Value;
+ DateTime scheduleEndTime = existingSchedule.EndTimeDateTime.Value;
+
+ // 새 스케줄의 시작 및 종료 시간
+ DateTime newStartTime = newSchedule.StartTimeDateTime.Value;
+ DateTime newEndTime = newStartTime + newSchedule.DurationSpan.Value;
+
+ while (current < scheduleEndTime)
+ {
+ // 송출 가능 시작 시간과 종료 시간 계산
+ DateTime playableStartTime = current + forbidStart;
+ DateTime playableEndTime = current + existingSchedule.TapeTime.Value - forbidEnd;
+
+ // 송출 가능 시간에 포함되는지 확인
+ if (newStartTime >= playableStartTime && newEndTime <= playableEndTime)
+ {
+ return true; // 송출 가능 시간에 포함
+ }
+
+ current += existingSchedule.TapeTime.Value; // 다음 테이프 시간으로 이동
+ }
+
+ return false; // 모든 구간에서 송출 가능 시간을 만족하지 않음
+ }
+
+ bool modifyErrorChecker = false;
+ private void simpleButton7_Click(object sender, EventArgs e)
+ {
+ if (!isModifying)
+ {
+ MessageBox.Show("수정 모드에서만 사용할 수 있습니다.");
+ return;
+ }
+
+
+ //송출수정
+ modifyErrorChecker = true;
+ schedules.Remove(nowModifyingSchedule);
+ simpleButton3_Click(null, null);
+
+ if (modifyErrorChecker == false)
+ {
+ schedules.Add(nowModifyingSchedule);
+ }
+ modifyErrorChecker = false;
+
+ }
+
+ private void simpleButton9_Click(object sender, EventArgs e)
+ {
+ if (!isModifying)
+ {
+ MessageBox.Show("수정 모드에서만 사용할 수 있습니다.");
+ return;
+ }
+
+
+ if (sender == simpleButton9)
+ {
+ //송출 삭제
+ schedules.Remove(nowModifyingSchedule);
+ schedules[0].doneString = "";
+ }
+ else
+ {
+ //그룹 송출 삭제
+ int[] selectedRows = gridViewSchedule.GetSelectedRows();
+
+ if (selectedRows.Length != 1)
+ {
+ MessageBox.Show("스케쥴 1개 선택시에만 그룹송출 삭제 기능을 사용할 수 있습니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+
+ //가장 가까운 시간의 스케쥴의 시간 대비 시간을 변경해야함
+ int index = -1;
+ for (int i = 0; i < schedules.Count; i++)
+ if (schedules[i].scheduleType.Equals("스케쥴"))
+ if ((DateTime)timeEdit1.EditValue - schedules[i].StartTimeDateTime > new TimeSpan(0)) index = i;
+
+ if (index != -1)
+ {
+ var selectedSchedule = schedules[index];
+
+ // TapeTime 기준으로 송출 추가
+ TimeSpan tapeTime = (TimeSpan)selectedSchedule.TapeTime;
+ TimeSpan addedTime = (TimeSpan)nowModifyingSchedule.RelativeStartTime;
+ DateTime startTime = selectedSchedule.StartTimeDateTime.Value;
+ DateTime endTime = (DateTime)(startTime + selectedSchedule.DurationSpan);
+
+ string groupName = nowModifyingSchedule.sceneGroupName;
+ string sceneName = nowModifyingSchedule.sceneName;
+
+ for (DateTime current = startTime + addedTime; current < endTime; current += tapeTime)
+ {
+ int targetIndex = -1;
+ for (int i = 0; i < schedules.Count; i++)
+ {
+ var target = schedules[i];
+ if (target.scheduleType.Equals("송출") && target.StartTimeDateTime.Equals(current) && target.sceneGroupName.Equals(groupName) && target.sceneName.Equals(sceneName))
+ {
+ targetIndex = i;
+ }
+ }
+
+ if (targetIndex != -1) schedules.RemoveAt(targetIndex);
+ }
+ }
+
+ schedules[0].doneString = "";
+ }
+
+
+ }
+
+ private void simpleButton8_Click(object sender, EventArgs e)
+ {
+ if (!isModifying)
+ {
+ MessageBox.Show("수정 모드에서만 사용할 수 있습니다.");
+ return;
+ }
+
+ if (listBoxControl5.SelectedIndex > -1)
+ {
+ VariablesVO selected = nowScheduleVariables[listBoxControl5.SelectedIndex];
+ selected.Text = textEdit1.Text;
+ }
+ }
+
+
+ private void timeEdit1_EditValueChanged(object sender, EventArgs e)
+ {
+ //가장 가까운 시간의 스케쥴의 시간 대비 시간을 변경해야함
+ int index = -1;
+ for (int i = 0; i < schedules.Count; i++)
+ if (schedules[i].scheduleType.Equals("스케쥴"))
+ if ((DateTime)timeEdit1.EditValue - schedules[i].StartTimeDateTime >= new TimeSpan(0)) index = i;
+
+ if (index != -1)
+ {
+ timeSpanEdit1.EditValueChanged -= timeSpanEdit1_EditValueChanged;
+ timeSpanEdit1.EditValue = (DateTime)timeEdit1.EditValue - schedules[index].StartTimeDateTime;
+ timeSpanEdit1.EditValueChanged += timeSpanEdit1_EditValueChanged;
+ textEdit3.Text = schedules[index].sceneName;
+ }
+
+ }
+ private void timeSpanEdit1_EditValueChanged(object sender, EventArgs e)
+ {
+ try
+ {
+ Schedule s = null;
+ foreach (var v in schedules) if (v.sceneName.Equals(textEdit3.Text)) s = v;
+
+ if (s != null)
+ {
+ DateTime t = s.StartTimeDateTime.Value.Add((TimeSpan)timeSpanEdit1.EditValue);
+ timeEdit1.EditValue = t;
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"Error: {ex.Message}");
+ }
+ }
+
+ private void timeSpanEdit1_KeyPress(object sender, KeyPressEventArgs e)
+ {
+
+ }
+
+ private void timeEdit1_KeyPress(object sender, KeyPressEventArgs e)
+ {
+ }
+
+
+
+ #endregion
+
+ #region TitleBar
+
+ private void tileBar_SelectedItemChanged(object sender, TileItemEventArgs e)
+ {
+ navigationFrame.SelectedPageIndex = tileBarGroupTables.Items.IndexOf(e.Item);
+ }
+
+ #endregion
+
+ #region Clock
+ int lockTimerCounter = 0;
+ private void timerClock_Tick(object sender, EventArgs e)
+ {
+ if (lockTimerCounter == 0)
+ {
+ //임시 - timeGap 부분을 직접 적용하는 방식으로 변경 적용해볼 예정
+ //25.11.20 요청사항
+ // 실제 시간에서 다음과 같은 사항이 있는 경우 적용할 수 있도록 한다.
+ txtTimeGap.Text = "0";
+ if (CheckInTime("02:38", "06:29")) setTimeGap(0);
+ else if (CheckInTime("06:30", "09:31")) setTimeGap(-0.5);
+ else if (CheckInTime("09:32", "15:33")) setTimeGap(-1);
+ else if (CheckInTime("15:34", "18:34")) setTimeGap(-1.5);
+ else if (CheckInTime("18:35", "23:59")) setTimeGap(-2);
+ else if (CheckInTime("00:00", "00:36")) setTimeGap(-2);
+ else if (CheckInTime("00:37", "02:37")) setTimeGap(-2.5);
+
+
+ lockTimerCounter++;
+ UpdateTime();
+ DoneTime();
+ if (isAutoDisplaying) SceneCheck();
+ lockTimerCounter--;
+
+ UpdateTimeEditIfNecessary();
+ }
+ }
+ private void UpdateTimeEditIfNecessary()
+ {
+ if (schedules == null || schedules.Count == 0)
+ return;
+
+
+
+ // 종료 시간 중 가장 늦은 시간을 찾기
+ DateTime latestEndTime = (DateTime)schedules.Max(s => s.StartTimeDateTime + s.DurationSpan);
+
+ // 현재 시간 가져오기 (서버 시간과의 차이를 고려해야 할 경우 timeGap을 사용)
+ DateTime currentTime = DateTime.Now.Add(timeGap);
+
+ // timeEdit2 컨트롤에서 설정된 날짜 가져오기
+ DateTime timeEdit2Date = ((DateTime)timeEdit2.EditValue).Date;
+
+ // 현재 시간과 가장 늦은 종료 시간이 같은 날짜에 있고,
+ // timeEdit2의 날짜+1와 가장 늦은 종료 시간의 날짜가 같으며,
+ // 현재 시간이 가장 늦은 종료 시간 이후 1초 이상 지났는지 확인
+ // 현재 시간이 가장 늦은 종료 시간 이후 10초 미만 지났는지 확인
+ if (latestEndTime.Date == currentTime.Date &&
+ latestEndTime.Date == timeEdit2Date.AddDays(1) &&
+ currentTime - latestEndTime >= TimeSpan.FromSeconds(1))
+ {
+ if (currentTime - latestEndTime <= TimeSpan.FromSeconds(10))
+ {
+ // timeEdit2의 값을 다음 날짜로 설정
+ timeEdit2.EditValue = timeEdit2Date.AddDays(1);
+ }
+ }
+ }
+
+ List displaySchedule = new List();
+ int countOfSceneCheck = 0;
+
+ void SceneCheck()
+ {
+ DateTime today = DateTime.Now.Add(timeGap);
+ DateTime yesterday = today.AddDays(-1);
+ DateTime tomorrow = today.AddDays(1);
+
+ countOfSceneCheck--;
+
+ if (countOfSceneCheck < 0)
+ {
+ // 1. displaySchedule을 초기화
+ displaySchedule.Clear();
+
+ // 2. 오늘과 내일의 스케줄 파일을 로드하여 "송출" 스케줄만 displaySchedule에 추가
+ LoadSchedulesForDisplay(today);
+ LoadSchedulesForDisplay(yesterday);
+ LoadSchedulesForDisplay(tomorrow);
+
+ countOfSceneCheck = 10;
+ }
+
+
+ // 3. 현재 시각을 기준으로 송출 처리
+ ProcessDisplaySchedule();
+ }
+
+ ///
+ /// 특정 날짜의 스케줄 파일을 로드하여 "송출" 타입만 displaySchedule에 추가
+ ///
+ void LoadSchedulesForDisplay(DateTime date)
+ {
+ string scheduleFilePath = Path.Combine("Data", "scheduleData", $"{isCable}_{date:yyyyMMdd}.json");
+
+ if (File.Exists(scheduleFilePath))
+ {
+ try
+ {
+ string jsonContent = File.ReadAllText(scheduleFilePath);
+ List dailySchedules = JsonConvert.DeserializeObject>(jsonContent);
+
+ if (dailySchedules != null)
+ {
+ foreach (var s in dailySchedules)
+ {
+ if (s.scheduleType.Equals("송출"))
+ {
+ displaySchedule.Add(s);
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ //Log($"스케줄 파일 로드 오류: {scheduleFilePath} - {ex.Message}", LogType.Error);
+ }
+ }
+ else
+ {
+ //Log($"스케줄 파일 없음: {scheduleFilePath}", LogType.Error);
+ }
+ }
+
+ static bool CheckInTime(string start, string end)
+ {
+ // 현재 시각의 시, 분만 사용 (초는 버림)
+ DateTime now = DateTime.Now;
+ var nowHm = new TimeSpan(now.Hour, now.Minute, 0);
+
+ // "HH:mm" → TimeSpan
+ var startTs = TimeSpan.ParseExact(start, "hh\\:mm", CultureInfo.InvariantCulture);
+ var endTs = TimeSpan.ParseExact(end, "hh\\:mm", CultureInfo.InvariantCulture);
+
+ // 단순 구간: 같은 날 안에서만 (예: 02:38 ~ 06:29)
+ return nowHm >= startTs && nowHm <= endTs;
+ }
+
+ ///
+ /// displaySchedule 리스트를 기반으로 현재 시각 기준으로 송출을 수행
+ ///
+ void ProcessDisplaySchedule()
+ {
+ DateTime now = DateTime.Now.Add(timeGap); // 현재 시각 (시간 차이 적용)
+
+ /* 임시 - timeGap 부분을 직접 적용하는 방식으로 변경 적용해볼 예정
+ //25.11.20 요청사항
+ // 실제 시간에서 다음과 같은 사항이 있는 경우 적용할 수 있도록 한다.
+ if (CheckInTime("02:38", "06:29")) now.AddSeconds(0);
+ else if (CheckInTime("06:30", "09:31")) now.AddSeconds(-0.5);
+ else if (CheckInTime("09:32", "15:33")) now.AddSeconds(-1);
+ else if (CheckInTime("15:34", "18:34")) now.AddSeconds(-1.5);
+ else if (CheckInTime("18:35", "23:59")) now.AddSeconds(-2);
+ else if (CheckInTime("00:00", "00:36")) now.AddSeconds(-2);
+ else if (CheckInTime("00:37", "02:37")) now.AddSeconds(-2.5);
+ */
+
+ foreach (var s in displaySchedule)
+ {
+ {
+ TimeSpan tempTime = (TimeSpan)(s.StartTimeDateTime - now);
+
+ if (tempTime + s.DurationSpan > new TimeSpan(0))
+ {
+ if (tempTime + s.DurationSpan < new TimeSpan(6000000))
+ {
+ TM.Out(s.layerNumber);
+ Log(s.layerNumber + " 송출 아웃", LogType.Display);
+ }
+ }
+ if (tempTime > new TimeSpan(0))
+ {
+ if (tempTime < new TimeSpan(6000000) && !s.HasDisplayed)
+ {
+ try
+ {
+ int groupIndex = Convert.ToInt32(s.sceneGroupName.Replace("Group", "")) - 1;
+ SceneVO scene = SceneLists[groupIndex][GetWholeSceneIndex(groupIndex, s.sceneName)];
+ TM.Display(scene, s.layerNumber, s.변수정보);
+ Log(s.sceneName + " 송출", LogType.Display);
+ s.HasDisplayed = true;
+ }
+ catch (Exception ex)
+ {
+
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ void SceneCheck()
+ {
+ //이전코드
+ if (schedules != null)
+ {
+ foreach (var s in schedules)
+ {
+ if (s.scheduleType.Equals("송출"))
+ {
+ TimeSpan tempTime = (TimeSpan)(s.StartTimeDateTime - DateTime.Now.Add(timeGap));
+ //Console.WriteLine(tempTime.ToString());
+
+ if (tempTime + s.DurationSpan > new TimeSpan(0))
+ {
+ if (tempTime + s.DurationSpan < new TimeSpan(6000000))
+ {
+ TM.Out(s.layerNumber);
+ Log(s.layerNumber + " 송출 아웃", LogType.Display);
+ }
+ }
+ if (tempTime > new TimeSpan(0))
+ {
+ if (tempTime < new TimeSpan(6000000))
+ {
+ SceneVO scene = WholeScenes[GetWholeSceneIndex(s.sceneName)];
+ TM.Display(scene, s.layerNumber, s.변수정보);
+ Log(s.sceneName + " 송출", LogType.Display);
+ }
+ }
+
+ }
+ }
+ }
+ }
+ */
+
+ int GetStringLength(string str)
+ {
+ int counter = 0;
+ int pos = 0;
+ while (pos < str.Length)
+ {
+ if (str[pos] != ':')
+ counter++;
+ pos++;
+ }
+ return counter;
+ }
+ void UpdateTime()
+ {
+ string time = DateTime.Now.Add(timeGap).ToString("HH:mm:ss");
+ if (GetStringLength(time) > digitalGauge1.DigitCount)
+ digitalGauge1.DigitCount = GetStringLength(time);
+ digitalGauge1.Text = time;
+ }
+
+
+ #endregion
+
+ private void toggleSwitchChannel_Toggled(object sender, EventArgs e)
+ {
+ isCable = toggleSwitchChannel.IsOn;
+ SaveDafaultOptions();
+ LoadSchedule();
+ }
+
+ private void toggleSwitch1_Toggled(object sender, EventArgs e)
+ {
+ isAutoDisplaying = toggleSwitch1.IsOn;
+ SaveDafaultOptions();
+ //SaveSetting();
+ }
+
+ private void toggleSwitchDone송출보지않기_Toggled(object sender, EventArgs e)
+ {
+ isDoneDisplayInvisible = toggleSwitchDone송출보지않기.IsOn;
+ SaveDafaultOptions();
+ ApplyRowFilter();
+ }
+
+ private void timeEdit2_EditValueChanged(object sender, EventArgs e)
+ {
+ LoadSchedule();
+ }
+
+
+ #region Scene List
+
+ //BindingList WholeScenes = new BindingList();
+ List> SceneLists = new List>();
+ BindingList nowSelectedSceneVariables = new BindingList();
+
+ private void btnSceneLoad_Click(object sender, EventArgs e)
+ {
+ if (!isModifying)
+ {
+ MessageBox.Show("수정 모드에서만 사용할 수 있습니다.");
+ return;
+ }
+
+ int saveFrame = 60;
+ try
+ {
+ saveFrame = Convert.ToInt32(txtThumbnailFrame.Text);
+ }
+ catch (Exception ex) { }
+
+ if (openFileDialog1.ShowDialog() == DialogResult.OK)
+ {
+ // 선택한 모든 파일 경로 가져오기
+ string[] paths = openFileDialog1.FileNames;
+ int fileIndex = 1; // 파일 번호를 위한 인덱스
+
+ // 각 파일에 대해 처리
+ foreach (string path in paths)
+ {
+ string fileName = Path.GetFileNameWithoutExtension(path);
+
+ // 고유한 previewName 생성: 시간 + GUID + 인덱스
+ string previewName = $"{DateTime.Now.Add(timeGap):yyyyMMddHHmmss}_{fileIndex}";
+ string savePath = Path.Combine(Environment.CurrentDirectory, @"Thumbnail\", previewName + ".png");
+
+ // 파일 로드 처리
+ TM.FileLoad(path, previewName, savePath, saveFrame);
+
+ // UI 업데이트 (여러 파일일 경우 마지막 파일 기준)
+ txtSceneListName.Text = fileName;
+ txtSceneListPath.Text = path;
+ txtSceneListTime.Text = previewName;
+
+ // 썸네일 처리
+ waitThumbnailPath.Add(savePath);
+
+ // 현재 선택된 씬 변수 초기화
+ nowSelectedSceneVariables.Clear();
+
+ btnSceneAdd_Click(null, null);
+
+ // 처리 완료 로그 출력
+ Log($"Loaded: {fileName} (Saved Thumbnail: {savePath})", LogType.Normal);
+ fileIndex++;
+ }
+
+ Log($"{paths.Length} file(s) loaded successfully.", LogType.Normal);
+
+ /*
+ string path = openFileDialog1.FileName;
+ string fileName = Path.GetFileNameWithoutExtension(path);
+ string previewName = DateTime.Now.Add(timeGap).ToString("yyyyMMddhhmmss");
+ string savePath = Environment.CurrentDirectory + @"\Thumbnail\" + previewName + ".png";
+ TM.FileLoad(path, previewName, savePath);
+
+ txtSceneListName.Text = fileName;
+ txtSceneListPath.Text = path;
+ txtSceneListTime.Text = previewName;
+
+ isWaitThumbnail = true;
+ waitThumbnailPath = savePath;
+
+ nowSelectedSceneVariables.Clear();
+ */
+ }
+
+ }
+
+ private void listBoxControl1_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ try
+ {
+ if (!listBoxControl1.Focused) return;
+
+ if (listBoxControl1.SelectedItems.Count > 0)
+ {
+ SceneVO selected = SceneLists[cmbSceneListGroup.SelectedIndex][listBoxControl1.SelectedIndex];
+ txtSceneListName.Text = selected.SceneName;
+ txtSceneListPath.Text = selected.ScenePath;
+ txtSceneListTime.Text = selected.SceneDate;
+ //cmbSceneListCG.SelectedItem = selected.SceneCG;
+ cmbSceneListLayer.Text = selected.SceneLayer;
+
+ if (waitThumbnailPath.Count == 0)
+ {
+ string imgPath = Environment.CurrentDirectory + @"\Thumbnail\" + selected.SceneDate + ".png";
+
+ try
+ {
+ if (File.Exists(imgPath))
+ {
+ pictureBoxThumbnailSceneList.Image = Image.FromFile(imgPath);
+ }
+ else
+ {
+ Log($"썸네일 이미지가 존재하지 않습니다: {imgPath}", LogType.Error);
+ pictureBoxThumbnailSceneList.Image = Properties.Resources.no_image_icon_23494;
+ }
+ }
+ catch (Exception ex)
+ {
+ Log($"썸네일 이미지 로드 중 오류 발생: {ex.Message}", LogType.Error);
+ pictureBoxThumbnailSceneList.Image = Properties.Resources.no_image_icon_23494;
+ }
+ }
+
+ nowSelectedSceneVariables.Clear();
+ foreach (var v in selected.Variables) nowSelectedSceneVariables.Add(v);
+ }
+ else
+ {
+ pictureBoxThumbnailSceneList.Image = null;
+
+ txtSceneListName.Text = "";
+ txtSceneListPath.Text = "";
+ txtSceneListTime.Text = "";
+
+ }
+ }
+ catch (Exception ex)
+ {
+ Log(ex.Message, LogType.Error);
+ }
+ }
+
+ private int GetWholeSceneIndex(int groupIndex, string SceneName)
+ {
+ int index = -1;
+ for (int i = 0; i < SceneLists[groupIndex].Count; i++)
+ if (SceneLists[groupIndex][i].SceneName == SceneName) index = i;
+
+ return index;
+ }
+
+ private bool checkExistScene(string SceneName, bool forRemove = false)
+ {
+ if (forRemove)
+ {
+ int index = -1;
+ for (int i = 0; i < SceneLists[cmbSceneListGroup.SelectedIndex].Count; i++)
+ if (SceneLists[cmbSceneListGroup.SelectedIndex][i].SceneName == SceneName) index = i;
+
+ if (index > -1) SceneLists[cmbSceneListGroup.SelectedIndex].RemoveAt(index);
+
+ return true;
+ }
+
+ foreach (var v in SceneLists[cmbSceneListGroup.SelectedIndex]) if (v.SceneName == SceneName) return true;
+ return false;
+ }
+
+
+
+ private void btnSceneAdd_Click(object sender, EventArgs e)
+ {
+ if (!isModifying)
+ {
+ MessageBox.Show("수정 모드에서만 사용할 수 있습니다.");
+ return;
+ }
+
+ SceneVO sceneVO = new SceneVO();
+ sceneVO.SceneName = txtSceneListName.Text;
+ sceneVO.SceneDate = txtSceneListTime.Text;
+ sceneVO.ScenePath = txtSceneListPath.Text;
+ //sceneVO.SceneCG = cmbSceneListCG.Text;
+ sceneVO.SceneLayer = cmbSceneListLayer.Text;
+
+ BindingList variables = new BindingList();
+ foreach (var v in (BindingList)listBoxControl2.DataSource) variables.Add(v);
+
+ sceneVO.Variables = variables;
+
+
+ if (checkExistScene(sceneVO.SceneName))
+ {
+ if (MessageBox.Show("같은 이름의 Scene 이 존재합니다. 변경하여 저장합니까?", "YesOrNo", MessageBoxButtons.YesNo) == DialogResult.Yes)
+ {
+ checkExistScene(sceneVO.SceneName, true);
+ Log($"'{sceneVO.SceneName}' 씬이 기존 데이터를 덮어씌웁니다.", LogType.Normal);
+ }
+ else
+ {
+ Log($"씬 추가 취소: '{sceneVO.SceneName}' 씬이 이미 존재합니다.", LogType.Normal);
+ return;
+ }
+ }
+
+ //WholeScenes.Add(sceneVO);
+ SceneLists[cmbSceneListGroup.SelectedIndex].Add(sceneVO);
+
+ Log($"씬 추가: 이름='{sceneVO.SceneName}', 경로='{sceneVO.ScenePath}', 레이어='{sceneVO.SceneLayer}'", LogType.Normal);
+
+ listBoxControl1.SelectedIndex = SceneLists[cmbSceneListGroup.SelectedIndex].Count - 1;
+
+ SceneListSave(cmbSceneListGroup.SelectedIndex);
+
+ sceneVO.GroupName = GroupAliasName;
+ cmbSceneSchedule.Properties.Items.Add(sceneVO.SceneName);
+ }
+
+ private void btnSceneRemove_Click(object sender, EventArgs e)
+ {
+ if (!isModifying)
+ {
+ MessageBox.Show("수정 모드에서만 사용할 수 있습니다.");
+ return;
+ }
+
+ if (sender == btnSceneRemoveAll)
+ {
+ if (MessageBox.Show("현재 그룹의 모든 씬을 삭제합니까?", "그룹 전체 삭제", MessageBoxButtons.OKCancel) == DialogResult.OK)
+ {
+ SceneLists[cmbSceneListGroup.SelectedIndex].Clear();
+
+ Log($"씬 삭제: 그룹", LogType.Normal);
+ SceneListSave(cmbSceneListGroup.SelectedIndex);
+ }
+ }
+ else
+ {
+ if (listBoxControl1.SelectedItems.Count > 0)
+ {
+
+ var removedScene = SceneLists[cmbSceneListGroup.SelectedIndex][listBoxControl1.SelectedIndex];
+
+
+ //스케쥴을 확인하고 없는 경우에만 지워야 한다. 임시
+ bool canRemove = true;
+ foreach (var s in displaySchedule)
+ {
+ if (s.scheduleType == "송출")
+ {
+ if (s.sceneGroupName == cmbSceneListGroup.Text)
+ {
+ if (s.sceneName == removedScene.SceneName)
+ {
+ if (s.StartTimeDateTime > DateTime.Now)
+ {
+ canRemove = false;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ if (canRemove == false)
+ {
+ MessageBox.Show("송출 예정인 Scene 이므로 확인 후 삭제 해 주세요.");
+ return;
+ }
+
+
+ SceneLists[cmbSceneListGroup.SelectedIndex].RemoveAt(listBoxControl1.SelectedIndex);
+ /*
+ var removedScene = WholeScenes[listBoxControl1.SelectedIndex];
+ WholeScenes.RemoveAt(listBoxControl1.SelectedIndex);
+ */
+
+ Log($"씬 삭제: 이름='{removedScene.SceneName}', 경로='{removedScene.ScenePath}'", LogType.Normal);
+ SceneListSave(cmbSceneListGroup.SelectedIndex);
+ }
+ else
+ {
+ Log("씬 삭제 실패: 선택된 씬이 없습니다.", LogType.Error);
+ }
+ }
+ }
+
+ private void listBoxControl2_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (listBoxControl2.SelectedItems.Count > 0)
+ {
+ VariablesVO selected = nowSelectedSceneVariables[listBoxControl2.SelectedIndex];
+ txtVariableListTag.Text = selected.Tag;
+ txtVariableListText.Text = selected.Text;
+ }
+ else
+ {
+ txtVariableListTag.Text = "";
+ txtVariableListText.Text = "";
+ }
+ }
+
+ private void btnVariableListAdd_Click(object sender, EventArgs e)
+ {
+ if (!isModifying)
+ {
+ MessageBox.Show("수정 모드에서만 사용할 수 있습니다.");
+ return;
+ }
+
+ VariablesVO variablesVO = new VariablesVO();
+ variablesVO.Tag = txtVariableListTag.Text;
+ variablesVO.Text = txtVariableListText.Text;
+ nowSelectedSceneVariables.Add(variablesVO);
+
+ if (checkExistScene(txtSceneListName.Text)) SceneLists[cmbSceneListGroup.SelectedIndex][listBoxControl1.SelectedIndex].Variables.Add(variablesVO);
+
+ SceneListSave(cmbSceneListGroup.SelectedIndex);
+ }
+
+ private void btnVariableListDel_Click(object sender, EventArgs e)
+ {
+ if (!isModifying)
+ {
+ MessageBox.Show("수정 모드에서만 사용할 수 있습니다.");
+ return;
+ }
+
+ if (listBoxControl2.SelectedItems.Count > 0)
+ {
+ nowSelectedSceneVariables.RemoveAt(listBoxControl2.SelectedIndex);
+ }
+ SceneListSave(cmbSceneListGroup.SelectedIndex);
+ }
+
+ string getSceneListPath(int index)
+ {
+ return sceneListPath.Replace("sceneList.json", "sceneList" + index + ".json");
+ }
+ string sceneListPath = Environment.CurrentDirectory + @"\Data\sceneList.json";
+ private void SceneListSave(int index)
+ {
+ string json = JsonConvert.SerializeObject(SceneLists[index]);
+ File.WriteAllText(getSceneListPath(index), json.ToString(), Encoding.UTF8);
+ DateTime serverTime = DateTime.Now.Add(timeGap);
+ // 서버 시간을 기준으로 파일 수정 시간 설정
+ File.SetLastWriteTimeUtc(getSceneListPath(index), serverTime);
+ }
+
+ private void sceneListLoad()
+ {
+ if (InvokeRequired)
+ {
+ Invoke(new Action(sceneListLoad));
+ return;
+ }
+
+ //if (File.Exists(sceneListPath))
+ {
+ //WholeScenes.Clear();
+
+ for (int i = 0; i < 15; i++)
+ {
+ if (File.Exists(getSceneListPath(i)))
+ {
+ SceneLists[i].Clear();
+ using (StreamReader file = new StreamReader(getSceneListPath(i)))
+ {
+ BindingList buf = JsonConvert.DeserializeObject>(file.ReadToEnd());
+
+ foreach (var v in buf)
+ {
+ SceneLists[i].Add(v);
+ }
+ }
+ }
+ }
+ /*
+ using (StreamReader file = new StreamReader(sceneListPath))
+ {
+ BindingList buf = JsonConvert.DeserializeObject>(file.ReadToEnd());
+
+ foreach (var v in buf)
+ {
+ WholeScenes.Add(v);
+ }
+ }
+ */
+ }
+
+ //자신의 값이 변경될떄를 대비
+ GroupAliasName = "";
+ if (SceneLists[cmbSceneListGroup.SelectedIndex].Count > 0)
+ {
+ GroupAliasName = SceneLists[cmbSceneListGroup.SelectedIndex][0].GroupName;
+ }
+ txtGroupAliasName.Text = GroupAliasName;
+ }
+
+
+
+
+
+ #endregion
+
+
+
+ #region Log
+
+ public LogWriter LW = LogWriter.getInstance();
+ bool isFirstLog = true;
+ int countLines = 0;
+
+ public void Log(string logMessage, LogType logType)
+ {
+ Color txtcolor;
+
+ if (logType == LogType.Normal) txtcolor = LW.colorLogNormal;
+ else if (logType == LogType.Display) txtcolor = LW.colorLogDisplay;
+ else txtcolor = LW.colorLogError; //LogType.Error
+
+
+ if ((logType == LogType.Normal && LW.isShowLogNormal) ||
+ (logType == LogType.Display && LW.isShowLogDisplay) ||
+ (logType == LogType.Error && LW.isShowLogError))
+ {
+ if (isFirstLog)
+ {
+ isFirstLog = false;
+ return;
+ }
+
+ if (isFormClosing) return;
+
+ Invoke((Action)(() =>
+ {
+ countLines++;
+ if (countLines > 50)
+ {
+ txtLog.Clear();
+ countLines = 0;
+ }
+
+
+ txtLog.SelectionStart = this.txtLog.TextLength;
+ txtLog.SelectionColor = Color.Green;
+ txtLog.SelectionStart = this.txtLog.TextLength;
+ txtLog.SelectionColor = txtcolor;
+ txtLog.AppendText(Environment.NewLine + DateTime.Now.ToString("[HH:mm:ss.fff] ") + logMessage);
+ txtLog.SelectionStart = this.txtLog.TextLength;
+ txtLog.SelectionColor = SystemColors.WindowText;
+
+ txtLog.SelectionStart = txtLog.Text.Length;
+ txtLog.ScrollToCaret();
+
+ }
+ ));
+ }
+
+ if ((logType == LogType.Normal && LW.isSaveLogNormal) ||
+ (logType == LogType.Display && LW.isSaveLogDisplay) ||
+ (logType == LogType.Error && LW.isSaveLogError))
+ {
+ LW.LogWrite(logMessage, logType);
+ }
+
+ }
+
+ #endregion
+
+
+ private void textEdit1_EditValueChanged(object sender, EventArgs e)
+ {
+ simpleButton8_Click(null, null);
+ }
+
+
+ List forCopySchedules = new List();
+
+ private void gridControlSchedule_KeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.KeyCode == Keys.Delete)
+ {
+ if (!isModifying)
+ {
+ MessageBox.Show("수정 모드에서만 사용할 수 있습니다.");
+ return;
+ }
+
+ int[] rows = gridViewSchedule.GetSelectedRows();
+ if (rows.Count() > 0)
+ {
+ if (MessageBox.Show("선택한 송출을 삭제합니까?" + Environment.NewLine + "참고) 스케쥴은 삭제할 수 없습니다.", "스케쥴 삭제", MessageBoxButtons.OKCancel) == DialogResult.OK)
+ {
+ var deleteSchedules = new List();
+ var rowcount = 0;
+
+ for (int i = 0; i < rows.Count(); i++)
+ {
+ var s = (Schedule)gridViewSchedule.GetRow(rows[i]);
+ var v = s.scheduleType;
+ if (v != "스케쥴")
+ {
+ deleteSchedules.Add(s);
+ rowcount++;
+ }
+ }
+
+ for (int i = 0; i < rowcount; i++)
+ schedules.Remove(deleteSchedules[i]);
+ schedules[0].doneString = "";
+ }
+ }
+ }
+ else if (e.Control)
+ {
+ if (!isModifying)
+ {
+ MessageBox.Show("수정 모드에서만 사용할 수 있습니다.");
+ return;
+ }
+
+ if (e.KeyCode == Keys.C)
+ {
+ int[] rows = gridViewSchedule.GetSelectedRows();
+ if (rows.Count() > 0)
+ {
+ forCopySchedules = new List();
+
+ for (int i = 0; i < rows.Count(); i++)
+ {
+ var s = (Schedule)gridViewSchedule.GetRow(rows[i]);
+ var v = s.scheduleType;
+ if (v != "스케쥴")
+ {
+ // 가장 가까운 시간의 스케줄과의 시간 차이 계산
+ TimeSpan timeSpan = new TimeSpan(0);
+ for (int j = 0; j < schedules.Count; j++)
+ if (schedules[j].scheduleType.Equals("스케쥴"))
+ if (s.StartTimeDateTime - schedules[j].StartTimeDateTime > new TimeSpan(0))
+ timeSpan = (DateTime)s.StartTimeDateTime - (DateTime)schedules[j].StartTimeDateTime;
+ s.스케쥴기준송출시간 = timeSpan;
+ forCopySchedules.Add(s);
+ }
+ }
+ }
+ }
+ else if (e.KeyCode == Keys.V)
+ {
+ int[] rows = gridViewSchedule.GetSelectedRows();
+ if (rows.Count() == 1)
+ {
+ var s = (Schedule)gridViewSchedule.GetRow(rows[0]);
+ var v = s.scheduleType;
+ if (v == "스케쥴")
+ {
+ string errMsg = "";
+
+ // 기준 스케쥴의 시작과 종료 시각 계산
+ DateTime baseStart = s.StartTimeDateTime.Value;
+ DateTime baseEnd = baseStart.Add((TimeSpan)s.DurationSpan);
+
+ foreach (var target in forCopySchedules)
+ {
+ // 새 송출 스케쥴의 시작과 종료 시각 계산
+ DateTime newStart = baseStart.Add(target.스케쥴기준송출시간);
+ DateTime newEnd = newStart.Add((TimeSpan)target.DurationSpan);
+
+
+ var newSchedule = new Schedule()
+ {
+ scheduleType = "송출",
+ StartTimeDateTime = s.StartTimeDateTime.Value.Add(target.스케쥴기준송출시간),
+ DurationSpan = target.DurationSpan,
+ sceneGroupName = cmbSceneGroup.Text,
+ sceneName = target.sceneName,
+ //cgNumber = target.cgNumber,
+ layerNumber = target.layerNumber,
+ doneString = "",
+ 변수정보 = target.변수정보
+ };
+
+ // 새 스케쥴의 종료 시각이 기준 스케쥴의 범위 내에 있는지 확인
+ if (newEnd > baseEnd || newEnd < baseStart)
+ {
+ errMsg += "기준 스케쥴 범위를 벗어납니다. " + newSchedule.StartTimeDateTime + Environment.NewLine;
+ continue;
+ }
+
+ // 겹치는지 확인
+ if (IsOverlapping(newSchedule))
+ {
+ errMsg += $"Layer {newSchedule.layerNumber}에 겹치는 시간이 존재합니다. " + newSchedule.StartTimeDateTime + Environment.NewLine;
+ continue; // 겹치는 경우 추가하지 않음
+ }
+
+ schedules.Add(newSchedule);
+ newSchedule.RelativeStartTime = newSchedule.GetPreviousScheduleStartTime(schedules);
+ }
+
+ if (errMsg != "") MessageBox.Show(errMsg, "오류", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ else
+ {
+ MessageBox.Show("스케쥴 1개 선택시에만 붙여넣기가 가능합니다.");
+ }
+ }
+ else
+ {
+ MessageBox.Show("스케쥴 1개 선택시에만 붙여넣기가 가능합니다.");
+ }
+ }
+ }
+ }
+
+ private void simpleButton2_Click(object sender, EventArgs e)
+ {
+
+ try
+ {
+ TM.Out((short)Convert.ToInt32(cmbScheduleSelectedLayer.Text));
+ }
+ catch (Exception ex)
+ {
+ Log(ex.Message, LogType.Error);
+ }
+
+ }
+
+ private void btnSettingTornado_Click(object sender, EventArgs e)
+ {
+ DBIP = txtDBIP.Text;
+ forbidStart = (TimeSpan)timeSpanEditForbidStart.EditValue;
+ forbidEnd = (TimeSpan)timeSpanEditForbidEnd.EditValue;
+ SaveDafaultOptions();
+ }
+
+
+ private void cmbSceneGroup_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (cmbSceneGroup.SelectedItem != null)
+ {
+ string selectedGroup = cmbSceneGroup.SelectedItem.ToString();
+ Log($"그룹 변경: '{selectedGroup}' 그룹이 선택되었습니다.", LogType.Normal);
+ UpdateSceneScheduleComboBox();
+ }
+ }
+
+ // cmbSceneSchedule 업데이트 로직
+ private void UpdateSceneScheduleComboBox()
+ {
+ cmbSceneSchedule.Properties.Items.Clear();
+ cmbSceneSchedule.Text = "";
+ pictureBox1.Image = Properties.Resources.no_image_icon_23494;
+
+ if (cmbSceneGroup.SelectedItem != null)
+ {
+ var targetScenes = SceneLists[cmbSceneGroup.SelectedIndex];
+ cmbSceneSchedule.Properties.Items.Clear();
+ foreach (var scene in targetScenes)
+ {
+ cmbSceneSchedule.Properties.Items.Add(scene.SceneName);
+ }
+
+ if (cmbSceneSchedule.Properties.Items.Count > 0)
+ {
+ cmbSceneSchedule.SelectedIndex = 0; // 첫 번째 항목 기본 선택
+
+ lblGroupAliasName.Text = targetScenes[0].GroupName;
+
+ Log($"cmbSceneSchedule 업데이트: '{cmbSceneSchedule.Properties.Items[0]}'이 기본 선택되었습니다.", LogType.Normal);
+ }
+
+ }
+ }
+
+ #region User Session
+ public class UserItem
+ {
+ public int Id { get; set; }
+ public string Username { get; set; }
+
+ public override string ToString()
+ {
+ return Username; // ListBoxControl에 표시할 값
+ }
+ }
+
+ private async void InitlistBoxControlUsers()
+ {
+ try
+ {
+ groupBoxAdminOnly.Visible = true;
+
+ using (HttpClient client = new HttpClient())
+ {
+ string apiUrl = "http://" + DBInfo.getInstance().DBIP + ":60031/api/auth/users"; // REST 서버의 유저 목록 엔드포인트
+ HttpResponseMessage response = await client.GetAsync(apiUrl);
+
+ if (response.IsSuccessStatusCode)
+ {
+ string responseBody = await response.Content.ReadAsStringAsync();
+ var users = JsonConvert.DeserializeObject>(responseBody);
+
+ listBoxControlUsers.Items.Clear(); // 기존 항목 초기화
+
+ foreach (var user in users)
+ {
+ var userItem = new UserItem
+ {
+ Id = (int)user.Id,
+ Username = (string)user.Username
+ };
+
+ listBoxControlUsers.Items.Add(userItem);
+ }
+
+ Log("사용자 목록을 성공적으로 불러왔습니다.", LogType.Normal);
+ }
+ else
+ {
+ string errorMessage = "사용자 목록을 불러오는 데 실패했습니다.";
+ Log(errorMessage, LogType.Error);
+ MessageBox.Show(errorMessage, "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ string errorMessage = $"사용자 목록을 불러오는 중 오류 발생: {ex.Message}";
+ Log(errorMessage, LogType.Error);
+ MessageBox.Show(errorMessage, "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private async void btnUserAdd_Click(object sender, EventArgs e)
+ {
+ string username = txtUserID.Text;
+ string password = txtPassWord1.Text;
+ string passwordConfirm = txtPassWord2.Text;
+
+ if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
+ {
+ string errorMessage = "유저 이름과 비밀번호는 반드시 입력해야 합니다.";
+ Log(errorMessage, LogType.Error);
+ MessageBox.Show(errorMessage, "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+
+ if (password != passwordConfirm)
+ {
+ string errorMessage = "비밀번호와 비밀번호 확인이 일치하지 않습니다.";
+ Log(errorMessage, LogType.Error);
+ MessageBox.Show(errorMessage, "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+
+ try
+ {
+ using (HttpClient client = new HttpClient())
+ {
+ string apiUrl = "http://" + DBInfo.getInstance().DBIP + ":60031/api/auth/register"; // 유저 추가 엔드포인트
+ var payload = new
+ {
+ Username = username,
+ Password = password
+ };
+
+ string jsonPayload = JsonConvert.SerializeObject(payload);
+ StringContent content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");
+
+ HttpResponseMessage response = await client.PostAsync(apiUrl, content);
+
+ if (response.IsSuccessStatusCode)
+ {
+ string responseBody = await response.Content.ReadAsStringAsync();
+ var createdUser = JsonConvert.DeserializeObject(responseBody);
+
+ var userItem = new UserItem
+ {
+ Id = createdUser.Id,
+ Username = createdUser.Username
+ };
+
+ listBoxControlUsers.Items.Add(userItem);
+
+ Log($"사용자 '{username}' 추가 성공.", LogType.Normal);
+ }
+ else
+ {
+ string errorResponse = await response.Content.ReadAsStringAsync();
+ string errorMessage = $"사용자 추가 실패: {errorResponse}";
+ Log(errorMessage, LogType.Error);
+ MessageBox.Show(errorMessage, "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ string errorMessage = $"사용자 추가 중 오류 발생: {ex.Message}";
+ Log(errorMessage, LogType.Error);
+ MessageBox.Show(errorMessage, "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private async void btnUserRemove_Click(object sender, EventArgs e)
+ {
+ if (listBoxControlUsers.SelectedItem == null)
+ {
+ MessageBox.Show("삭제할 사용자를 선택해주세요.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ Log("사용자 삭제 시도 실패: 선택된 사용자가 없습니다.", LogType.Error);
+ return;
+ }
+
+ // 선택된 UserItem에서 id 값 추출
+ var selectedUser = (UserItem)listBoxControlUsers.SelectedItem;
+ int userId = selectedUser.Id;
+
+ // 삭제 확인 메시지 박스 표시
+ var confirmResult = MessageBox.Show(
+ $"정말로 사용자 '{selectedUser.Username}'을(를) 삭제하시겠습니까?",
+ "사용자 삭제 확인",
+ MessageBoxButtons.YesNo,
+ MessageBoxIcon.Warning
+ );
+
+ if (confirmResult != DialogResult.Yes)
+ {
+ Log($"사용자 삭제 취소됨: '{selectedUser.Username}'", LogType.Normal);
+ return;
+ }
+
+ try
+ {
+ Log($"사용자 삭제 시도: ID={userId}, Username='{selectedUser.Username}'", LogType.Normal);
+
+ using (HttpClient client = new HttpClient())
+ {
+ string apiUrl = "http://" + DBInfo.getInstance().DBIP + $":60031/api/auth/users/{userId}"; // id를 기반으로 삭제
+ HttpResponseMessage response = await client.DeleteAsync(apiUrl);
+
+ if (response.IsSuccessStatusCode)
+ {
+ listBoxControlUsers.Items.Remove(selectedUser); // UI에서 제거
+ MessageBox.Show($"사용자 '{selectedUser.Username}'이(가) 성공적으로 삭제되었습니다.", "삭제 완료", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ Log($"사용자 삭제 성공: ID={userId}, Username='{selectedUser.Username}'", LogType.Normal);
+ }
+ else
+ {
+ string errorResponse = await response.Content.ReadAsStringAsync();
+ MessageBox.Show($"사용자 삭제 실패: {errorResponse}", "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ Log($"사용자 삭제 실패: ID={userId}, Username='{selectedUser.Username}', 오류 메시지: {errorResponse}", LogType.Error);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"사용자 삭제 중 오류 발생: {ex.Message}", "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ Log($"사용자 삭제 중 예외 발생: ID={userId}, Username='{selectedUser.Username}', 예외 메시지: {ex.Message}", LogType.Error);
+ }
+ }
+
+ #endregion
+
+
+ #region Server Sync
+
+ private async void btnSyncData_Click(object sender, EventArgs e)
+ {
+ return;
+ // 백그라운드 스레드에서 실행 (UI 멈춤 방지)
+ _ = Task.Run(async () =>
+ {
+ try
+ {
+ string date = timeEdit2.DateTime.ToString("yyyyMMdd");
+ bool isCable = this.isCable;
+
+ /* 사용하지 않음
+ // 1) Groups.json
+ if (0 != await syncManager.SyncFileAsync(localFilePath: Path.Combine("Data", "Groups.json"), fileNameOnServer: "Groups.json"))
+ {
+ LoadSceneGroups();
+ }
+ */
+
+ // 2) scenelist.json
+ bool isSceneListChanged = false;
+ for (int i = 0; i < 15; i++)
+ {
+ string localFile = Path.Combine("Data", "sceneList" + i + ".json");
+ string serverFile = "sceneList" + i + ".json";
+ // 각 파일에 대해 동기화 시도 (SyncFileAsync 메서드가 이를 지원하는지 확인)
+ try
+ {
+ if (0 != await syncManager.SyncFileAsync(localFile, serverFile))
+ {
+ isSceneListChanged = true;
+ }
+ }
+ catch (Exception ex)
+ {
+ Log($"sceneList {i} 동기화 실패: {ex.Message}", LogType.Error);
+ }
+ }
+ if (isSceneListChanged) sceneListLoad();
+ /*
+ if (0 != await syncManager.SyncFileAsync(localFilePath: Path.Combine("Data", "scenelist.json"), fileNameOnServer: "scenelist.json"))
+ {
+ sceneListLoad();
+ }
+ */
+
+ /*
+ // 3) scheduleData/{isCable}_{date}.json
+ // 예: False_20250130.json
+ string localScheduleFile = Path.Combine("Data", "scheduleData", $"{isCable}_{date}.json");
+ string serverScheduleFile = $"scheduleData/{isCable}_{date}.json";
+ // ↑ 서버 측 API에서 fileName=...로 받을 문자열
+ if (0 != await syncManager.SyncFileAsync(localScheduleFile, serverScheduleFile))
+ {
+ LoadSchedule();
+ }
+ */
+ // timeEdit2의 날짜를 기준으로 어제, 오늘, 내일을 계산
+ DateTime today = ((DateTime)timeEdit2.EditValue).Date;
+ DateTime yesterday = today.AddDays(-1);
+ DateTime tomorrow = today.AddDays(1);
+ var dateList = new List() { yesterday, today, tomorrow };
+
+ // 2가지 isCable 값에 대해 각각 동기화 진행 (총 6회)
+ foreach (bool cable in new bool[] { true, false })
+ {
+ foreach (DateTime d in dateList)
+ {
+ // 동기화할 파일 경로 생성
+ string localScheduleFile = Path.Combine("Data", "scheduleData", $"{cable}_{d:yyyyMMdd}.json");
+ string serverScheduleFile = $"scheduleData/{cable}_{d:yyyyMMdd}.json";
+
+ // SyncFileAsync가 0이 아닌 값을 반환하면 (즉, 파일에 변화가 있을 경우)
+ if (0 != await syncManager.SyncFileAsync(localScheduleFile, serverScheduleFile))
+ {
+ // 만약 현재 동기화된 파일이 UI에 표시되어야 하는 경우(오늘 날짜이면서 현재의 isCable와 일치)
+ if (d == today && cable == this.isCable)
+ {
+ // UI 갱신은 UI 스레드에서 호출
+ this.Invoke(new Action(() => { LoadSchedule(); }));
+ }
+ }
+ }
+ }
+
+ // 4) 썸네일 동기화
+ await syncManager.SyncThumbnailsAsync();
+
+ // 동기화 완료 후 필요한 후처리 (예: 메시지, 로그)
+ this.Invoke((Action)(() =>
+ {
+ Log($"동기화 완료", LogType.Normal);
+ //MessageBox.Show("동기화가 완료되었습니다.", "Sync", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }));
+ }
+ catch (Exception ex)
+ {
+ // 에러 로그
+ Log($"동기화 중 예외 발생: {ex.Message}", LogType.Error);
+ Console.WriteLine($"동기화 중 예외 발생: {ex.Message}");
+ }
+ });
+ }
+
+ #endregion
+
+ private async void toggleSwitch수정모드_Toggled(object sender, EventArgs e)
+ {
+ _ = Task.Run(async () =>
+ {
+ bool isServerModifying = await syncManager.GetIsModifyingAsync();
+
+ if (toggleSwitch수정모드.IsOn)
+ {
+ if (isServerModifying)
+ {
+ MessageBox.Show("작업중인 사용자가 있습니다. 잠시 후 다시 시도해 주세요.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ isModifying = false;
+ toggleSwitch수정모드.IsOn = false;
+ }
+ else
+ {
+ isModifying = toggleSwitch수정모드.IsOn;
+ await syncManager.SetIsModifyingAsync(true);
+ }
+ }
+ else
+ {
+ isModifying = toggleSwitch수정모드.IsOn;
+ await syncManager.SetIsModifyingAsync(false);
+ }
+ });
+
+ }
+
+ private void toggleSwitchAutoSync_Toggled(object sender, EventArgs e)
+ {
+ isAutoSync = toggleSwitchAutoSync.IsOn;
+ SaveDafaultOptions();
+ }
+
+ private void timerSync_Tick(object sender, EventArgs e)
+ {
+ return;
+ if (isAutoSync) btnSyncData_Click(null, null);
+ }
+
+
+ string GroupAliasName = "";
+
+ private void cmbSceneListGroup_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ listBoxControl1.DataSource = SceneLists[cmbSceneListGroup.SelectedIndex];
+
+ listBoxControl1.Focus();
+ listBoxControl1_SelectedIndexChanged(null, null);
+
+ GroupAliasName = "";
+ if (SceneLists[cmbSceneListGroup.SelectedIndex].Count > 0)
+ {
+ GroupAliasName = SceneLists[cmbSceneListGroup.SelectedIndex][0].GroupName;
+ }
+
+ txtGroupAliasName.Text = GroupAliasName;
+ }
+
+ private void chkUseTapeTime_CheckedChanged(object sender, EventArgs e)
+ {
+ var target = (CheckEdit)sender;
+ target.ForeColor = target.Checked ? Color.Red : Color.FromArgb(180, 180, 180);
+ }
+
+ private void timeSpanRepeat_EditValueChanged(object sender, EventArgs e)
+ {
+ TimeSpan repeatInterval = (TimeSpan)timeSpanRepeat.EditValue;
+ timeSpanRepeat.ForeColor = (repeatInterval > TimeSpan.Zero) ? Color.Red : Color.FromArgb(240, 240, 240);
+ }
+
+ private void pictureEdit1_Click(object sender, EventArgs e)
+ {
+ UpdateSceneScheduleComboBox();
+ }
+
+
+ private void simpleButton4_Click(object sender, EventArgs e)
+ {
+ GroupAliasName = txtGroupAliasName.Text;
+
+ foreach (var v in SceneLists[cmbSceneListGroup.SelectedIndex])
+ {
+ v.GroupName = GroupAliasName;
+ }
+
+ SceneListSave(cmbSceneListGroup.SelectedIndex);
+ }
+
+ private void btnThumbnailSceneListRefresh_Click(object sender, EventArgs e)
+ {
+ waitThumbnailPath.Clear();
+
+ listBoxControl1.Focus();
+ listBoxControl1_SelectedIndexChanged(null, null);
+ }
+
+ private void comboBoxEdit2_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ int index = comboBoxEdit2.SelectedIndex;
+ lblNEXT송출배경색.BackColor = labelControlsBack[index].BackColor;
+ lblNEXT송출글자색.BackColor = labelControlsFore[index].BackColor;
+ }
+
+
+ private async void btnDBSave_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ // 업로드할 파일 경로 (예: 애플리케이션 폴더 내 "yourfile.db")
+ DateTime today = ((DateTime)timeEdit2.EditValue).Date;
+ string filePath = Path.Combine("Data", "scheduleData", $"{isCable}_{today:yyyyMMdd}.json");
+ if (!File.Exists(filePath))
+ {
+ MessageBox.Show("업로드할 DB 파일이 존재하지 않습니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+
+ // 예시로 폴더 번호를 1번으로 지정 (필요에 따라 변경)
+ int folderId = Convert.ToInt32(comboBoxEdit3.Text);
+
+ // SyncManager의 단순 파일 업로드 메서드 호출
+ if (1 != await syncManager.UploadSimpleFileAsync(filePath, folderId))
+ {
+ MessageBox.Show("스케줄 저장 완료", "저장", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+ else
+ {
+ MessageBox.Show("스케줄 저장 실패..", "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show("파일 업로드 실패: " + ex.Message, "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ // DB 불러오기(다운로드) 버튼 클릭 이벤트 핸들러
+ private async void btnDBLoad_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ DateTime today = ((DateTime)timeEdit2.EditValue).Date;
+ string fileName = $"{isCable}_{today:yyyyMMdd}.json";
+ string destinationPath = Path.Combine("Data", "scheduleData", fileName);
+ int folderId = Convert.ToInt32(comboBoxEdit3.Text);
+
+
+ if (1 != await syncManager.DownloadSimpleFileAsync(fileName, folderId, destinationPath))
+ {
+ LoadSchedule();
+ MessageBox.Show("스케줄 로드 완료", "로드", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+ else
+ {
+ MessageBox.Show("스케줄 로드 실패: DB에 저장된 파일이 없습니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show("파일 다운로드 실패: " + ex.Message, "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private async void btnDBCrossLoad_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ DateTime today = ((DateTime)timeEdit2.EditValue).Date;
+ string fileName = $"{!isCable}_{today:yyyyMMdd}.json";
+ string destinationPath = Path.Combine("Data", "scheduleData", fileName);
+ int folderId = Convert.ToInt32(comboBoxEdit3.Text);
+
+
+ if (1 != await syncManager.DownloadSimpleFileAsync(fileName, folderId, destinationPath))
+ {
+ LoadSchedule();
+ btnScheduleCopy_Click(null, null);
+ MessageBox.Show("크로스 스케줄 로드 완료", "로드", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+ else
+ {
+ MessageBox.Show("스케줄 로드 실패: DB에 저장된 파일이 없습니다.", "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+
+
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show("파일 다운로드 실패: " + ex.Message, "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void simpleButton5_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ int groupIndex = Convert.ToInt32(cmbSceneGroup.Text.Replace("Group", "")) - 1;
+ SceneVO scene = SceneLists[groupIndex][GetWholeSceneIndex(groupIndex, cmbSceneSchedule.Text)];
+ TM.Display(scene, Convert.ToInt16(cmbScheduleSelectedLayer.Text), scene.Variables);
+ Log(cmbSceneSchedule.Text + " 송출", LogType.Display);
+ }
+ catch (Exception ex)
+ {
+ Log(ex.Message, LogType.Error);
+ }
+ }
+
+ private void btnTimeGap1n_Click(object sender, EventArgs e)
+ {
+
+ if (sender == btnTimeGap1n) setTimeGap(0.1);
+ else if (sender == btnTimeGap1s) setTimeGap(1);
+ else if (sender == btnTimeGap1m) setTimeGap(60);
+ else if (sender == btnTimeGap1nm) setTimeGap(-0.1);
+ else if (sender == btnTimeGap1sm) setTimeGap(-1);
+ else if (sender == btnTimeGap1mm) setTimeGap(-60);
+ }
+
+ private void setTimeGap(double addTime)
+ {
+ try
+ {
+ double nowTimeGap = Convert.ToDouble(txtTimeGap.Text);
+ nowTimeGap += addTime;
+ txtTimeGap.Text = nowTimeGap.ToString();
+
+ timeGap = TimeSpan.FromSeconds(nowTimeGap);
+
+ RegistryKey key = Registry.CurrentUser.CreateSubKey(subKey);
+ key.SetValue("timeGap", txtTimeGap.Text.ToString());
+ key.Close();
+ }
+ catch(Exception ex)
+ {
+ MessageBox.Show(ex.Message);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/SSG_Automation_Solution/Design/Forms/MainForm.resx b/SSG_Automation_Solution/Design/Forms/MainForm.resx
new file mode 100644
index 0000000..eac1ea6
--- /dev/null
+++ b/SSG_Automation_Solution/Design/Forms/MainForm.resx
@@ -0,0 +1,1055 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAKBgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5C
+ bGFja3tmaWxsOiM3MjcyNzI7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+ MjM7fQoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9Cgkuc3Qwe29w
+ YWNpdHk6MC41O30KCS5zdDF7b3BhY2l0eTowLjc1O30KCS5zdDJ7b3BhY2l0eTowLjI1O30KPC9zdHls
+ ZT4NCiAgPGcgaWQ9IlRpbWVTY2FsZXMiPg0KICAgIDxnIGNsYXNzPSJzdDAiPg0KICAgICAgPHBhdGgg
+ ZD0iTTIwLDE0LjhWMTRoLTR2NGgwQzE3LDE2LjYsMTguNCwxNS41LDIwLDE0Ljh6IiBjbGFzcz0iQmxh
+ Y2siIC8+DQogICAgICA8cmVjdCB4PSIxNiIgeT0iOCIgd2lkdGg9IjQiIGhlaWdodD0iNCIgcng9IjAi
+ IHJ5PSIwIiBjbGFzcz0iQmxhY2siIC8+DQogICAgICA8cmVjdCB4PSIxMCIgeT0iOCIgd2lkdGg9IjQi
+ IGhlaWdodD0iNCIgcng9IjAiIHJ5PSIwIiBjbGFzcz0iQmxhY2siIC8+DQogICAgICA8cmVjdCB4PSIy
+ MiIgeT0iOCIgd2lkdGg9IjQiIGhlaWdodD0iNCIgcng9IjAiIHJ5PSIwIiBjbGFzcz0iQmxhY2siIC8+
+ DQogICAgICA8cmVjdCB4PSI0IiB5PSI4IiB3aWR0aD0iNCIgaGVpZ2h0PSI0IiByeD0iMCIgcnk9IjAi
+ IGNsYXNzPSJCbGFjayIgLz4NCiAgICAgIDxyZWN0IHg9IjEwIiB5PSIyMCIgd2lkdGg9IjQiIGhlaWdo
+ dD0iNCIgcng9IjAiIHJ5PSIwIiBjbGFzcz0iQmxhY2siIC8+DQogICAgICA8cmVjdCB4PSI0IiB5PSIy
+ MCIgd2lkdGg9IjQiIGhlaWdodD0iNCIgcng9IjAiIHJ5PSIwIiBjbGFzcz0iQmxhY2siIC8+DQogICAg
+ ICA8cmVjdCB4PSI0IiB5PSIxNCIgd2lkdGg9IjQiIGhlaWdodD0iNCIgcng9IjAiIHJ5PSIwIiBjbGFz
+ cz0iQmxhY2siIC8+DQogICAgPC9nPg0KICAgIDxwYXRoIGQ9Ik0xNCwxOGgtNHYtNGg0VjE4eiBNMzIs
+ MjRjMCw0LjQtMy42LDgtOCw4cy04LTMuNi04LThzMy42LTgsOC04UzMyLDE5LjYsMzIsMjR6IE0zMCwy
+ NGMwLTMuMy0yLjctNi02LTYgICBzLTYsMi43LTYsNnMyLjcsNiw2LDZTMzAsMjcuMywzMCwyNHoiIGNs
+ YXNzPSJSZWQiIC8+DQogICAgPHBhdGggZD0iTTE0LjgsMjhIMWMtMC42LDAtMS0wLjQtMS0xVjNjMC0w
+ LjYsMC40LTEsMS0xaDI4YzAuNiwwLDEsMC40LDEsMXYxM2MtMC42LTAuNS0xLjMtMC45LTItMS4yVjZI
+ MnYyMGgxMi4yICAgQzE0LjMsMjYuNywxNC42LDI3LjQsMTQuOCwyOHogTTI4LDI0djJoLTRoLTJ2LTJ2
+ LTRoMnY0SDI4eiIgY2xhc3M9IkJsYWNrIiAvPg0KICA8L2c+DQo8L3N2Zz4L
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADRAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IlBpY3R1cmUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJ
+ LkdyZWVue2ZpbGw6IzAzOUMyMzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9Cgkuc3Qwe29wYWNpdHk6
+ MC41O30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTI5LDRIM0MyLjUsNCwyLDQuNSwyLDV2MjJjMCwwLjUs
+ MC41LDEsMSwxaDI2YzAuNSwwLDEtMC41LDEtMVY1QzMwLDQuNSwyOS41LDQsMjksNHogTTI4LDI2SDRW
+ NmgyNFYyNnoiIGNsYXNzPSJCbGFjayIgLz4NCiAgPGNpcmNsZSBjeD0iMjEiIGN5PSIxMSIgcj0iMyIg
+ Y2xhc3M9IlllbGxvdyIgLz4NCiAgPHBvbHlnb24gcG9pbnRzPSIyMCwyNCAxMCwxNCA2LDE4IDYsMjQg
+ IiBjbGFzcz0iR3JlZW4iIC8+DQogIDxnIGNsYXNzPSJzdDAiPg0KICAgIDxwb2x5Z29uIHBvaW50cz0i
+ MjIsMjQgMTgsMjAgMjAsMTggMjYsMjQgICIgY2xhc3M9IkdyZWVuIiAvPg0KICA8L2c+DQo8L3N2Zz4L
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADzBQAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5C
+ bGFja3tmaWxsOiM3MjcyNzI7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+ MjM7fQoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9Cgkuc3Qwe29w
+ YWNpdHk6MC41O30KCS5zdDF7b3BhY2l0eTowLjc1O30KCS5zdDJ7b3BhY2l0eTowLjI1O30KPC9zdHls
+ ZT4NCiAgPGcgaWQ9IlZpZXdTZXR0aW5nc18xXyI+DQogICAgPHBhdGggZD0iTTMyLDlWN2wtMi41LTAu
+ NkMyOS40LDYsMjkuMiw1LjYsMjksNS4ybDEuNS0yLjFsLTEuNi0xLjZMMjYuOCwzYy0wLjQtMC4yLTAu
+ OC0wLjQtMS4yLTAuNUwyNSwwaC0yICAgbC0wLjYsMi41QzIyLDIuNiwyMS42LDIuOCwyMS4yLDNsLTIt
+ MS41bC0xLjcsMS43bDEuNSwyYy0wLjIsMC40LTAuNCwwLjgtMC41LDEuMkwxNiw3djJsMi41LDAuNmMw
+ LjEsMC40LDAuMywwLjgsMC41LDEuMiAgIGwtMS41LDIuMWwxLjYsMS42bDIuMS0xLjVjMC40LDAuMiww
+ LjgsMC40LDEuMiwwLjVMMjMsMTZoMmwwLjYtMi41YzAuNC0wLjEsMC44LTAuMywxLjItMC41bDIuMSwx
+ LjVsMS42LTEuNkwyOSwxMC44ICAgYzAuMi0wLjQsMC40LTAuOCwwLjUtMS4yTDMyLDl6IE0yNCwxMGMt
+ MS4xLDAtMi0wLjktMi0yYzAtMS4xLDAuOS0yLDItMnMyLDAuOSwyLDJDMjYsOS4xLDI1LjEsMTAsMjQs
+ MTB6IE0xOCwyMSAgIGMwLTAuMywwLTAuNi0wLjEtMC44bDIuMS0xLjhsLTAuOC0xLjlsLTIuNywwLjJj
+ LTAuMy0wLjQtMC43LTAuOC0xLjItMS4ybDAuMi0yLjdMMTMuNiwxMmwtMS44LDIuMUMxMS42LDE0LDEx
+ LjMsMTQsMTEsMTQgICBzLTAuNiwwLTAuOCwwLjFMOC40LDEybC0xLjksMC44bDAuMiwyLjdjLTAuNCww
+ LjMtMC44LDAuNy0xLjIsMS4ybC0yLjctMC4yTDIsMTguNGwyLjEsMS44QzQsMjAuNCw0LDIwLjcsNCwy
+ MXMwLDAuNiwwLjEsMC44ICAgTDIsMjMuNmwwLjgsMS45bDIuNy0wLjJjMC4zLDAuNCwwLjcsMC44LDEu
+ MiwxLjJsLTAuMiwyLjdMOC40LDMwbDEuOC0yLjFjMC4zLDAsMC41LDAuMSwwLjgsMC4xczAuNiwwLDAu
+ OC0wLjFsMS44LDIuMWwxLjktMC44ICAgbC0wLjItMi43YzAuNC0wLjMsMC44LTAuNywxLjItMS4ybDIu
+ NywwLjJsMC44LTEuOWwtMi4xLTEuOEMxOCwyMS42LDE4LDIxLjMsMTgsMjF6IE0xMSwyNGMtMS43LDAt
+ My0xLjMtMy0zczEuMy0zLDMtM3MzLDEuMywzLDMgICBTMTIuNywyNCwxMSwyNHoiIGNsYXNzPSJCbGFj
+ ayIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAPBwAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbHVle2ZpbGw6IzExNzdENzt9Cgku
+ WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuR3JlZW57ZmlsbDojMDM5
+ QzIzO30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9Cgkuc3Qwe29w
+ YWNpdHk6MC41O30KCS5zdDF7b3BhY2l0eTowLjc1O30KCS5zdDJ7ZGlzcGxheTpub25lO30KCS5zdDN7
+ ZGlzcGxheTppbmxpbmU7ZmlsbDojRkZCMTE1O30KCS5zdDR7ZGlzcGxheTppbmxpbmU7fQoJLnN0NXtk
+ aXNwbGF5OmlubGluZTtvcGFjaXR5OjAuNzU7fQoJLnN0NntkaXNwbGF5OmlubGluZTtvcGFjaXR5OjAu
+ NTt9Cgkuc3Q3e2Rpc3BsYXk6aW5saW5lO2ZpbGw6IzAzOUMyMzt9Cgkuc3Q4e2Rpc3BsYXk6aW5saW5l
+ O2ZpbGw6I0QxMUMxQzt9Cgkuc3Q5e2Rpc3BsYXk6aW5saW5lO2ZpbGw6IzExNzdENzt9Cgkuc3QxMHtk
+ aXNwbGF5OmlubGluZTtmaWxsOiNGRkZGRkY7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRGVwYXJ0bWVudCI+
+ DQogICAgPGcgY2xhc3M9InN0MSI+DQogICAgICA8cGF0aCBkPSJNMTYuMyw5LjdDMTYuMiw5LjMsMTUu
+ OSw5LDE2LDguNmMwLjEtMC4yLDAuMy0wLjIsMC40LTAuMkMxNS41LDUuMywxNiwyLDIwLDJjNC4zLDAs
+ NC42LDIuNSw0LjYsMi41ICAgIHMyLjQtMC4yLDAuOSwzLjljMC4xLTAuMSwwLjMtMC4xLDAuNCwwLjJj
+ MC4xLDAuNC0wLjEsMC43LTAuMiwxLjJjLTAuMiwwLjQsMC4xLDEuNC0wLjcsMS4zdjAuMWMtMC40LDEu
+ OS0xLjcsNC4xLTMuOSw0LjEgICAgYy0yLjIsMC0zLjQtMi4yLTMuOS00LjFjMC0wLjEsMC0wLjIsMC0w
+ LjJDMTYuMywxMS4yLDE2LjUsMTAuMiwxNi4zLDkuN3ogTTI0LDE2Yy0wLjYsMS0xLjYsMi43LTMsMi43
+ UzE4LjYsMTcsMTgsMTYgICAgYy0wLjEsMC4yLTAuMywwLjMtMC40LDAuNGMwLDAsMCwwLDAsMGwwLDAu
+ MWwwLDBjLTAuMSwxLTAuNSwxLjctMC45LDJjLTAuMywwLjgtMC42LDEuNS0xLjEsMi4ybDAsMGMwLjMs
+ MC4zLDAuOSwwLjUsMS42LDAuOCAgICBjMS4xLDAuNCwyLjgsMC45LDMuOCwyLjRoOXYtMi4zQzMwLDE2
+ LjcsMjUuNywxOC4zLDI0LDE2eiIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDwvZz4NCiAgICA8cGF0aCBk
+ PSJNNi4zLDE1LjdDNi4yLDE1LjMsNS45LDE1LDYsMTQuNmMwLjEtMC4yLDAuMy0wLjIsMC40LTAuMkM1
+ LjUsMTEuMyw2LDgsMTAsOGM0LjMsMCw0LjYsMi41LDQuNiwyLjUgICBzMi40LTAuMiwwLjksMy45YzAu
+ MS0wLjEsMC4zLTAuMSwwLjQsMC4yYzAuMSwwLjQtMC4xLDAuNy0wLjIsMS4yYy0wLjIsMC40LDAuMSwx
+ LjQtMC43LDEuM3YwLjFjLTAuNCwxLjktMS43LDQuMS0zLjksNC4xICAgYy0yLjIsMC0zLjQtMi4yLTMu
+ OS00LjFjMC0wLjEsMC0wLjIsMC0wLjJDNi4zLDE3LjIsNi41LDE2LjIsNi4zLDE1Ljd6IE0xNCwyMmMt
+ MC42LDEtMS42LDIuNy0zLDIuN1M4LjYsMjMsOCwyMiAgIGMtMS43LDIuMy02LDAuNy02LDUuN1YzMGgx
+ OHYtMi4zQzIwLDIyLjcsMTUuNywyNC4zLDE0LDIyeiIgY2xhc3M9IkJsYWNrIiAvPg0KICA8L2c+DQo8
+ L3N2Zz4L
+
+
+
+ 595, 17
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABBAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJ
+ LlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5SZWR7ZmlsbDojRDEx
+ QzFDO30KCS5XaGl0ZXtmaWxsOiNGRkZGRkY7fQoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cgkuc3Qwe2Zp
+ bGw6IzcyNzI3Mjt9Cgkuc3Qxe29wYWNpdHk6MC41O30KCS5zdDJ7b3BhY2l0eTowLjc1O30KPC9zdHls
+ ZT4NCiAgPGcgaWQ9IlBhZ2VOZXh0Ij4NCiAgICA8cG9seWdvbiBwb2ludHM9IjgsNCA4LDI4IDI4LDE2
+ ICAiIGNsYXNzPSJCbHVlIiAvPg0KICA8L2c+DQo8L3N2Zz4L
+
+
+
+ 128, 17
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACUAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9Ik9wZW4iIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMy
+ IDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5ZZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5z
+ dDB7b3BhY2l0eTowLjc1O30KPC9zdHlsZT4NCiAgPGcgY2xhc3M9InN0MCI+DQogICAgPHBhdGggZD0i
+ TTIuMiwyNS4ybDUuNS0xMmMwLjMtMC43LDEtMS4yLDEuOC0xLjJIMjZWOWMwLTAuNi0wLjQtMS0xLTFI
+ MTJWNWMwLTAuNi0wLjQtMS0xLTFIM0MyLjQsNCwyLDQuNCwyLDV2MjAgICBjMCwwLjIsMCwwLjMsMC4x
+ LDAuNEMyLjEsMjUuMywyLjIsMjUuMywyLjIsMjUuMnoiIGNsYXNzPSJZZWxsb3ciIC8+DQogIDwvZz4N
+ CiAgPHBhdGggZD0iTTMxLjMsMTRIOS42TDQsMjZoMjEuOGMwLjUsMCwxLjEtMC4zLDEuMy0wLjdMMzIs
+ MTQuN0MzMi4xLDE0LjMsMzEuOCwxNCwzMS4zLDE0eiIgY2xhc3M9IlllbGxvdyIgLz4NCjwvc3ZnPgs=
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACUAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9Ik9wZW4iIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMy
+ IDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5ZZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5z
+ dDB7b3BhY2l0eTowLjc1O30KPC9zdHlsZT4NCiAgPGcgY2xhc3M9InN0MCI+DQogICAgPHBhdGggZD0i
+ TTIuMiwyNS4ybDUuNS0xMmMwLjMtMC43LDEtMS4yLDEuOC0xLjJIMjZWOWMwLTAuNi0wLjQtMS0xLTFI
+ MTJWNWMwLTAuNi0wLjQtMS0xLTFIM0MyLjQsNCwyLDQuNCwyLDV2MjAgICBjMCwwLjIsMCwwLjMsMC4x
+ LDAuNEMyLjEsMjUuMywyLjIsMjUuMywyLjIsMjUuMnoiIGNsYXNzPSJZZWxsb3ciIC8+DQogIDwvZz4N
+ CiAgPHBhdGggZD0iTTMxLjMsMTRIOS42TDQsMjZoMjEuOGMwLjUsMCwxLjEtMC4zLDEuMy0wLjdMMzIs
+ MTQuN0MzMi4xLDE0LjMsMzEuOCwxNCwzMS4zLDE0eiIgY2xhc3M9IlllbGxvdyIgLz4NCjwvc3ZnPgs=
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADCAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MzczNzQ7fQoJ
+ LlllbGxvd3tmaWxsOiNGQ0IwMUI7fQoJLkdyZWVue2ZpbGw6IzEyOUM0OTt9CgkuQmx1ZXtmaWxsOiMz
+ ODdDQjc7fQoJLlJlZHtmaWxsOiNEMDIxMjc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9Cgkuc3Qwe29w
+ YWNpdHk6MC41O30KCS5zdDF7b3BhY2l0eTowLjc1O30KCS5zdDJ7b3BhY2l0eTowLjI1O30KCS5zdDN7
+ ZGlzcGxheTpub25lO2ZpbGw6IzczNzM3NDt9Cjwvc3R5bGU+DQogIDxwYXRoIGQ9Ik0yNyw0aC0zdjEw
+ SDhWNEg1QzQuNCw0LDQsNC40LDQsNXYyMmMwLDAuNiwwLjQsMSwxLDFoMjJjMC42LDAsMS0wLjQsMS0x
+ VjVDMjgsNC40LDI3LjYsNCwyNyw0eiBNMjQsMjRIOHYtNiAgaDE2VjI0eiBNMTAsNHY4aDEwVjRIMTB6
+ IE0xNCwxMGgtMlY2aDJWMTB6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
+
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACsAAAAyCAYAAADFhCKTAAAABGdBTUEAALGPC/xhBQAAC/lJREFUaEPt
+ WQlwFFUabhDIJJkck5np169nwuFGgbgga8plAS1RtnARUMGNurisWByu4EVIgIREA0hC5IjcECAkgUAS
+ LkMiR8IRQBC5gyiy64FrdJWCmcxMvyiS7rf1v+6Z6WnCqbXF1vpVTWWmjzfffP/3H6/Dcf/r6OLgrF3v
+ DLurS0dTR6eTCzeev62QkMCF5U0M6/yvrbiG7HNedu/EJ0c/GdnDeN1th4MFtrlkt4OSGtw8oGe403j+
+ tkLfRM5MdorNZDumZ4qsxcbztxvakh3iT2SrQEkVaurbl2tjvOC2wbCBnIVsFxRSjSip5Onf+oXdbbwm
+ vV+U9dgY68tnx/LFp1+0z1wzKOaZZ7qE3Z3Ice3815QMNHd9/l7zPRzHtQq9++fjjnFDoqzwZnh/M0/e
+ QwrZwlOyiaen5lsKdNfBF7fluIDarUffH977uxRU50oTFVeaeOnzsah2Qu+I++Hk3mExqd9PwGeze0X1
+ 1q3x83GmnE/V3t5BqpCPvMtTsoGnpAxRT4n9E08hf9y3AjX6lgmXvAvxj+45uOHwJHtut/acBW56PD5C
+ /Mc4tEkjTb8dLxx7xBnu+HqCcND9hkhPpNiW/2IqL02NGpz1gukheF+SETUCVCUViJK1iJISgUqreEVa
+ jWSpHMnSBl6W1vOytI6XfcvRpb2vWnPhR8K9Q+8y3XkhBR8Hwq5J4uWvXheyG6eKiicX00+z7WXG771V
+ tJa2onOvDVVD+NYL4b0vruZPkNWomVTwMviXqb1ZtQfZqCkPP6gcUamM/7JnJw5pa7WqGmIZ585wyO43
+ Rdo4A1PP25h65oo0b6j54dCvvQm8nGzqNFZrAOlPh/chlbx8dJ61dOOUqCEF48KHkI32zxmp9ShAjKzT
+ FC9FlKwRKFktMPVJEfIN72Nq71971H2R3RunY+KZialnjki98zG9MJ8/AOcGD+YibsUWbTe+bX7mXGks
+ eIrbkhX7OqlAMiNVpiO2BvlJkU/n2koqXokeOOB37RKTe7XrtjMz5s+fzbZV+5YJsneJcKFjR87kX/yP
+ iab2nln4B+87mPoWCVRajuT+3TkebNNQKxTeCuE2ZAv/Q/G48CHwYdC94Y6aLMsMXzH/gVSEzpAi/qOG
+ BbbqxSPMyUlqNWgRj/82Ev1zGl95NttWoj9eNiIm2bsAU98ygUqFiH6z1LYZjn9Taq96fy0Cv98czpXY
+ tpEKpJx4O+6d5x8J+83vHZy1T3yEuGFQ2F3aJa16Obm4zYMi+50ZaU3/dCy/9Ow4fln9KOuUigHmh7oj
+ LtK/VtGw6OcevYeLC67OtfYtQd9LKxCVigVmn9UTI56sy4mdSo7Gy+NHRHbTXXt9PNqLi5PK+YukGFHf
+ UoE2zsZNpyfwq17qxlmqno591ZWGz/nLkitVpK6JWHFPwYr7Day4s7DiShcvn0tBVUO7chjWe64nF61f
+ /2BW3FRpleZxsNcGXm6qtB0iO7HsO+k8o7/2hgAdqO89YQl9EyMFeF/3l9gUV5rYxAiqL8WTK8i+ZUiB
+ cLKkAj+vVyuEVMbLjbniT/tfsb5qXDtraFQfdj3kACQrVBRoPFsFhdR3UNJfMSca77khDEjg7K4Jwhkd
+ SerOFJu9+VjxLcLUmy80VY60pGcNjbg/+6moLtnDInvMHmUe+tHSuEJSjXy+VYK8+++2ufo1xz1m6sCq
+ ByQulD0ohdDStwmUnGyvnNqClumvvyH8tXtYZ1eaKIUSxbJnFtRJrLgn4YvdYtSudRW0Pbo0bpa3UGie
+ Pcj0gP8gI6uGX63XQBSGpRpMyfF4hdTHf3VTleG5hHCnIezUNVmUG3PUou6ahJX9w2Mzjfe1hD3zrLnf
+ 56BD/s9Tkk0PBMMPRBElOzAltZiSY/Eyqe/wo27muC7aXEjFDQGSkxhR6s4WFehAjTOwDMcPjeT1g81V
+ kZTEtfUWiF/6Px/Is8xkRCH87yFKtmuq7nJQcrw9+FZOTOTMoatcBUdGxs1xTQySdKU7qHuKqLB2+Ram
+ 7iyVrCtN/OnZ+AjReH9LODcPQdEHtCYb+Qtq+AXVp0B0p6iSre/AyPZMCK0gLaJHRy7WNUlsDpJ0UHcm
+ I6v29umYQpnS2eNicmdTJ+M6Riwbo7bejwticthMYQw/EK1zgAWAcHNSEhfRo2ugrreM02Ns01wZfpIi
+ dWeJFMY6V4aowN/GaXAsoCxlEcgQm3ePtM15siMXa1zPj15OLvz0AktBoEyx8OuIwl7vsFMle6qD553M
+ qM73dWubZFxHj1auDPFbPUl3tkgbp7JCrx6byj4HyWrHG6eL1DMTy+fzhI8Opdtz6ybHJO/LiBhY94bl
+ pe9W2KpJGboUkv368APRPQ6FnGwPqtKLhx1HG/Y6Ku9NbAe7i5YxogcX685Sww0kGbFpzKcK+JfZAcjP
+ 0GzAjmnX5WIKJc2bj6l3kUB9BTD3agMPlCloFhD+qhbCD2SPOGRyklmAklPxh8G7PXpcPVLcrIfDe6pK
+ BkhSVqpyNbJgDX+SZWDZPUVTXjejBoaUlbquBuNkSPYbiB5wyOR4PA2QVV8SJKORYwAFQ2JG60kytWD+
+ zMPMm27wMksypiR4WNHCr86o8zD1LREoDClEG1ICXaql8APZ/Q6ZHI2HZgDdK0D24hHnTiO/EBx73fqW
+ pmSAJFNstkjd6VhmZLUkYz8kD8uB8AdnVDX8wSFFJWoMPygKRD90UnIkHpoBJSeC6ma/HPOIkV8ITqTY
+ 8xv9JKGlzhbV11wRlJZZKfMnmdbJPHOw4snHsndhcEYNhl/zqT/7A0RFWdrvVMgBJyWH9GSdjKxU377h
+ mhYAnEi15DACs0Q1rHNF6oGEmYfZNsQ1WVRYQvl9Cj9K26L4FguytJyXpSKkkFKkkHKkkI28og0pCtmG
+ FLJDkMkuUZHqRCrtc1JG9gMnJYdDlV30ZlRgjrgqlg+LGeOZoyaKniRTbRFTUk0qLckCZMECizGVoAIE
+ lZXZ5nITrz538CsLXt3joMRIVvPtvnX2HCOvFpHzRHRPVnr8JBdAGWKqsSEcwtw4FV9mvvUn1mwgK6rX
+ GW0AyWWsAv66us9ByftOKgHZD1WyH1ej+cDjwQc5e3W+ZaCRXwgGJHDR3vma/6BW6kgy1SB5ViIFmkIg
+ ydi4KKrqL9VKFlQC2FQGKoE9OAf4k2uvg0r7nZQcBLLOH9bMsgwDn66aGTea7BVJUhIXY+R3Bdzz0Tk9
+ SVbcYb+0EjHVINPBl55cHBgXA/VVK1tSkUbWOLNuQ8Hpqk6kZL+z6bMqtGBIfzNfkmMdLh1zfkv2i82f
+ laqbyOviSKYljSkJKq5QlQqSFFTVoCutEUB92ZMn6JNMva9I61xs2+KvCFrpYmTBt/jQv2vEcul9xxny
+ geMy822dKJPtuPnxfpH+ByTXRkICFy2tQJevTlJ7oAGeZM8ReMW7AMuBOhuaZKF7rKslGXSwGqzAuQ8L
+ Y8cbOV0TR6ZbFrLCDgR1SoaQhBCDJ6GVgnoVPGwcgxtIuM/YasEK/lYLZOscCqkVZX/9/aTYVm7kcl3A
+ UxSpWPBen6TqySZIIiAE4YZk2mSXSRkvk3XwNIdX6+27dnjOq5Btgszq7Q5VSWaLWkxPl9jhyfqN77v0
+ mP6suS8r7leQhGdd2oM4I0lQD8INrRVUhLCDT+EFlQBUhRcQ1EiSWkFakmp+1vj9N431qTHpLSkZSlIL
+ 8Y2QDCqpSDXC+d3zLBP1z8J+NvZMt8xUldS8F0LSriMpMJJN7/GlnxRaN5FtqL5pu/AF2S58TWqEL5pq
+ hWP1Rba1hZNiXhz5mKnDLYf8eihNM79ENvGyFm5yvtxaQ7bwSlBJQa+kfLIwbjr8P027/Vqkrj2s3Cpe
+ fKJdomcz/xUouXeOZeawfqY7P15pXU+2oktXhFv1ZNOFanvFysnmp4YPNHd9oX94/Ig/mTqOGhiRVJQZ
+ M7Kh0pY1PjncYfyeXxJ37Mi1jCXVyLMiNRraIwf/Mi1Iixp0vhJVkxp8kdRiWU0c3YC9y6GQXY5maafY
+ cHqNPX+Q7iHzfwNtFr9mTl6becWA3Cq5L2cG1RenRP9hXkrswwtTo3oN72/qNDiJPd3+Fb/i/wb/Adi0
+ JmDzUwkcAAAAAElFTkSuQmCC
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABgAwAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9Ik1hbmFnZV9RdWVyaWVzIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6
+ bmV3IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuR3JlZW57ZmlsbDojMDM5
+ QzIzO30KCS5ZZWxsb3d7ZmlsbDojRkZCMTE1O30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTE4LjcsMTZo
+ LTAuMmwtMi4yLTIuOWMyLjItMC43LDMuNy0xLjgsMy43LTMuMXYydjJDMjAsMTQuNywxOS41LDE1LjQs
+ MTguNywxNnogTTEwLDEyYzUuNSwwLDEwLTEuOCwxMC00VjQgIGMwLTIuMi00LjUtNC0xMC00UzAsMS44
+ LDAsNHY0QzAsMTAuMiw0LjUsMTIsMTAsMTJ6IE0xMCwxOGMwLjcsMCwxLjQsMCwyLjEtMC4xbDMuNC00
+ LjZDMTMuOSwxMy44LDEyLDE0LDEwLDE0Yy01LjUsMC0xMC0xLjgtMTAtNCAgdjRDMCwxNi4yLDQuNSwx
+ OCwxMCwxOHogTTEwLjUsMjBjLTAuMiwwLTAuMywwLTAuNSwwYy01LjUsMC0xMC0xLjgtMTAtNHY0YzAs
+ MS45LDMuMiwzLjQsNy42LDMuOUwxMC41LDIweiIgY2xhc3M9IlllbGxvdyIgLz4NCiAgPHBhdGggZD0i
+ TTMyLDE4bC02LDhsLTYtOGg0YzAtNC40LTEuOC04LTQtOGM0LjQsMCw4LDMuNiw4LDhIMzJ6IE0xOCwy
+ NGg0bC02LThsLTYsOGg0YzAsNC40LDMuNiw4LDgsOCAgQzE5LjgsMzIsMTgsMjguNCwxOCwyNHoiIGNs
+ YXNzPSJHcmVlbiIgLz4NCjwvc3ZnPgs=
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAwAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkNvcHkiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMy
+ IDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQo8L3N0
+ eWxlPg0KICA8cGF0aCBkPSJNMjEsMEg5QzguNCwwLDgsMC40LDgsMXY1SDNDMi40LDYsMiw2LjQsMiw3
+ djIyYzAsMC42LDAuNCwxLDEsMWgxOGMwLjYsMCwxLTAuNCwxLTF2LTVoNWMwLjYsMCwxLTAuNCwxLTFW
+ NyAgTDIxLDB6IE0yMCwyOEg0VjhoNGgyaDR2NWMwLDAuNiwwLjQsMSwxLDFoNXY0djR2MlYyOHogTTI2
+ LDEydjEwaC00di05bC03LTdoLTVWMmg0aDZ2NHYxYzAsMC42LDAuNCwxLDEsMWg1VjEyeiIgY2xhc3M9
+ IkJsYWNrIiAvPg0KPC9zdmc+Cw==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAB7HSURBVHhe7d1/fM71/sfxs+u6du2H2c/LNsZ+Nek4
+ 2WTIhF1+Rnw1GyU/8jMVKkSNUoiQSAfHFIc4ZkWdqFuxU+qEms76gZOMLTI/DhNjszHbPt/bmhUvqf36
+ fD7Xtetxv73+MXa9X+/3dbs9X27Xj8/nT38CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAWgwGQ2BgYGRkpNVq7du379ChQ8ePHz9hwoSn
+ n356xvUmTpw4YcKEESNG9O/fv0ePHu3atQsLC3Nzc5OPCACwNQ0bNuzatetDDz20YMGCt99+Oz09/eTJ
+ kyUlJUrN5OXlZWRkpKamvvbaa9OmTbv//vujoqJcXV3l8gAAzYSGhj7wwAOLFi366KOPTp8+LZNbTSUl
+ JYcOHdq8efNzzz3Xu3fvwMBA2RwAoHY1bdp03LhxmzZtOnHihExlXWVnZ2/YsOHRRx9t0aKFwWCQfQMA
+ qsHFxaVXr14rVqw4fPiwzF2bdObMmZSUlJEjRzZu3FhuBgDwh8xmc1xcXHJy8vnz52XE2o+9e/fOmjWr
+ VatWcnsAgBu1bt16yZIlZ86ckWlqz44ePbpw4cLo6Gi5WwCAi4vLsGHD0tPTZXbWLQcOHHj++edDQkLk
+ /gHAAVkslhkzZuTk5MiwrLtKS0tTU1MHDBhgNpvlcQCAI2jYsOGCBQvy8/NlQDqM06dPv/DCC40aNZJH
+ AwB1lZeX15w5cwoKCmQiOqSioqLk5OTWrVvLYwKAusRkMj3xxBN17D3e2pKamtqlSxd5ZABQB3To0GHf
+ vn0y9nC9tLS0nj17yrMDADvl7e29evVqGXW4uZ07d1qtVnmOAGBf7rnnnuPHj8uEQyX861//ioyMlAcK
+ ALbPzc1txYoVMtVQFaWlpStXruSScwDsSbNmzXjFv7bk5+c/9dRTzs7O8pQBwNYMGDAgLy9PxhhqZv/+
+ /Z07d5ZnDQA2wsnJ6bnnnpPRhdoTFxcnDx0AdGc2mzds2CATC7Vq+PDh8twBQF8eHh7bt2+XcYXaxgAA
+ YFssFsvu3btlVkEFDAAANsTHx4cP/GiGAQDAVnh5efF/fy0xAADYBDc3t88//1xGFNTEAACgP4PBsGnT
+ JplPUBkDAID+Xn75ZRlOUB8DAIDOHnzwQZlM0AQDAICeoqKiCgsLZTJBEwwAALrx9PTMysqSsQStMAAA
+ 6OaNN96QmQQNMQAA6CMhIUEGErTFAACgA4vFwv3cdccAAKCDNWvWyDSyVcXFxRkZGdu2bVuzZs3cuXPH
+ jx8/YMCAuLi4rl27Wq3WVq1atWzZsl27dlartWvXrgkJCSNHjpw0adK8efPWrVv38ccfZ2RkXLlyRT6o
+ bWAAANBap06dZBTZkuLi4rS0tJdeemnw4MEtW7Y0m81yA1VkMpkiIiJ69+49ZcqUlJSUQ4cOlZaWylX1
+ wAAAoCmDwbB3714ZRTYgKytrwYIFPXv29PDwkE3Xtvr16/fs2XPOnDk7d+4sKiqSrWiFAQBAU8OHD5c5
+ pKsjR47MmzcvOjpaNqoVd3f3vn37vvbaa8ePH5fNqYwBAEA7bm5u2dnZMod08sknn/Tr189oNMoudeLk
+ 5BQdHf3yyy9rNgkYAAC0M2HCBBlCevjnP//ZokUL2ZzNMBgMVqt11apVFy9elK3XKgYAAI2YzWbd//v/
+ 2WefxcTEyM5slaen52OPPfbf//5XbqOWMAAAaGT06NEygTR06tSpQYMGyZ7shNVq/eCDD+SWaowBAEAj
+ +/fvlwmklXfffbdBgwayIXsTGRm5fv364uJiub3qYgAA0ILVapXxo4krV65MnDhRdmPPIiIi1q9fXyvf
+ JGAAANDCW2+9JeNHfefPn+/evbtspU6Iiop6//335YariAEAQHW+vr7aXw4hJycnKipKtlK3dOzYcc+e
+ PXLnlcYAAKC6hx9+WGaPys6cOWPLH/SsRUajcdy4cefOnZNHUAkMAACq+/TTT2X2qKmwsNCOPutZKywW
+ y6pVq+RB/BEGAAB1BQYG1so7lpVnvx/3rKEuXbocPnxYHsfNMQAAqEvji/+sWLFCduBIPDw8li1bJg/l
+ JhgAANS1adMmGTyqOXz4sAbX8rR9sbGxlfnSNQMAgIqMRuP58+dl8Kimd+/esgNH5evr+84778gDuh4D
+ AICKWrVqJVNHNampqXJ5hzd27NhLly7Jk6rAAACgoscff1ymjmrat28vl8ef/tSiRYuDBw/Kw/oZAwCA
+ ijT7AvCXX34p10YFb2/vDz/8UB4ZAwCAqrKysmTqqOPhhx+Wa+MaRqPxxRdfFIfGAACgFg8PD22+AVBS
+ UuLr6yuXxw369+9fUFDwy7kxAACoJSYm5rqcVs2uXbvk2riJ1q1bnzp1qvzcGAAA1DJy5EgZ1eqYO3eu
+ XBs3Fx4enpGRwQAAoKJZs2bJqFbHgAED5Nr4XX5+frt27WIAAFDLP/7xDxnV6nCQC3/WLjc3t2bNmsmf
+ AkCt2LFjh4xqdVgsFrk2AEBHBw4ckFGtDrkwAEBfOTk5MqrVIRcGAOhLmy8BMAAAwLZ4e3vLnFaNq6ur
+ XB4AoBctB0BQUJBcHgCgl6CgIJnTqmnVqpVcHgCgl9DQUJnTqomPj5fLAwD0ouUASExMlMsDAPRisVhk
+ TqsmJSVFLg8A0IuWbwJnZ2fL5QEAejEajTKn1RQRESE7AADoJT8/X+a0ap588km5PABAL9nZ2TKnVfOf
+ //xHLg8A0Mvu3btlTqupZcuWsgMAgC7eeecdGdJqWrNmjewAAKCLV199VYa0moqLi0NDQ2UTAADtjR8/
+ Xoa0yjZs2CCbAABor1u3bjKh1depUyfZBwBAY4GBgTKe1Xfo0CGuDg0A+jtx4oRMaPUlJSXJPgAAGnvv
+ vfdkPGti4MCBshUAgJYSExNlNmuioKAgOjpadgMA0Ey7du1kNmvlxIkT4eHhsiEAgDZMJlNubq7MZq1k
+ ZmY2btxY9gQA0MbGjRtlMGuIGQAAuhk6dKhMZW1lZmaGhYXJtgAAavPy8rp8+bJMZW0dP348KipKdgYA
+ UNvmzZtlJGvuwoULvXr1kp0BAFQVFxcn81gPJSUlEyZMkM0BANRjMplOnjwp81gn69atc3Nzky0CAFQy
+ a9YsmcT62bdv32233SZbBACowd/f/9KlSzKJ9ZOfn//ggw/KLgEAakhKSpIxrLc333zT19dXNgoAqF3B
+ wcFFRUUyg/V2/Pjxbt26yV4BALVr+fLlMoBtw+LFi7mLAACoKCAgIC8vT6avbTh06FBsbKzsGABQW6ZN
+ myaj15YkJSV5enrKpgEANefi4pKRkSFz15ZkZ2f36dNH9g0AqLmuXbvK0LU9KSkpDRs2lK0DAGro9ddf
+ l4lrey5cuPD4448bjUbZPQCg2urXr3/48GGZuDbpm2++ufPOO+UGAADVFhMTU1xcLOPWJpWWliYlJfn4
+ +Mg9AACqR69bxldPTk7OmDFjDAaD3AYAoKqcnJxs4VYBVfL111+3b99e7gQAUFWenp4HDhyQKWvz1q1b
+ 16hRI7kZAECVhIeH5+TkyIi1eXl5eU8//bTZbJb7AQBUXkxMTGFhoYxYe5CZmRkXFyf3AwCovPj4+JKS
+ EpmvdmL79u2RkZFySwCASho5cqRMVvtRUlKyYsUKf39/uSsAQGVMnjxZJqtdOX/+/JQpU3hjAACqw76+
+ HPCbsrKyEhIS5MYAAH+oDswARVF27tzZtm1buTcAwO8bM2aM/b4nfK3k5OTQ0FC5PQDA7+jfv78N3kO4
+ GgoLC+fNm+fl5SV3CAC4mdjY2LNnz8pAtU85OTljx441mUxykwCA39S0aVMbv4NYlRw4cIDbjQFAZfn4
+ +KSmpsootWcff/xxy5Yt5T4BADcyGo2zZ8+WOWrPSktLV69eHRQUJLcKALjRvffee+7cORml9qygoGDm
+ zJkeHh5yqwAAISQk5PPPP5c5audOnjw5atQobjUDAH/AZDLNmTOntLRU5qid+/bbbzt16iR3CwAQOnXq
+ ZC+3la+SlJSUJk2ayN0CAK7l6em5atUqmaD2r6CgYPr06S4uLnLDAIBr9enT5/jx4zJE7d/333/PK0IA
+ 8Ae8vb3//ve/ywStE1auXOnj4yM3DAC4Vo8ePX788UeZoPbv1KlT/fr1k7sFAFzLw8Nj0aJFdeMyosLa
+ tWu9vb3lhgEA14qOjv7qq69kgtq/7Ozs7t27y90CAK5lNBonTZqUl5cnQ9T+/fWvf+UDQgDwB4KCglJS
+ UmSC2r/09PSwsDC5WwCA0KVLl/3798sQtXPnzp3jnWEA+GNmszkxMfHixYsyR+3c4sWLnZ2d5W4BAEKT
+ Jk02btwoQ9TO/fvf//b395dbBQDcqHv37gcPHpQ5as9+/PFHbi8DAJXi4uIybdq0uvSKUF5e3j333CP3
+ CQD4TUFBQcnJyTJK7VZJSckjjzwiNwkAuJm77rrr66+/lmlqt2bOnCl3CAC4GYPBMGbMmNOnT8s0tU/L
+ ly93cnKSmwQA3Iy3t/fixYuLi4tloNqhdevWGY1GuUMAwO9o3rx5amqqDFQ7tH79emYAAFRZXFxcVlaW
+ zFR7wwwAgOpwcXGZOnVqfn6+jFW78sYbb/B+AABUR6NGjdasWVNaWiqT1X688sorclcAgEpq27bt559/
+ LpPVfkybNk1uCQBQSU5OTg888MCxY8dkuNqJQYMGyS0BACrP3d19xowZBQUFMl9tXlFRUceOHeV+AABV
+ EhwcvGHDBhmxNi8nJyckJERuBgBQVe3bt09PT5cpa9u++eYbd3d3uRMAQFUZDIbhw4efPHlSBq0NS05O
+ ltsAAFRP/fr1586de/nyZZm1tmrSpElyDwCAamvatOnWrVtl1tqk4uLiDh06yA0AAGoiPj7+xx9/lIlr
+ e44ePerr6yu7BwDUhLu7+5w5c2z/FaG33npLtg4AqLnmzZunpaXJ0LUx9913n+wbAFBzRqNxwoQJhYWF
+ MndtxpkzZywWi+wbAFArbrvttq+++kpGr81YtWqV7BgAUFucnZ1nz55dUlIi09c23HXXXbJjAEAt6tq1
+ 6//+9z+ZvjZg9+7d3DMAANQVGBj40UcfyQC2AQMHDpS9AgBql9FoXLBggQxgvWVmZppMJtkrAKDWDRo0
+ yNauKT18+HDZJQBADa1btz516pSMYf0cOHCAdwIAQCNhYWEZGRkyifXTp08f2SIAQCV+fn67du2SSayT
+ 7du3y/4AAOpxd3ffvn27DGOdNGvWTPYHAFCP7cyAhQsXyuYAAKpydXVNTU2Veay506dPG41G2RwAQFX1
+ 6tXbvXu3jGTN9ejRQ3YGAFBbgwYNvv/+exnJ2uLycACgj+DgYH2/H3DmzBleBQIAfcTGxl65ckUGs4a4
+ PigA6Gbs2LEylTU0Z84c2RAAQDNr166VwayVtLQ02Q0AQDP169fPysqS2ayJ4uJiDw8P2RAAQDMdO3Ys
+ LS2V8ayJbt26yW4AAFpasmSJzGZNJCYmylYAAFry8vLS5VOhGzdulK0AADQ2evRoGc/qy8rKkn0AADRm
+ Mpm0/3pwSUmJi4uLbAUAoLFBgwbJhFZfZGSk7AMAoDGTyfTDDz/IhFZZfHy87AMAoL3JkyfLhFbZE088
+ IZsAAGjPz8+vqKhIhrSaFixYIJsAAOhi8+bNMqTVlJKSIjsAAOhiyJAhMqTVtG3bNtkBAEAXFoulpKRE
+ 5rRqdu/eLTsAAOjlm2++kTmtmoMHD8rlAQB6+dvf/iZzWjVHjhyRywMA9PLQQw/JnFbN6dOn5fIAUHmu
+ rq7yR6iBDh06yJxWTW5urlweACpv48aNTk5O8qeoruDgYJnTqmEAAKgRRVHmz58vf4rqMpvNMqdV89NP
+ P8nlAaDyyqNkzJgx8i9QXZrdI4w3gQHUSHmUFBcX33333fLvUC25ubkyqtXBAABQI7+kyYULF1q3bi3/
+ GlV35cqV63JaNXv37pVrA0DlXRsoOTk5t956q/wXqAqTyXTtkarq448/lssDQOWJTDl69Gjjxo3lP0Kl
+ NWzYUBypergtMIAakaGiKJmZmcyAamvTpo08UNWsWLFCLg8AlSdD5Wf79+9v0KCB/KeohKFDh8rTVM20
+ adPk8gBQeTJUKuzbt48ZUA3z58+XR6maIUOGyOUBoPJkqFwjIyOD14KqaseOHfIcVdOhQwe5PABUngyV
+ 62VlZUVERMjfwU3Uq1fv0qVL8hBVExgYKDsAgMqToXKDY8eONW/eXP4afktcXJw8PtVwHQgANSVz5bfk
+ 5uZarVb5m7hBcnKyPDvVfPrpp3J5AKgSmSs3UVRUNGjQIPnLuIaPj09hYaE8ONUsXbpUdgAAVSJz5XdN
+ nTqVa0ffzJQpU+R5qYmPAAGoKZkrf+TNN9+sV6+efBSH5+bmduzYMXlYagoPD5dNAECVyFyphL1795I+
+ wsSJE+UxqenUqVOyAwCoKhktlXP27FkuH/0Lf3//c+fOyTNSU0pKimwCAKpKRkullZaWzp8/39nZWT6i
+ 41m3bp08HZWNGDFCNgEAVSWjpYrS09Md/Jti8fHx8lDU16hRI9kHAFSVjJaqy8/PHzZsmHxcxxAeHq7x
+ iz+Konz11VeyDwCoBpku1fXuu+8GBQXJR6/TPD099+zZIw9CfYmJibIVAKgGmS41kJubO3r0aAf5ooDZ
+ bN62bZs8Ak3ccsstshsAqAaZLjW2a9eu22+/XS5Tt5jN5i1btsidayI9PV12AwDVIwOmNhQXFy9btszX
+ 11cuVie4u7t/8MEHcs9aGTt2rGwIAKpHBkztOXv27KRJk1xdXeWS9iwwMDAtLU1uVSsXL1709PSUPQFA
+ 9ciMqW1Hjx4dMWKEyWSSC9uhmJiY7OxsuUMNrVmzRvYEANUmM0YdmZmZo0ePNpvNcnk7YTQaExMTr1y5
+ IjemrcjISNkZAFSbzBg1HTt2bMqUKd7e3rIJ2/aXv/zliy++kJvRXGpqquwMAGpCxoz68vLyli5d2qJF
+ C9mK7bFYLAsXLtT9P/7lunXrJvsDgJqQMaOhHTt2jBo1yjbf1axXr96zzz6bm5srm9bJjh07ZIsAUEMy
+ aTRXWFi4YcOGhIQENzc32ZwegoKCZs+enZOTIxvVVadOnWSjAFBDMmn0c/HixbfffnvEiBG6XOnMaDR2
+ 7949OTm5qKhIdqa3Dz/8ULYLADUnw8Y27N27d/HixQkJCQEBAbLjWmU2m2NjY5ctW3b69GnZhG24cuVK
+ 8+bNZd8AUHMyb2xPVlbWxo0bp06d2qtXr7CwMIPBIPdQRR4eHu3bt588efLWrVsLCgrkejZm0aJFcgMA
+ UCtk3ti8S5cu7du377333lu+fPkzzzwzatSoe++9NzY2NjIyMvRn/v7+3t7eAQEBoaGht99+e9u2bfv1
+ 6/fYY4/Nnz//7bffPnToUGlpqXxQW3Xy5EnbfJMcQF0gIwe2JC4uTj5hAFBbZOTAZqxfv14+WwBQi2Tq
+ wDYcO3bMz89PPlsAUItk8MAGFBcXd+jQQT5VAFC7ZPbABnDTRwBakNkDvW3evNlBbqsJQGcyfqCrPXv2
+ eHh4yCcJANQgEwj6OXXqVEhIiHyGAEAlxcXFMoegh/Pnz0dFRcmnBwDUc+eddx48eFCmEbRVUFDAx34A
+ 6MDd3X3p0qUyk6CVgoKCLl26yGcFADTTo0ePo0ePynCCykh/ADbBw8Pj1VdfLSkpkSkFdeTm5sbExMin
+ AQD00rZt2z179sisQm07cuTIn//8Z3n6AKAvk8k0ceLE8+fPy9BCLUlPTw8MDJTnDgA2wt/ff+XKlXZ0
+ 9Xx7sWbNGhu5ATIA/J42bdp89tlnMsNQLUVFRY888og8YgCwZX369Nm7d6/MM1TF999/f8cdd8iTBQDb
+ ZzAYhg4dmpmZKYMNlbBkyRJe9gFg30wm0/Dhww8dOiQTDjeRkZHRuXNneY4AYKcMBsPAgQO/++47mXa4
+ xuXLl2fNmuXq6iqPDwDsnZOT0913371t2zaZfFCUTZs2hYeHyyMDgDqmefPmr7/++sWLF2UKOqQvvviC
+ K7sBcCyenp5jx4799ttvZSI6jLS0tJ49e8pzAQDHER0dvXz58p9++kkGZB1VWlr6/vvvd+vWTR4EADgm
+ Z2fnPn36bNiwIT8/X0ZmXXHhwoWlS5c2a9ZMbh4AUH6R0YSEhLVr1549e1YmqN365JNPhg4d6u7uLncL
+ ALiR0Wi0Wq2LFi2y3y8Vp6WlPfnkk8HBwXJvAIBKCggIGDx48OrVq3/44QeZsjYmLy9v8+bNjz76KLkP
+ ALUsICAgPj7+pZde2rlzZ15engxgPVy4cGHr1q3Tp0+PjY01m82yYwBArTMYDBEREQkJCbNmzXr33Xe/
+ ++67y5cvy3hWwZkzZz755JNXXnll2LBhLVq0MBqNsjMAgMYMBkOTJk06d+48atSoZ599NikpacuWLV9+
+ +eWRI0dyc3NlkP+uixcvnjhx4ssvv9yyZUtSUtL06dMHDx7cpk0bHx8fuSoAwPZ5eXmFhIQ0a9as5c/a
+ tm1rtVpjY2PL/9iyZcvw8HA/Pz+TySR/EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB1WEwe
+ 1vrNrq9bb1JNrZ43VsR15RVh9brlhgq3el9bYdeVT+j1FXK1fEOsvsHXVxOr3y/V+NeyNLZagiqq0dVq
+ UF4NKyrQ6n9tBZRVQHn5V1SDsgosL8uv1dCvonzLqlF5+VSUtzXol/K6Wo09K6p+WTUpL4+KqmcNLi/3
+ qxXibg1xqyjXsgp1tYa6/Fph5opyLqtwZ2u4qaKM1lvKy3C1IpzKK8Iin24A+FU/7zuUVq//XK8p0eW1
+ oqxar1BaJ/1cy5U2y5U2f1PaLFPaLlPaLi2rO5f8XH9V2r1aVjGLlZhXyqr9IqX9QuWuhcpdLysdFigd
+ XlI6vqR0nK90mvdzzVViX1Ri5yjW2WXV+QWl8yyly0ylywyl6wyl6/NKt+eUbtOV7s8q3Z9RekxT7p5a
+ Vj0TlZ5PK72eUnpNUe6ZrPR+Uuk9SekzUekzQfm/J5T/e1zp+7jS9zHl3nFK3Dgl7lGl36NKv0eU+DFK
+ whgl4SGl/2hlwChlwAjlvhHKfcOU+4cpAx9UBg5RHhiiDBpUVoMHKkPuV4bcpwwdoAztrzyYoAyLV4b1
+ U4bHKSPuVUb0VUb2UUb1Vkbfo4zupTzUUxlztzKmh/Jwt7J6pIvyaGdlrFUZF6uM66SM76g8dpfyWHvl
+ 8RjliXbKE3cqE9ooE9sok6KVSa2UJ+9QJkeV1ZQWylO3K0//RUn8s5J4mzK1mTLtVuWZpsoztyjPhivT
+ w5TpocpzwcrzTZQZjZWZQcrMRsqsQOWFAGW2vzLHoszxU170VeZ6K/O8lPmeyvz6ykv1lAXuygI35WUX
+ ZaGLsshZecWovGJ4Nd5JPt8A8AsGAAMAgINiADAAADgoBgADAICDYgAwAAA4KAYAAwCAg2IAMAAAOCgG
+ AAMAgINiADAAADgoBgADAICDYgAwAAA4KAYAAwCAg2IAMAAAOCgGAAMAgINiADAAADgoBgADAICDYgAw
+ AAA4KAYAAwCAg2IAMAAAOCgGAAMAgINiADAAADgoBgADAICDYgAwAAA4KAYAAwCAg2IAMAAAOCgGAAMA
+ gINiADAAADgoBgADAICDYgAwAAA4KAYAAwCAg2IAMAAAOCgGAAMAgINiADAAADgoBgADAICDYgAwAAA4
+ KAYAAwCAg2IAMAAAOCgGAAMAgINiADAAADgoBgADAICDYgAwAAA4KAYAAwCAg2IAMAAAOCiLycNav9n1
+ detNqqnV88aKuK68Iqxet9xQ4VbvayvsuvIJvb5CrpZviNU3+PpqYvX7pRr/WpbGVktQRTW6Wg3Kq2FF
+ BVr9r62AsgooL/+KalBWgeVl+bUa+lWUb1k1Ki+fivK2Bv1SXlersWdF1S+rJuXlUVH1rMHl5X61Qtyt
+ IW4V5VpWoa7WUJdfK8xcUc5lFe5sDTdVlNF6S3kZrlaEU3lFWOTTDQAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoIf/B1YIlQq3O94uAAAA
+ AElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAADV0RVh0VGl0
+ bGUAQXJyb3c7UmVjdXJyZW5jZTtSZWZyZXNoO1VwZGF0ZTtSZWxvYWQ7RXhjaGFuZ2WGtF1IAAAII0lE
+ QVRYR5VXa1CU1xn+vCSmMSpJ0x/90WmbTkynSfOnnUk7TZppf9hMndZLRCBQuS9IqHJRggrIRUAuCshV
+ V1FAiAEViXIRFKWIY5CLoFaR+yIou8uy912Whafznv0OWdalY87MM99ydvc8z/O+73nfRRB++Fr2f/CD
+ FgDHrSUXJ1guCMIKESsdQHv0PuGlxCwSkFd6W8graRNyCWduCTmnW2mbE68I2ZPjkpJX75peeP3r9KLm
+ rrSCa7LDhdeRmtckS8lr6krMqT8Xk1693Sso6U1REBMSnVpjf84icYsEEKllHgv4njj77bTCa9lHpS3G
+ qroedD4cx9ikFiqdGZZ5QKU1Q/Zcg/ZeGcqrO5CUc9UYk1aT4+oT9xM7ISxiWdLmBPE1E7FIQHZxqyP5
+ yqScWo/0omZV3c1HmNbPYGYeMM/Nw2QlzMEwa4NRhNk6jymtCVVXuhF16KImdN8ZT0EQVhF2xVYkZZ38
+ Dx3+ilMBR6QtnJwUr0w+1pCYX9aGp3ItIyZCImGkFoIVesKMDToR9Jo+NzIxjcSsOoTuO3s4JLo0pf7G
+ Q2SeuEEEJIg4FgvION5MD5vzrLqkU5XfMdfkihEz0jkbqRNinXkWWrMVWvMsNCYbnk/pkFHUhNrmBzDN
+ zIJqRhCE15wK4DmPzbi0Pae4BWqDmZEbZq0Lbqe0ZnZYWsFVRByshG/YaUTGVyKzqBF1Nx9CqTVBY7JA
+ bZqFXGPChEoPpdoInckCudqI5NwmYvzRUgKWe+9M/umhY42qsUmNjVx0Sg5vdQ5hV8w57AiVNnjuzA9z
+ 9cv487vvf+zi6pf+qVdIQbjv7lNXI+IrcbtrGNNGC8aUeowp9JApdBiT6zAq1yEhu4EYX3cmgNy/ciCt
+ JrO+5REjJ8c8vBcb7sE3rFjhEXTMQwwhFRK/+/R8lZx9EZztGRBZqrzU1IuJKQNkRDypw4hci5FJLeKO
+ 1HIB9L1FApb/bZPEJTGr3kRVTIVGxJTPlvYBCvXghs0R74hE/BrZgxzRe2v8w0/m1TT2sJAT6chzLYZF
+ 7D98mRhXOwpghRdxsGJHWfVd5p6ICZTHiPgq6+feKZ+IrlkjmZmbFzh47VAE/MKkqTWNvdCbLCwCw881
+ GHpmw+BzDaKSq5cU8OrexPOVd7pHYLRYF6qYCstn98kqMewr7IntyEnUKr/wU8mcfHxKj0EiZVBjYEKN
+ /nE1IhLOOxXADohIqHo8OqGGzmyF2mhhSC9shEdwzjbePBixlTDHwN377ylNlERXQPJVBSRR5QiMOovA
+ vWUIIOwpg39kKcPu2Eqnt4BFQBJVpgncW4oA+nBECfzCz7BrtmFL5M943jmxgwA6jATSweTuDRFrBEFY
+ J8JFfNI+1coLAoiAOhQdQF/koL9pn1c8n3is+MyLRfCeTyBBlDYuggYUgV7TLWARXXQLxE16k760VgQX
+ wl2RIHK6UJAmi1UwzswKRrMNvKg9/ON+lZBVj4NH6xB3pA5xmbWIzajFgbTLep4GRwGvZRy/gfSiZqQV
+ XsfhgutIzb+GlLwm1sEOHWukSYfE7AbEpNWkiFFZxokNZgsDPyt4b5H7ifI26IwzUOtteDw0Ca8vpX2i
+ mRX2Aihsq1Pyr8FsnYNpVoTFBroZhPN13fDcmZ8uOmB1wYn1JkbO3FP0wuIqvm2+3Y9xpR73R6Zwf1iJ
+ b+q74R6UV81vgqOANeROPzOLiWkDJlQGjE8ZMM6eelCPcJfkZorqWQ45sR05nfO6d2i2b1zmZTxT6dn1
+ 6x1WondIieT8BvzTK2WnsxQwAZQjmmpPpwwi9Kynl1xsx/aAHKkgCD+2d28HXkOrP9ng/f6/Y87Jb3UM
+ MRNEfm9IidsPxuG9u9i0/oO/0K2im7CoCOnAtdGpNUwAkcoUeowS5DqcvdQBr1Dp1D++SPQTK5lE0CFE
+ yuYA7XtIMnxDosunqq/2QKEx4rFMhe5BBboHFMg+fRNbfY8W8vwTqb0AlrfIxAvQmiyMdIRBi0Gxjze1
+ 9SE4uhxuktzaje7xXn/8q+d6QRDe+uhT9/e2+aR4+YZJayPiq9DaPsDmwJOnakbcNaBA450BMqD+4Pcb
+ 3xWvNUXtBQHrdsVVQmO0YHhSi76xafQ9VeH+sK2AHo2pMDShxoWGe0jKrkX4wUoERJYgPO4bpOVfRU1T
+ L54pdaxu/kvO++XoGpDjVu8Ygr4qw9/d4gPt27AzAS4h+yowbbDgxLnb2HvoAjr7njHyniEFegYplwo8
+ kqkgk2vxTGVgYVZqTJicNrDZ/3hMxVx39ssZWnvGEJ5QhU3/Ss8WU7fwe9CZgHXUv89Wt2PzjrRjW3wy
+ Cr/cX46bd4fRM6S05VLMJw8tOezqV6BLJOzsn0TnEzk6nkyiru0JJFFl2LQjo0DsgrwFOxVAYXnDN/wM
+ FcoRsdrf2uiWEOgZItUePXkddx6Mo5sIBzjZ9+hgpDbim92jSC1shHvwccNnrrFB4hzgP0SXuQUdXyB1
+ 7ISrPIILDotVSl8gxat/97H7b7b6ZpV7hUpNsRnfoqT6Lura+tF6T8YIW7pGcaW1D8UXvsP+9Bp4hpyw
+ bPbO/PrDj7b+VmzjC84nVAZhKQG8ifCfWjxUtEdDZe07v/7Tzz9zjfXf6ptV4xqQ+8BNUqhwCzqO7YGF
+ im3+uQ+2+GRd2fD5gcBfrP/DL+2uKmvXNudFgpukSNguKXIqgIvgcNwnIRQVGlY0pCinlKa3xSefdPbT
+ c2FqOpy3sBwFLLUcOx6JIQKKFof9P6dLGXlhvawA+2V/+FJ46UUC/gd8BItwSzOolwAAAABJRU5ErkJg
+ gg==
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADbAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IlJlbW92ZV9TaGVldF9Db2x1bW5zIiBzdHlsZT0iZW5hYmxlLWJhY2tn
+ cm91bmQ6bmV3IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxhY2t7Zmls
+ bDojNzI3MjcyO30KCS5CbHVle2ZpbGw6IzExNzdENzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qw
+ e29wYWNpdHk6MC41O30KPC9zdHlsZT4NCiAgPGcgY2xhc3M9InN0MCI+DQogICAgPHBhdGggZD0iTTIw
+ LDRoOHY2aC04VjR6IE04LDEwVjRIMHY2SDh6IE04LDE4di02SDB2Nkg4eiBNMjgsMTh2LTZoLTh2Nkgy
+ OHogTTgsMjZ2LTZIMHY2SDh6IiBpZD0iVGFibGVfN18iIGNsYXNzPSJCbGFjayIgLz4NCiAgPC9nPg0K
+ ICA8cmVjdCB4PSIxMCIgeT0iNCIgd2lkdGg9IjgiIGhlaWdodD0iMjIiIHJ4PSIwIiByeT0iMCIgY2xh
+ c3M9IkJsdWUiIC8+DQogIDxwb2x5Z29uIHBvaW50cz0iMzIsMjIgMzAsMjAgMjYsMjQgMjIsMjAgMjAs
+ MjIgMjQsMjYgMjAsMzAgMjIsMzIgMjYsMjggMzAsMzIgMzIsMzAgMjgsMjYgIiBjbGFzcz0iUmVkIiAv
+ Pg0KPC9zdmc+Cw==
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD6AQAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkNsZWFySGVhZGVyQW5kRm9vdGVyIiBzdHlsZT0iZW5hYmxlLWJhY2tn
+ cm91bmQ6bmV3IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuUmVke2ZpbGw6
+ I0QxMUMxQzt9Cjwvc3R5bGU+DQogIDxwYXRoIGQ9Ik0yNyw0SDVDNC41LDQsNCw0LjUsNCw1djIyYzAs
+ MC41LDAuNSwxLDEsMWgyMmMwLjUsMCwxLTAuNSwxLTFWNUMyOCw0LjUsMjcuNSw0LDI3LDR6IE0yMiwy
+ MGwtMiwybC00LTRsLTQsNCAgbC0yLTJsNC00bC00LTRsMi0ybDQsNGw0LTRsMiwybC00LDRMMjIsMjB6
+ IiBjbGFzcz0iUmVkIiAvPg0KPC9zdmc+Cw==
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADYAwAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJ
+ LlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMw
+ MzlDMjM7fQoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9Cgkuc3Qwe29w
+ YWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNpdHk6MC41O30KCS5zdDJ7b3BhY2l0eTowLjI1O30KPC9zdHls
+ ZT4NCiAgPGcgaWQ9IkFkZEdyb3VwSGVhZGVyIj4NCiAgICA8cmVjdCB4PSI2IiB5PSI4IiB3aWR0aD0i
+ MTQiIGhlaWdodD0iNiIgcng9IjAiIHJ5PSIwIiBjbGFzcz0iQmx1ZSIgLz4NCiAgICA8ZyBjbGFzcz0i
+ c3QwIj4NCiAgICAgIDxwYXRoIGQ9Ik0yMCwxOEg2di0yaDE0VjE4eiBNMjAsMjBINnYyaDE0VjIweiBN
+ MjAsMjRINnYyaDE0VjI0eiIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDwvZz4NCiAgICA8cGF0aCBkPSJN
+ MjIsMjhINFY2aDE2aDJoMC4ybDEuNi0xLjZDMjMuNiw0LjIsMjMuMyw0LDIzLDRIM0MyLjUsNCwyLDQu
+ NSwyLDV2MjRjMCwwLjUsMC41LDEsMSwxaDIwYzAuNSwwLDEtMC41LDEtMSAgIHYtOS4ybC0yLTJWMjh6
+ IiBjbGFzcz0iQmxhY2siIC8+DQogICAgPHBvbHlnb24gcG9pbnRzPSIzMCw3IDI3LDEwIDI0LDcgMjIs
+ OSAyNSwxMiAyMiwxNSAyNCwxNyAyNywxNCAzMCwxNyAzMiwxNSAyOSwxMiAzMiw5ICAiIGNsYXNzPSJS
+ ZWQiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAIAwAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9Ik1vZGlmeVRhYmxlU3R5bGUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3Vu
+ ZDpuZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbHVle2ZpbGw6IzEx
+ NzdENzt9CgkuQmxhY2t7ZmlsbDojNzI3MjcyO30KCS5zdDB7b3BhY2l0eTowLjU7fQo8L3N0eWxlPg0K
+ ICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8cGF0aCBkPSJNMjgsMTBoLThWNGg4VjEweiBNMjYuMywxNC45
+ YzAuNS0wLjUsMS4xLTAuNywxLjctMC44di0yaC04djZoMy4yTDI2LjMsMTQuOXogTTAsMjZoOHYtNkgw
+ VjI2eiBNMTgsMjMuMlYyMCAgIGgtOHY2aDUuMkwxOCwyMy4yeiIgY2xhc3M9IkJsYWNrIiAvPg0KICA8
+ L2c+DQogIDxwYXRoIGQ9Ik0wLDRoOHY2SDBWNHogTTAsMThoOHYtNkgwVjE4eiBNMTAsMTBoOFY0aC04
+ VjEweiBNMTAsMThoOHYtNmgtOFYxOHogTTI5LDIzbC04LDhsLTQtNGw4LThMMjksMjN6IE0zMCwyMiAg
+ bDEuNy0xLjdjMC40LTAuNCwwLjQtMSwwLTEuM2wtMi43LTIuN2MtMC40LTAuNC0xLTAuNC0xLjMsMEwy
+ NiwxOEwzMCwyMnogTTE2LDI4djRoNEwxNiwyOHoiIGNsYXNzPSJCbHVlIiAvPg0KPC9zdmc+Cw==
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADrAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJ
+ LlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5SZWR7ZmlsbDojRDEx
+ QzFDO30KCS5XaGl0ZXtmaWxsOiNGRkZGRkY7fQoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cgkuc3Qwe2Zp
+ bGw6IzcyNzI3Mjt9Cgkuc3Qxe29wYWNpdHk6MC41O30KCS5zdDJ7b3BhY2l0eTowLjc1O30KPC9zdHls
+ ZT4NCiAgPGcgaWQ9IkFkZEZpbGUiPg0KICAgIDxwYXRoIGQ9Ik0xNiwyNkg2VjRoMTh2MTRoMlYzYzAt
+ MC41LTAuNS0xLTEtMUg1QzQuNSwyLDQsMi41LDQsM3YyNGMwLDAuNSwwLjUsMSwxLDFoMTFWMjZ6IiBj
+ bGFzcz0iQmxhY2siIC8+DQogICAgPHBvbHlnb24gcG9pbnRzPSIzMCwyNCAyNiwyNCAyNiwyMCAyMiwy
+ MCAyMiwyNCAxOCwyNCAxOCwyOCAyMiwyOCAyMiwzMiAyNiwzMiAyNiwyOCAzMCwyOCAgIiBjbGFzcz0i
+ R3JlZW4iIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD4BAAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJ
+ LkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlDMjM7fQoJLlllbGxvd3tmaWxsOiNG
+ RkIxMTU7fQoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9Cgkuc3Qwe29w
+ YWNpdHk6MC41O30KCS5zdDF7b3BhY2l0eTowLjc1O30KPC9zdHlsZT4NCiAgPGcgaWQ9IlRleHRBbm5v
+ dGF0aW9uIj4NCiAgICA8cGF0aCBkPSJNMjksMkgxQzAuNSwyLDAsMi41LDAsM3YyMGMwLDAuNSwwLjUs
+ MSwxLDFoN3Y4bDgtOGgxM2MwLjUsMCwxLTAuNSwxLTFWM0MzMCwyLjUsMjkuNSwyLDI5LDJ6IE0yOCwy
+ MkgxNS4yICAgTDEwLDI3LjJWMjJIMlY0aDI2VjIyeiIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDxwYXRo
+ IGQ9Ik04LjksMTUuOGgzLjJsMC42LDIuM0gxNUwxMS44LDhIOS40TDYuMSwxOGgyLjJMOC45LDE1Ljh6
+ IE0xMC40LDEwLjdjMC4xLTAuMywwLjEtMC42LDAuMS0wLjloMC4xICAgYzAsMC4zLDAuMSwwLjYsMC4x
+ LDAuOWwxLDMuM0g5LjRMMTAuNCwxMC43eiBNMjIuOSwxNy4yQzIzLjcsMTYuNiwyNCwxNiwyNCwxNWMw
+ LTAuNi0wLjItMS4yLTAuNy0xLjZjLTAuNS0wLjQtMS4xLTAuNy0xLjgtMC44ICAgYzAuNi0wLjIsMS4x
+ LTAuNSwxLjUtMC45YzAuNC0wLjQsMC42LTAuOSwwLjYtMS40YzAtMC43LTAuMy0xLjMtMC45LTEuN0My
+ Mi4xLDguMiwyMS4xLDgsMTkuOSw4SDE2djkuOVYxOGg0ICAgQzIxLjIsMTgsMjIuMywxNy44LDIyLjks
+ MTcuMnogTTE4LjQsOS43aDAuOWMxLjEsMCwxLjcsMC40LDEuNywxLjFjMCwwLjQtMC4xLDAuNy0wLjQs
+ MC45QzIwLjQsMTEuOSwyMCwxMiwxOS41LDEyaC0xLjFWOS43eiAgICBNMTguNCwxNi4ydi0yLjZoMS4z
+ YzAuNSwwLDAuOSwwLjEsMS4zLDAuM2MwLjMsMC4yLDAuNSwwLjYsMC41LDAuOWMwLDAuNC0wLjEsMC43
+ LTAuNSwxYy0wLjMsMC4yLTAuOCwwLjQtMS4zLDAuNEgxOC40eiIgY2xhc3M9IkJsdWUiIC8+DQogIDwv
+ Zz4NCjwvc3ZnPgs=
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAhAwAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5ZZWxsb3d7ZmlsbDojRkZCMTE1O30K
+ CS5SZWR7ZmlsbDojRDExQzFDO30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkJsdWV7ZmlsbDojMTE3
+ N0Q3O30KCS5XaGl0ZXtmaWxsOiNGRkZGRkY7fQoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cgkuc3Qwe29w
+ YWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNpdHk6MC41O30KCS5zdDJ7b3BhY2l0eTowLjI1O30KCS5zdDN7
+ ZmlsbDojRkZCMTE1O30KPC9zdHlsZT4NCiAgPGcgLz4NCiAgPGcgaWQ9IlJlbW92ZURhdGFJdGVtcyI+
+ DQogICAgPHBhdGggZD0iTTE4LjEsMjMuMWwtNC40LDQuNGMtMC43LDAuNy0xLjksMC43LTIuNiwwbC02
+ LjYtNi42Yy0wLjctMC43LTAuNy0xLjksMC0yLjZsNC40LTQuNEwxOC4xLDIzLjF6IiBjbGFzcz0iQmx1
+ ZSIgLz4NCiAgICA8cGF0aCBkPSJNMjcuNSwxMy43bC04LDhsLTkuMi05LjJsOC04YzAuNy0wLjcsMS45
+ LTAuNywyLjYsMGw2LjYsNi42QzI4LjIsMTEuOCwyOC4yLDEzLDI3LjUsMTMuN3oiIGNsYXNzPSJSZWQi
+ IC8+DQogIDwvZz4NCjwvc3ZnPgs=
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADmAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJ
+ LlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5SZWR7ZmlsbDojRDEx
+ QzFDO30KCS5XaGl0ZXtmaWxsOiNGRkZGRkY7fQoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cgkuc3Qwe2Zp
+ bGw6IzcyNzI3Mjt9Cgkuc3Qxe29wYWNpdHk6MC41O30KCS5zdDJ7b3BhY2l0eTowLjc1O30KPC9zdHls
+ ZT4NCiAgPGcgaWQ9IlBheW1lbnRSZWZ1bmQiPg0KICAgIDxwYXRoIGQ9Ik0xNiw0Yy0zLjMsMC02LjMs
+ MS4zLTguNSwzLjVMNCw0djEwaDAuMmg0LjFIMTRsLTMuNi0zLjZDMTEuOCw4LjksMTMuOCw4LDE2LDhj
+ NC40LDAsOCwzLjYsOCw4cy0zLjYsOC04LDggICBjLTMuNywwLTYuOC0yLjYtNy43LTZINC4yYzEsNS43
+ LDUuOSwxMCwxMS44LDEwYzYuNiwwLDEyLTUuNCwxMi0xMlMyMi42LDQsMTYsNHoiIGNsYXNzPSJCbHVl
+ IiAvPg0KICA8L2c+DQo8L3N2Zz4L
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADQAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxpbmVfQ29sb3IiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcg
+ MCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MjcyNzI7
+ fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5zdDB7ZmlsbDpub25lO30KCS5zdDF7b3BhY2l0eTowLjI1
+ O30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTE3LDExTDcsMjFsLTQtNEwxMyw3TDE3LDExeiBNMTgsMTBs
+ MS43LTEuN2MwLjQtMC40LDAuNC0xLDAtMS4zTDE3LDQuM2MtMC40LTAuNC0xLTAuNC0xLjMsMEwxNCw2
+ TDE4LDEweiAgIE0yLDE4djRoNEwyLDE4eiIgY2xhc3M9IkJsdWUiIC8+DQogIDxyZWN0IHg9IjAiIHk9
+ IjI0IiB3aWR0aD0iMzIiIGhlaWdodD0iOCIgcng9IjAiIHJ5PSIwIiBpZD0iSW5kaWNhdG9yIiBjbGFz
+ cz0ic3QwIiAvPg0KICA8ZyBjbGFzcz0ic3QxIj4NCiAgICA8cGF0aCBkPSJNMCwyMy45VjMyaDMydi04
+ LjFIMHogTTMwLDMwSDJ2LTRoMjhWMzB6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA+AwAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MzczNzQ7fQoJ
+ LlllbGxvd3tmaWxsOiNGQ0IwMUI7fQoJLkdyZWVue2ZpbGw6IzEyOUM0OTt9CgkuQmx1ZXtmaWxsOiMz
+ ODdDQjc7fQoJLlJlZHtmaWxsOiNEMDIxMjc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9Cgkuc3Qwe29w
+ YWNpdHk6MC41O30KCS5zdDF7b3BhY2l0eTowLjc1O30KCS5zdDJ7b3BhY2l0eTowLjI1O30KCS5zdDN7
+ ZGlzcGxheTpub25lO2ZpbGw6IzczNzM3NDt9Cjwvc3R5bGU+DQogIDxwYXRoIGQ9Ik0xOC44LDE2bDgu
+ OS04LjljMC40LTAuNCwwLjQtMSwwLTEuNGwtMS40LTEuNGMtMC40LTAuNC0xLTAuNC0xLjQsMEwxNiwx
+ My4yTDcuMSw0LjNjLTAuNC0wLjQtMS0wLjQtMS40LDAgIEw0LjMsNS43Yy0wLjQsMC40LTAuNCwxLDAs
+ MS40bDguOSw4LjlsLTguOSw4LjljLTAuNCwwLjQtMC40LDEsMCwxLjRsMS40LDEuNGMwLjQsMC40LDEs
+ MC40LDEuNCwwbDguOS04LjlsOC45LDguOSAgYzAuNCwwLjQsMSwwLjQsMS40LDBsMS40LTEuNGMwLjQt
+ MC40LDAuNC0xLDAtMS40TDE4LjgsMTZ6IiBjbGFzcz0iUmVkIiAvPg0KPC9zdmc+Cw==
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACnAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbHVle2ZpbGw6IzExNzdENzt9Cgku
+ WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmxhY2t7ZmlsbDojNzI3MjcyO30KCS5HcmVlbntmaWxsOiMw
+ MzlDMjM7fQoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQoJLnN0MXtvcGFj
+ aXR5OjAuNTt9Cjwvc3R5bGU+DQogIDxnIGlkPSJBZGQiPg0KICAgIDxwYXRoIGQ9Ik0yNywxNGgtOVY1
+ YzAtMC41LTAuNS0xLTEtMWgtMmMtMC41LDAtMSwwLjUtMSwxdjlINWMtMC41LDAtMSwwLjUtMSwxdjJj
+ MCwwLjUsMC41LDEsMSwxaDl2OSAgIGMwLDAuNSwwLjUsMSwxLDFoMmMwLjUsMCwxLTAuNSwxLTF2LTlo
+ OWMwLjUsMCwxLTAuNSwxLTF2LTJDMjgsMTQuNSwyNy41LDE0LDI3LDE0eiIgY2xhc3M9IkdyZWVuIiAv
+ Pg0KICA8L2c+DQo8L3N2Zz4L
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADrAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJ
+ LlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5SZWR7ZmlsbDojRDEx
+ QzFDO30KCS5XaGl0ZXtmaWxsOiNGRkZGRkY7fQoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cgkuc3Qwe2Zp
+ bGw6IzcyNzI3Mjt9Cgkuc3Qxe29wYWNpdHk6MC41O30KCS5zdDJ7b3BhY2l0eTowLjc1O30KPC9zdHls
+ ZT4NCiAgPGcgaWQ9IkFkZEZpbGUiPg0KICAgIDxwYXRoIGQ9Ik0xNiwyNkg2VjRoMTh2MTRoMlYzYzAt
+ MC41LTAuNS0xLTEtMUg1QzQuNSwyLDQsMi41LDQsM3YyNGMwLDAuNSwwLjUsMSwxLDFoMTFWMjZ6IiBj
+ bGFzcz0iQmxhY2siIC8+DQogICAgPHBvbHlnb24gcG9pbnRzPSIzMCwyNCAyNiwyNCAyNiwyMCAyMiwy
+ MCAyMiwyNCAxOCwyNCAxOCwyOCAyMiwyOCAyMiwzMiAyNiwzMiAyNiwyOCAzMCwyOCAgIiBjbGFzcz0i
+ R3JlZW4iIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADxAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJ
+ LlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMw
+ MzlDMjM7fQoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9Cgkuc3Qwe29w
+ YWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNpdHk6MC41O30KCS5zdDJ7b3BhY2l0eTowLjI1O30KPC9zdHls
+ ZT4NCiAgPGcgaWQ9IkRlbGV0ZUxpc3QiPg0KICAgIDxwYXRoIGQ9Ik02LDI2VjRoMTh2MTMuMmwyLTJW
+ M2MwLTAuNi0wLjQtMS0xLTFINUM0LjQsMiw0LDIuNCw0LDN2MjRjMCwwLjYsMC40LDEsMSwxaDguMmwy
+ LTJINnoiIGNsYXNzPSJCbGFjayIgLz4NCiAgICA8cG9seWdvbiBwb2ludHM9IjI4LDIwIDI2LDE4IDIy
+ LDIyIDE4LDE4IDE2LDIwIDIwLDI0IDE2LDI4IDE4LDMwIDIyLDI2IDI2LDMwIDI4LDI4IDI0LDI0ICAi
+ IGNsYXNzPSJSZWQiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACUAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9Ik9wZW4iIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMy
+ IDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5ZZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5z
+ dDB7b3BhY2l0eTowLjc1O30KPC9zdHlsZT4NCiAgPGcgY2xhc3M9InN0MCI+DQogICAgPHBhdGggZD0i
+ TTIuMiwyNS4ybDUuNS0xMmMwLjMtMC43LDEtMS4yLDEuOC0xLjJIMjZWOWMwLTAuNi0wLjQtMS0xLTFI
+ MTJWNWMwLTAuNi0wLjQtMS0xLTFIM0MyLjQsNCwyLDQuNCwyLDV2MjAgICBjMCwwLjIsMCwwLjMsMC4x
+ LDAuNEMyLjEsMjUuMywyLjIsMjUuMywyLjIsMjUuMnoiIGNsYXNzPSJZZWxsb3ciIC8+DQogIDwvZz4N
+ CiAgPHBhdGggZD0iTTMxLjMsMTRIOS42TDQsMjZoMjEuOGMwLjUsMCwxLjEtMC4zLDEuMy0wLjdMMzIs
+ MTQuN0MzMi4xLDE0LjMsMzEuOCwxNCwzMS4zLDE0eiIgY2xhc3M9IlllbGxvdyIgLz4NCjwvc3ZnPgs=
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAqAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbHVle2ZpbGw6IzExNzdENzt9Cgku
+ WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmxhY2t7ZmlsbDojNzI3MjcyO30KCS5HcmVlbntmaWxsOiMw
+ MzlDMjM7fQoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQoJLnN0MXtvcGFj
+ aXR5OjAuNTt9Cjwvc3R5bGU+DQogIDxnIGlkPSJBcnJvdzNEb3duIj4NCiAgICA8cG9seWdvbiBwb2lu
+ dHM9IjI5LDExIDI2LDggMTYsMTggNiw4IDMsMTEgMTYsMjQgICIgY2xhc3M9IlllbGxvdyIgLz4NCiAg
+ PC9nPg0KPC9zdmc+Cw==
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAApAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbHVle2ZpbGw6IzExNzdENzt9Cgku
+ WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmxhY2t7ZmlsbDojNzI3MjcyO30KCS5HcmVlbntmaWxsOiMw
+ MzlDMjM7fQoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQoJLnN0MXtvcGFj
+ aXR5OjAuNTt9Cjwvc3R5bGU+DQogIDxnIGlkPSJBcnJvdzNVcCI+DQogICAgPHBvbHlnb24gcG9pbnRz
+ PSIxNiw4IDMsMjEgNiwyNCAxNiwxNCAyNiwyNCAyOSwyMSAgIiBjbGFzcz0iWWVsbG93IiAvPg0KICA8
+ L2c+DQo8L3N2Zz4L
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACJAQAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbHVle2ZpbGw6IzExNzdENzt9Cjwv
+ c3R5bGU+DQogIDxwb2x5Z29uIHBvaW50cz0iMTIsMiAyMCwyIDIwLDE4IDI4LDE4IDE2LDMwIDQsMTgg
+ MTIsMTggIiBjbGFzcz0iQmx1ZSIgLz4NCjwvc3ZnPgs=
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABAAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbHVle2ZpbGw6IzExNzdENzt9Cgku
+ WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmxhY2t7ZmlsbDojNzI3MjcyO30KCS5HcmVlbntmaWxsOiMw
+ MzlDMjM7fQoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQoJLnN0MXtvcGFj
+ aXR5OjAuNTt9Cjwvc3R5bGU+DQogIDxnIGlkPSJBcnJvdzFEb3duIj4NCiAgICA8cGF0aCBkPSJNMTQs
+ NHYxNGgtMC43SDZsMTAsMTBsMTAtMTBoLTcuM0gxOFY0SDE0eiIgaWQ9Ikdyb3VwX1NlbGVjdGlvbl8y
+ XyIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACKAQAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbHVle2ZpbGw6IzExNzdENzt9Cjwv
+ c3R5bGU+DQogIDxwb2x5Z29uIHBvaW50cz0iMjAsMzAgMTIsMzAgMTIsMTQgNCwxNCAxNiwyIDI4LDE0
+ IDIwLDE0ICIgY2xhc3M9IkJsdWUiIC8+DQo8L3N2Zz4L
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA/AgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbHVle2ZpbGw6IzExNzdENzt9Cgku
+ WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmxhY2t7ZmlsbDojNzI3MjcyO30KCS5HcmVlbntmaWxsOiMw
+ MzlDMjM7fQoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLnN0MHtvcGFjaXR5OjAuNzU7fQoJLnN0MXtvcGFj
+ aXR5OjAuNTt9Cjwvc3R5bGU+DQogIDxnIGlkPSJBcnJvdzFVcCI+DQogICAgPHBhdGggZD0iTTE0LDI4
+ VjE0aC0wLjdINkwxNiw0bDEwLDEwaC03LjNIMTh2MTRIMTR6IiBpZD0iR3JvdXBfU2VsZWN0aW9uXzNf
+ IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADCAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAw
+ IDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbGFja3tmaWxsOiM3MzczNzQ7fQoJ
+ LlllbGxvd3tmaWxsOiNGQ0IwMUI7fQoJLkdyZWVue2ZpbGw6IzEyOUM0OTt9CgkuQmx1ZXtmaWxsOiMz
+ ODdDQjc7fQoJLlJlZHtmaWxsOiNEMDIxMjc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9Cgkuc3Qwe29w
+ YWNpdHk6MC41O30KCS5zdDF7b3BhY2l0eTowLjc1O30KCS5zdDJ7b3BhY2l0eTowLjI1O30KCS5zdDN7
+ ZGlzcGxheTpub25lO2ZpbGw6IzczNzM3NDt9Cjwvc3R5bGU+DQogIDxwYXRoIGQ9Ik0yNyw0aC0zdjEw
+ SDhWNEg1QzQuNCw0LDQsNC40LDQsNXYyMmMwLDAuNiwwLjQsMSwxLDFoMjJjMC42LDAsMS0wLjQsMS0x
+ VjVDMjgsNC40LDI3LjYsNCwyNyw0eiBNMjQsMjRIOHYtNiAgaDE2VjI0eiBNMTAsNHY4aDEwVjRIMTB6
+ IE0xNCwxMGgtMlY2aDJWMTB6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADqAgAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IlJlbW92ZV9DZWxscyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5l
+ dyAwIDAgMzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3
+ Mjt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLnN0MHtvcGFjaXR5
+ OjAuNTt9Cjwvc3R5bGU+DQogIDxnIGNsYXNzPSJzdDAiPg0KICAgIDxwYXRoIGQ9Ik0yMCw0aDh2Nmgt
+ OFY0eiBNMjAsMThoOHYtNmgtOFYxOHogTTEwLDR2Nmg4VjRIMTB6IE04LDEwVjRIMHY2SDh6IE04LDE4
+ di02SDB2Nkg4eiBNMTAsMjB2Nmg4di02SDEweiAgICBNOCwyNnYtNkgwdjZIOHoiIGNsYXNzPSJCbGFj
+ ayIgLz4NCiAgPC9nPg0KICA8cmVjdCB4PSIxMCIgeT0iMTIiIHdpZHRoPSI4IiBoZWlnaHQ9IjYiIHJ4
+ PSIwIiByeT0iMCIgY2xhc3M9IkJsdWUiIC8+DQogIDxwb2x5Z29uIHBvaW50cz0iMzIsMjIgMzAsMjAg
+ MjYsMjQgMjIsMjAgMjAsMjIgMjQsMjYgMjAsMzAgMjIsMzIgMjYsMjggMzAsMzIgMzIsMzAgMjgsMjYg
+ IiBjbGFzcz0iUmVkIiAvPg0KPC9zdmc+Cw==
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLkRhdGEudjIwLjIsIFZlcnNpb249MjAuMi4x
+ MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEFAQAAAB1E
+ ZXZFeHByZXNzLlV0aWxzLlN2Zy5TdmdJbWFnZQEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAhBAAAAu+7
+ vzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+DQo8c3ZnIHg9IjBweCIgeT0iMHB4
+ IiB2aWV3Qm94PSIwIDAgMzIgMzIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
+ LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNw
+ YWNlPSJwcmVzZXJ2ZSIgaWQ9IkFsbG93X1VzZXJzX3RvX0VkaXRfUmFuZ2VzIiBzdHlsZT0iZW5hYmxl
+ LWJhY2tncm91bmQ6bmV3IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxh
+ Y2t7ZmlsbDojNzI3MjcyO30KCS5CbHVle2ZpbGw6IzExNzdENzt9Cgkuc3Qwe29wYWNpdHk6MC41O30K
+ PC9zdHlsZT4NCiAgPHBhdGggZD0iTTE4LDR2NmgtOFY0SDE4eiBNOCwxMFY0SDB2Nkg4eiBNOCwxOHYt
+ NkgwdjZIOHogTTE4LDE4di02aC04djZIMTh6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPGcgY2xhc3M9InN0
+ MCI+DQogICAgPHBhdGggZD0iTTIwLDRoOHY2aC04VjR6IE04LDI2di02SDB2Nkg4eiBNMTgsMjIuOVYy
+ MGgtOHY2aDQuNUMxNS4zLDI0LjEsMTYuOCwyMy40LDE4LDIyLjl6IiBjbGFzcz0iQmxhY2siIC8+DQog
+ IDwvZz4NCiAgPHBhdGggZD0iTTIwLjMsMTguNGMtMC4yLTAuMy0wLjMtMC42LTAuMy0xYzAtMC4yLDAu
+ Mi0wLjIsMC4zLTAuMmMtMC43LTIuNSwwLTUsMi45LTUuMmMzLTAuMiwzLjcsMiwzLjcsMiAgczEuNi0w
+ LjEsMC43LDMuMmMwLjEsMCwwLjMtMC4xLDAuNCwwLjJjMC4xLDAuNCwwLDAuNi0wLjIsMWMtMC4yLDAu
+ MywwLjEsMS4xLTAuNiwxLjFjMCwwLDAsMC4xLDAsMC4xQzI2LjgsMjEuMiwyNS44LDIzLDI0LDIzICBj
+ LTEuOCwwLTIuOC0xLjctMy4yLTMuNGMwLDAsMC0wLjEsMC0wLjFDMjAuMiwxOS42LDIwLjQsMTguOCwy
+ MC4zLDE4LjR6IE0yNi43LDIzLjJjLTAuNSwxLTEuNCwyLjgtMi43LDIuOGMtMS4zLDAtMi4xLTEuOC0y
+ LjYtMi45ICBDMTkuOSwyNS42LDE2LDIzLjgsMTYsMjl2MWgxNnYtMUMzMiwyMy45LDI4LjIsMjUuNSwy
+ Ni43LDIzLjJ6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L
+
+
+
+ 17, 17
+
+
+ 453, 17
+
+
+ 789, 17
+
+
\ No newline at end of file
diff --git a/SSG_Automation_Solution/Program.cs b/SSG_Automation_Solution/Program.cs
new file mode 100644
index 0000000..d1921ba
--- /dev/null
+++ b/SSG_Automation_Solution/Program.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Windows.Forms;
+
+namespace SSG_Automation_Solution.Design.Forms
+{
+ static class Program
+ {
+ ///
+ /// 해당 애플리케이션의 주 진입점입니다.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+
+ // 로그인 폼을 생성
+ using (LoginForm loginForm = new LoginForm())
+ {
+ // 로그인 폼의 위치를 화면 중앙으로 설정
+ loginForm.StartPosition = FormStartPosition.CenterScreen;
+
+ // 로그인 폼 표시
+ var loginResult = loginForm.ShowDialog();
+
+ if (loginResult == DialogResult.OK && loginForm.LoginResult > 0)
+ {
+ // 로그인 성공: MainForm 실행
+ Application.Run(new MainForm(loginForm.LoginResult, loginForm.Username));
+ // 7/9
+ }
+ }
+ }
+ }
+}
diff --git a/SSG_Automation_Solution/Properties/AssemblyInfo.cs b/SSG_Automation_Solution/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..692772a
--- /dev/null
+++ b/SSG_Automation_Solution/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
+// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
+// 이러한 특성 값을 변경하세요.
+[assembly: AssemblyTitle("SSG_Automation_Solution")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("SSG_Automation_Solution")]
+[assembly: AssemblyCopyright("Copyright © 2024")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
+// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
+// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
+[assembly: ComVisible(false)]
+
+// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
+[assembly: Guid("2d212a21-573e-4c84-9aba-a559d0878be9")]
+
+// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
+//
+// 주 버전
+// 부 버전
+// 빌드 번호
+// 수정 버전
+//
+// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
+// 기본값으로 할 수 있습니다.
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/SSG_Automation_Solution/Properties/Resources.Designer.cs b/SSG_Automation_Solution/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..3a8c3a0
--- /dev/null
+++ b/SSG_Automation_Solution/Properties/Resources.Designer.cs
@@ -0,0 +1,73 @@
+//------------------------------------------------------------------------------
+//
+// 이 코드는 도구를 사용하여 생성되었습니다.
+// 런타임 버전:4.0.30319.42000
+//
+// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
+// 이러한 변경 내용이 손실됩니다.
+//
+//------------------------------------------------------------------------------
+
+namespace SSG_Automation_Solution.Properties {
+ using System;
+
+
+ ///
+ /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
+ ///
+ // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
+ // 클래스에서 자동으로 생성되었습니다.
+ // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을
+ // 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SSG_Automation_Solution.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
+ /// 재정의합니다.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
+ ///
+ internal static System.Drawing.Bitmap no_image_icon_23494 {
+ get {
+ object obj = ResourceManager.GetObject("no-image-icon-23494", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+ }
+}
diff --git a/SSG_Automation_Solution/Properties/Resources.resx b/SSG_Automation_Solution/Properties/Resources.resx
new file mode 100644
index 0000000..7aba6cb
--- /dev/null
+++ b/SSG_Automation_Solution/Properties/Resources.resx
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ ..\Resources\no-image-icon-23494.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
\ No newline at end of file
diff --git a/SSG_Automation_Solution/Properties/Settings.Designer.cs b/SSG_Automation_Solution/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..0af0bf9
--- /dev/null
+++ b/SSG_Automation_Solution/Properties/Settings.Designer.cs
@@ -0,0 +1,29 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+
+namespace SSG_Automation_Solution.Properties
+{
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/SSG_Automation_Solution/Properties/Settings.settings b/SSG_Automation_Solution/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/SSG_Automation_Solution/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/SSG_Automation_Solution/Properties/licenses.licx b/SSG_Automation_Solution/Properties/licenses.licx
new file mode 100644
index 0000000..e7edcb1
--- /dev/null
+++ b/SSG_Automation_Solution/Properties/licenses.licx
@@ -0,0 +1,11 @@
+DevExpress.XtraEditors.ImageComboBoxEdit, DevExpress.XtraEditors.v20.2, Version=20.2.10.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v20.2, Version=20.2.10.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.2, Version=20.2.10.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraRichEdit.RichEditControl, DevExpress.XtraRichEdit.v20.2, Version=20.2.10.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.DateEdit, DevExpress.XtraEditors.v20.2, Version=20.2.10.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v20.2, Version=20.2.10.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v20.2, Version=20.2.10.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraBars.Docking2010.DocumentManager, DevExpress.XtraBars.v20.2, Version=20.2.10.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v20.2, Version=20.2.10.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraGauges.Win.GaugeControl, DevExpress.XtraGauges.v20.2.Win, Version=20.2.10.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v20.2, Version=20.2.10.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
diff --git a/SSG_Automation_Solution/Resources/no-image-icon-23494.png b/SSG_Automation_Solution/Resources/no-image-icon-23494.png
new file mode 100644
index 0000000..b6ffa81
Binary files /dev/null and b/SSG_Automation_Solution/Resources/no-image-icon-23494.png differ
diff --git a/SSG_Automation_Solution/SSG_Automation_Solution.csproj b/SSG_Automation_Solution/SSG_Automation_Solution.csproj
new file mode 100644
index 0000000..caf9511
--- /dev/null
+++ b/SSG_Automation_Solution/SSG_Automation_Solution.csproj
@@ -0,0 +1,184 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {2D212A21-573E-4C84-9ABA-A559D0878BE9}
+ WinExe
+ SSG_Automation_Solution
+ SSG_Automation_Solution
+ v4.7.2
+ 512
+ true
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+ ssg.ico
+
+
+
+ ..\packages\DevExpress.Data.Desktop.20.2.10\lib\net452\DevExpress.Data.Desktop.v20.2.dll
+
+
+ ..\packages\DevExpress.Data.20.2.10\lib\net452\DevExpress.Data.v20.2.dll
+
+
+
+ ..\packages\DevExpress.Office.Core.20.2.10\lib\net452\DevExpress.Office.v20.2.Core.dll
+
+
+ ..\packages\DevExpress.Pdf.Core.20.2.10\lib\net452\DevExpress.Pdf.v20.2.Core.dll
+
+
+ ..\packages\DevExpress.Pdf.Drawing.20.2.10\lib\net452\DevExpress.Pdf.v20.2.Drawing.dll
+
+
+ ..\packages\DevExpress.Printing.Core.20.2.10\lib\net452\DevExpress.Printing.v20.2.Core.dll
+
+
+ ..\packages\DevExpress.RichEdit.Core.20.2.10\lib\net452\DevExpress.RichEdit.v20.2.Core.dll
+
+
+ ..\packages\DevExpress.Sparkline.Core.20.2.10\lib\net452\DevExpress.Sparkline.v20.2.Core.dll
+
+
+ ..\packages\DevExpress.Utils.20.2.10\lib\net452\DevExpress.Utils.v20.2.dll
+
+
+ ..\packages\DevExpress.Win.Navigation.20.2.10\lib\net452\DevExpress.XtraBars.v20.2.dll
+
+
+ ..\packages\DevExpress.Win.Navigation.20.2.10\lib\net452\DevExpress.XtraEditors.v20.2.dll
+
+
+ ..\packages\DevExpress.Gauges.Core.20.2.10\lib\net452\DevExpress.XtraGauges.v20.2.Core.dll
+
+
+ ..\packages\DevExpress.Win.Gauges.20.2.10\lib\net452\DevExpress.XtraGauges.v20.2.Presets.dll
+
+
+ ..\packages\DevExpress.Win.Gauges.20.2.10\lib\net452\DevExpress.XtraGauges.v20.2.Win.dll
+
+
+
+ ..\packages\DevExpress.Win.Navigation.20.2.10\lib\net452\DevExpress.XtraLayout.v20.2.dll
+
+
+ ..\packages\DevExpress.Win.Printing.20.2.10\lib\net452\DevExpress.XtraPrinting.v20.2.dll
+
+
+
+
+
+
+ ..\packages\DevExpress.Win.TreeList.20.2.10\lib\net452\DevExpress.XtraTreeList.v20.2.dll
+
+
+ ..\..\..\..\..\..\K3DAsyncEngine\Bin\x64\C#\Interop.K3DAsyncEngineLib.dll
+ True
+
+
+ ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ LoginForm.cs
+
+
+ Form
+
+
+ MainForm.cs
+
+
+
+
+
+
+
+
+ LoginForm.cs
+
+
+ MainForm.cs
+
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+ True
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SSG_Automation_Solution/SSG_Automation_Solution.zip b/SSG_Automation_Solution/SSG_Automation_Solution.zip
new file mode 100644
index 0000000..912cb90
Binary files /dev/null and b/SSG_Automation_Solution/SSG_Automation_Solution.zip differ
diff --git a/SSG_Automation_Solution/SyncManager.cs b/SSG_Automation_Solution/SyncManager.cs
new file mode 100644
index 0000000..bd29ac3
--- /dev/null
+++ b/SSG_Automation_Solution/SyncManager.cs
@@ -0,0 +1,510 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Net.Http;
+using System.Security.Cryptography;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+using SSG_Automation_Solution.Data;
+
+public class FileInfoResponse
+{
+ public bool Exists { get; set; }
+ public long FileSize { get; set; }
+ public DateTime? LastModified { get; set; }
+ public string FileHash { get; set; } // 파일의 SHA-256 해시 값
+}
+
+public class SyncManager
+{
+ private static readonly string ApiBaseUrl = "http://" + DBInfo.getInstance().DBIP + ":60031/api/sync";
+ private static readonly string LocalPath = Environment.CurrentDirectory + @"\Data";
+ private string UserId { get; set; }
+ TimeSpan timeGap = new TimeSpan(0);
+
+ public void setTimeGap(TimeSpan span)
+ {
+ timeGap = span;
+ }
+
+ public SyncManager(string userId)
+ {
+ UserId = userId;
+ }
+
+ public async Task GetIsModifyingAsync()
+ {
+ using (HttpClient client = new HttpClient())
+ {
+ try
+ {
+ HttpResponseMessage response = await client.GetAsync($"{ApiBaseUrl}/modifying-status?userId={UserId}");
+ if (response.IsSuccessStatusCode)
+ {
+ var result = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
+ return result.isModifying;
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"서버 상태 조회 실패: {ex.Message}");
+ }
+ return false; // 기본값 반환
+ }
+ }
+
+ public async Task SetIsModifyingAsync(bool status)
+ {
+ using (HttpClient client = new HttpClient())
+ {
+ try
+ {
+ string jsonContent = JsonConvert.SerializeObject(status);
+ var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
+
+ HttpResponseMessage response = await client.PostAsync($"{ApiBaseUrl}/set-modifying?userId={UserId}", content);
+
+ if (response.IsSuccessStatusCode)
+ {
+ Console.WriteLine($"서버 isModifying 상태 변경: {status}");
+ }
+ else
+ {
+ Console.WriteLine($"서버 상태 변경 실패: {response.ReasonPhrase}");
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"서버 상태 변경 요청 중 오류 발생: {ex.Message}");
+ }
+ }
+ }
+
+ ///
+ /// 단일 파일 동기화 (Groups.json, scenelist.json, 또는 scheduleData/*.json)
+ ///
+ /// 로컬 파일 경로 (예: Data\\Groups.json)
+ /// 서버에서 사용할 파일 이름 (예: Groups.json, scheduleData\\False_20250130.json)
+ public async Task SyncFileAsync(string localFilePath, string fileNameOnServer)
+ {
+ bool isScheduleFile = fileNameOnServer.StartsWith("scheduleData");
+ bool localExists = File.Exists(localFilePath);
+ bool localHasSongChul = true;
+
+ if (isScheduleFile && localExists)
+ {
+ string localContent = File.ReadAllText(localFilePath);
+ if (!localContent.Contains("\"scheduleType\":\"송출\""))
+ {
+ localHasSongChul = false;
+ }
+ }
+
+ var serverInfo = await GetServerFileInfo(fileNameOnServer);
+ bool serverExists = (serverInfo != null);
+
+ if (isScheduleFile)
+ {
+ if (!localHasSongChul) localExists = false;
+ if (!serverExists && !localExists)
+ {
+ return 0;
+ }
+ }
+ else
+ {
+ if (!serverExists && !localExists)
+ {
+ return 0;
+ }
+ }
+
+ if (serverExists && localExists)
+ {
+ var localInfo = new FileInfo(localFilePath);
+ long localSize = localInfo.Length;
+ DateTime localTime = localInfo.LastWriteTimeUtc;
+ string localHash = ComputeLocalFileHash(localFilePath);
+
+ long serverSize = serverInfo.FileSize;
+ DateTime serverTime = serverInfo.LastModified ?? DateTime.MinValue;
+ string serverHash = serverInfo.FileHash;
+
+ if (localInfo.FullName.Contains("sceneList0"))
+ {
+ Console.WriteLine($"Local: size={localSize}, time={localTime}, hash={localHash}");
+ Console.WriteLine($"Server: size={serverSize}, time={serverTime}, hash={serverHash}");
+ }
+
+ if (localHash == serverHash)
+ {
+ return 0;
+ }
+
+ if (localTime > serverTime)
+ {
+ await UploadRawJsonFile(localFilePath, fileNameOnServer);
+ return 0;
+ }
+ else
+ {
+ await DownloadRawJsonFile(localFilePath, fileNameOnServer);
+ if (fileNameOnServer.Contains("Groups.json")) return 1;
+ else if (fileNameOnServer.Contains("scenelist.json")) return 2;
+ else return 3;
+ }
+ }
+ else if (serverExists && !localExists)
+ {
+ await DownloadRawJsonFile(localFilePath, fileNameOnServer);
+ if (fileNameOnServer.Contains("Groups.json")) return 1;
+ else if (fileNameOnServer.Contains("scenelist.json")) return 2;
+ else return 3;
+ }
+ else if (!serverExists && localExists)
+ {
+ await UploadRawJsonFile(localFilePath, fileNameOnServer);
+ return 0;
+ }
+ return 0;
+ }
+
+ ///
+ /// 서버 파일 정보 조회: fileName => { Exists, FileSize, LastModified, FileHash }
+ ///
+ private async Task GetServerFileInfo(string fileName)
+ {
+ using (HttpClient client = new HttpClient())
+ {
+ string url = $"{ApiBaseUrl}/fileinfo?fileName={fileName}&userId={UserId}";
+ HttpResponseMessage response = await client.GetAsync(url);
+ if (!response.IsSuccessStatusCode)
+ {
+ return null;
+ }
+
+ string json = await response.Content.ReadAsStringAsync();
+ if (string.IsNullOrWhiteSpace(json))
+ {
+ return null;
+ }
+
+ return JsonConvert.DeserializeObject(json);
+ }
+ }
+
+ private string ComputeLocalFileHash(string filePath)
+ {
+ if (!File.Exists(filePath))
+ return null;
+
+ using (var sha256 = SHA256.Create())
+ using (var stream = File.OpenRead(filePath))
+ {
+ byte[] hashBytes = sha256.ComputeHash(stream);
+ return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
+ }
+ }
+
+ private async Task GetServerFileHash(HttpClient client, string serverFilePath, string userId)
+ {
+ try
+ {
+ string requestUrl = $"{ApiBaseUrl}/file-hash?file={serverFilePath}&userId={userId}";
+ HttpResponseMessage response = await client.GetAsync(requestUrl);
+
+ if (response.IsSuccessStatusCode)
+ {
+ var result = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
+ return result.Hash;
+ }
+ else
+ {
+ Console.WriteLine($"⚠ 서버 해시 요청 실패: {serverFilePath} - {response.ReasonPhrase}");
+ return null;
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"⚠ 서버 해시 조회 중 예외 발생: {ex.Message}");
+ return null;
+ }
+ }
+
+ ///
+ /// 로컬 -> 서버 (Raw JSON) 업로드
+ ///
+ private async Task UploadRawJsonFile(string localFilePath, string fileNameOnServer)
+ {
+ using (HttpClient client = new HttpClient())
+ {
+ if (!File.Exists(localFilePath))
+ {
+ Console.WriteLine($"❌ 업로드할 파일이 존재하지 않음: {localFilePath}");
+ return;
+ }
+
+ // 1️⃣ 서버에서 해당 파일의 해시값 가져오기
+ string serverHash = await GetServerFileHash(client, fileNameOnServer, UserId);
+ string localHash = ComputeLocalFileHash(localFilePath);
+
+ if (serverHash != null && serverHash == localHash)
+ {
+ Console.WriteLine($"✅ 파일이 동일하므로 업로드 생략: {localFilePath}");
+ return;
+ }
+
+ using (var form = new MultipartFormDataContent())
+ {
+ byte[] fileBytes = File.ReadAllBytes(localFilePath);
+ var fileContent = new ByteArrayContent(fileBytes);
+ fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
+
+ form.Add(fileContent, "file", Path.GetFileName(localFilePath));
+
+ string requestUrl = $"{ApiBaseUrl}/upload-file?file={fileNameOnServer}&userId={UserId}";
+ HttpResponseMessage response = await client.PostAsync(requestUrl, form);
+
+ if (response.IsSuccessStatusCode)
+ {
+ Console.WriteLine($"✅ 업로드 성공: {localFilePath} => {fileNameOnServer}");
+ }
+ else
+ {
+ string errorMessage = await response.Content.ReadAsStringAsync();
+ Console.WriteLine($"❌ 업로드 실패: {localFilePath} - {response.ReasonPhrase}");
+ Console.WriteLine(errorMessage);
+ }
+ }
+ }
+ }
+
+ ///
+ /// 서버 -> 로컬 (Raw JSON) 다운로드
+ ///
+ private async Task DownloadRawJsonFile(string localPath, string fileNameOnServer)
+ {
+ using (HttpClient client = new HttpClient())
+ {
+ // 1️⃣ 서버에서 해당 파일의 해시값 가져오기
+ string serverHash = await GetServerFileHash(client, fileNameOnServer, UserId);
+ string localHash = ComputeLocalFileHash(localPath);
+
+ if (serverHash != null && serverHash == localHash)
+ {
+ Console.WriteLine($"✅ 파일이 동일하므로 다운로드 생략: {fileNameOnServer}");
+ return;
+ }
+
+ string requestUrl = $"{ApiBaseUrl}/download-file?file={fileNameOnServer}&userId={UserId}";
+ HttpResponseMessage response = await client.GetAsync(requestUrl);
+
+ if (response.IsSuccessStatusCode)
+ {
+ byte[] fileData = await response.Content.ReadAsByteArrayAsync();
+ File.WriteAllBytes(localPath, fileData);
+
+ Console.WriteLine($"✅ 다운로드 성공: {fileNameOnServer} => {localPath}");
+ }
+ else
+ {
+ Console.WriteLine($"❌ 다운로드 실패: {fileNameOnServer} - {response.ReasonPhrase}");
+ }
+ }
+ }
+
+ //────────────────────────────────────────────────────────────
+ // 아래부터 신규 추가: 단순 파일 업로드/다운로드 API (1~5 폴더)
+ //────────────────────────────────────────────────────────────
+
+ ///
+ /// 로컬 파일을 서버의 지정된 폴더(1~5)에 업로드합니다.
+ /// API 엔드포인트: POST {ApiBaseUrl}/upload-simple-file/{folderId}?userId={UserId}
+ ///
+ public async Task UploadSimpleFileAsync(string localFilePath, int folderId)
+ {
+ if (!File.Exists(localFilePath))
+ {
+ Console.WriteLine($"업로드할 파일이 존재하지 않습니다: {localFilePath}");
+ return 1;
+ }
+
+ using (HttpClient client = new HttpClient())
+ {
+ using (var form = new MultipartFormDataContent())
+ {
+ byte[] fileBytes = File.ReadAllBytes(localFilePath);
+ var fileContent = new ByteArrayContent(fileBytes);
+ fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
+ form.Add(fileContent, "file", Path.GetFileName(localFilePath));
+
+ string requestUrl = $"{ApiBaseUrl}/upload-simple-file/{folderId}?userId={UserId}";
+ HttpResponseMessage response = await client.PostAsync(requestUrl, form);
+
+ if (response.IsSuccessStatusCode)
+ {
+ Console.WriteLine($"✅ 단순 파일 업로드 성공: {localFilePath} => 폴더 {folderId}");
+
+ return 0;
+ }
+ else
+ {
+ string errorMsg = await response.Content.ReadAsStringAsync();
+ Console.WriteLine($"❌ 단순 파일 업로드 실패: {localFilePath} - {response.ReasonPhrase}\n{errorMsg}");
+ return 1;
+ }
+ }
+ }
+ }
+
+ ///
+ /// 서버의 지정된 폴더(1~5)에서 파일을 다운로드합니다.
+ /// API 엔드포인트: GET {ApiBaseUrl}/download-simple-file/{folderId}/{fileName}?userId={UserId}
+ /// 다운로드한 파일은 localFilePath에 저장됩니다.
+ ///
+ public async Task DownloadSimpleFileAsync(string fileName, int folderId, string localFilePath)
+ {
+ using (HttpClient client = new HttpClient())
+ {
+ string requestUrl = $"{ApiBaseUrl}/download-simple-file/{folderId}/{fileName}?userId={UserId}";
+ HttpResponseMessage response = await client.GetAsync(requestUrl);
+ if (response.IsSuccessStatusCode)
+ {
+ byte[] fileData = await response.Content.ReadAsByteArrayAsync();
+ File.WriteAllBytes(localFilePath, fileData);
+ Console.WriteLine($"✅ 단순 파일 다운로드 성공: {fileName} (폴더 {folderId}) => {localFilePath}");
+
+ return 0;
+ }
+ else
+ {
+ Console.WriteLine($"❌ 단순 파일 다운로드 실패: {fileName} (폴더 {folderId}) - {response.ReasonPhrase}");
+ return 1;
+ }
+ }
+ }
+ //────────────────────────────────────────────────────────────
+ // 기존 Thumbnail 및 기타 동기화 관련 메서드들은 그대로 유지
+ //────────────────────────────────────────────────────────────
+
+ #region Thumbnail Upload and DownLoad
+
+ private static readonly string ThumbnailFolder = Path.Combine(Environment.CurrentDirectory, "Thumbnail");
+
+ public async Task UploadThumbnailAsync(string filePath)
+ {
+ using (HttpClient client = new HttpClient())
+ {
+ if (!File.Exists(filePath))
+ {
+ Console.WriteLine($"업로드할 썸네일이 존재하지 않습니다: {filePath}");
+ return;
+ }
+
+ string fileName = Path.GetFileName(filePath);
+ string requestUrl = $"{ApiBaseUrl}/upload-thumbnail?userId={UserId}";
+
+ using (var form = new MultipartFormDataContent())
+ {
+ var fileContent = new ByteArrayContent(File.ReadAllBytes(filePath));
+ fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/png");
+ form.Add(fileContent, "file", fileName);
+
+ HttpResponseMessage response = await client.PostAsync(requestUrl, form);
+ if (response.IsSuccessStatusCode)
+ {
+ Console.WriteLine($"썸네일 업로드 성공: {fileName}");
+ }
+ else
+ {
+ Console.WriteLine($"썸네일 업로드 실패: {fileName} - {response.ReasonPhrase}");
+ }
+ }
+ }
+ }
+
+ public async Task SyncThumbnailsAsync()
+ {
+ if (!Directory.Exists(ThumbnailFolder))
+ {
+ Directory.CreateDirectory(ThumbnailFolder);
+ }
+
+ string[] localThumbnails = Directory.GetFiles(ThumbnailFolder, "*.png")
+ .Select(Path.GetFileName)
+ .ToArray();
+
+ List serverThumbnails = await GetServerThumbnailsAsync();
+
+ foreach (var localFile in localThumbnails)
+ {
+ if (!serverThumbnails.Contains(localFile))
+ {
+ Console.WriteLine($"서버에 없는 썸네일 발견. 업로드 시도: {localFile}");
+ await UploadThumbnailAsync(Path.Combine(ThumbnailFolder, localFile));
+ }
+ }
+
+ foreach (var serverFile in serverThumbnails)
+ {
+ if (!localThumbnails.Contains(serverFile))
+ {
+ Console.WriteLine($"클라이언트에 없는 썸네일 발견. 다운로드 시도: {serverFile}");
+ await DownloadThumbnailAsync(serverFile);
+ }
+ }
+ }
+
+ private string ComputeFileHash(string filePath)
+ {
+ using (var sha256 = SHA256.Create())
+ using (var stream = File.OpenRead(filePath))
+ {
+ byte[] hashBytes = sha256.ComputeHash(stream);
+ return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
+ }
+ }
+
+ public async Task> GetServerThumbnailsAsync()
+ {
+ using (HttpClient client = new HttpClient())
+ {
+ string requestUrl = $"{ApiBaseUrl}/list-thumbnails?userId={UserId}";
+ HttpResponseMessage response = await client.GetAsync(requestUrl);
+
+ if (!response.IsSuccessStatusCode)
+ {
+ Console.WriteLine("서버의 썸네일 목록을 가져오는 데 실패했습니다.");
+ return new List();
+ }
+
+ string jsonResponse = await response.Content.ReadAsStringAsync();
+ return JsonConvert.DeserializeObject>(jsonResponse);
+ }
+ }
+
+ public async Task DownloadThumbnailAsync(string fileName)
+ {
+ using (HttpClient client = new HttpClient())
+ {
+ string requestUrl = $"{ApiBaseUrl}/download-thumbnail?fileName={fileName}&userId={UserId}";
+ HttpResponseMessage response = await client.GetAsync(requestUrl);
+
+ if (response.IsSuccessStatusCode)
+ {
+ byte[] imageData = await response.Content.ReadAsByteArrayAsync();
+ string localFilePath = Path.Combine(ThumbnailFolder, fileName);
+ File.WriteAllBytes(localFilePath, imageData);
+ Console.WriteLine($"썸네일 다운로드 성공: {localFilePath}");
+ }
+ else
+ {
+ Console.WriteLine($"썸네일 다운로드 실패: {fileName} - {response.ReasonPhrase}");
+ }
+ }
+ }
+
+ #endregion
+}
diff --git a/SSG_Automation_Solution/Tornado/K3DEventHandler.cs b/SSG_Automation_Solution/Tornado/K3DEventHandler.cs
new file mode 100644
index 0000000..a5946ec
--- /dev/null
+++ b/SSG_Automation_Solution/Tornado/K3DEventHandler.cs
@@ -0,0 +1,24 @@
+using SSG_Automation_Solution.Design.Forms;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SSG_Automation_Solution.Tornado
+{
+ public class K3DEventHandler : K3DEventHandlerBase
+ {
+ public MainForm mainForm;
+
+ public K3DEventHandler(MainForm _mainForm)
+ {
+ mainForm = _mainForm;
+ }
+
+ public override void OnLogMessage(string LogMessage)
+ {
+ mainForm.OnLogMessage(LogMessage);
+ }
+ }
+}
diff --git a/SSG_Automation_Solution/Tornado/K3DEventHandlerBase.cs b/SSG_Automation_Solution/Tornado/K3DEventHandlerBase.cs
new file mode 100644
index 0000000..685d688
--- /dev/null
+++ b/SSG_Automation_Solution/Tornado/K3DEventHandlerBase.cs
@@ -0,0 +1,663 @@
+using K3DAsyncEngineLib;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SSG_Automation_Solution.Tornado
+{
+ public class K3DEventHandlerBase : KAEventHandler
+ {
+ virtual public void OnAddPause(int bSuccess, string SceneName, int AnimationType, int FrameNo, int Delay, int bAuto) { }
+
+ virtual public void OnAddPauseByName(int bSuccess, string SceneName, string AnimationName, int FrameNo, int Delay, int bAuto) { }
+
+ virtual public void OnAddText(int bSuccess, string ObjectName, string Text, int StyleNo) { }
+
+ virtual public void OnBeginTransaction(int iSuccess) { }
+
+ virtual public void OnDeletePause(int bSuccess, string SceneName, int AnimationType, int FrameNo, int bAll) { }
+
+ virtual public void OnDeletePauseByName(int bSuccess, string SceneName, string AnimationName, int FrameNo, int bAll) { }
+
+ virtual public void OnEditText(int bSuccess, string ObjectName, string Text, int BeginPos, int EndPos, int StyleNo) { }
+
+ virtual public void OnEndTransaction(int iSuccess) { }
+
+ virtual public void OnHeartBeat(int bSuccess) { }
+
+ virtual public void OnHello() { }
+
+ virtual public void OnClose(int ErrorCode) { }
+
+ virtual public void OnLoadProject(int bSuccess, KAScene pScene, int TotalCount) { }
+
+ virtual public void OnCloseProject(int bSuccess, string AliasName) { }
+
+ virtual public void OnSelectProject(int bSuccess, string AliasName) { }
+
+ virtual public void OnLoadScene(int bSuccess, string SceneName) { }
+
+ virtual public void OnLoadSceneForce(int bSuccess, string SceneName) { }
+
+ virtual public void OnLogMessage(string LogMessage) { }
+
+ virtual public void OnMessageNo(uint MessageNo) { }
+
+ virtual public void OnPause(int bSuccess, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnPlay(int bSuccess, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnPlayOut(int bSuccess, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnQueryAnimationCount(int bSuccess, string SceneName, int AnimationCount) { }
+
+ virtual public void OnQueryAnimationNames(int bSuccess, string SceneName, int Index, int TotalCount, string pAnimationName) { }
+
+ virtual public void OnQueryChartDataTable(int bSuccess, string ObjectName, int Index, int TotalCount, ref sKChartDataTable Param) { }
+
+ virtual public void OnQueryChartObjects(int bSuccess, string SceneName, int Index, int TotalCount, ref sKChart Param) { }
+
+ virtual public void OnQueryClassType(int bSuccess, string ObjectName, int ClassType) { }
+
+ virtual public void OnQueryIsOnAir(int bSuccess, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnQueryLightNames(int bSuccess, string SceneName, int Index, int TotalCount, string pLightName) { }
+
+ virtual public void OnQueryObjectAttribute(int bSuccess, string ObjectName, ref sKObjectAttribute pKObjectAttribute) { }
+
+ virtual public void OnQuerySceneEffectType(int bSuccess, string SceneName, int bInEffect, eKSceneEffectType EffectType, int Duration) { }
+
+ virtual public void OnQuerySize(int bSuccess, string ObjectName, float Width, float Height, float Depth) { }
+
+ virtual public void OnQueryVariables(int bSuccess, string SceneName, int Index, int TotalCount, ref sKVariable Param) { }
+
+ virtual public void OnReloadScene(int bSuccess, string FileName, string SceneName) { }
+
+ virtual public void OnReplaceWithAFile(int bSuccess, string ObjectName, string ReplaceFileName) { }
+
+ virtual public void OnResume(int bSuccess, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnRollbackTransaction(int iSuccess) { }
+
+ virtual public void OnSaveImageFile(int bSuccess, string SceneName, int Width, int Height, int Frame, string ImagePathName) { }
+
+ virtual public void OnDownloadThumbnail(int bSuccess, string SceneName, int Width, int Height, int Frame, string ImagePathName) { }
+
+ virtual public void OnSaveScene(int bSuccess, string SceneName, string K3SFileName, int UseCollect) { }
+
+ virtual public void OnScenePaused(int bSuccess, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnScenePlayed(int bSuccess, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnSceneAnimationPlayed(int bSuccess, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnScenePrepare(int bSuccess, string SceneName, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnScenePrepareEx(int bSuccess, string SceneName, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnSetBackground(int bSuccess, string SceneName, ref sKBackground Param) { }
+
+ virtual public void OnSetBackgroundPauseAtZeroFrameAsStandBy(int bSuccess, string SceneName, int bPause) { }
+
+ virtual public void OnSetBackgroundFill(int bSuccess, string SceneName, int R, int G, int B, int A) { }
+
+ virtual public void OnSetBackgroundTexture(int bSuccess, string SceneName, string TextureFileName) { }
+
+ virtual public void OnSetBackgroundVideo(int bSuccess, string SceneName, string VideoFileName, int LoopCount, int LoopInfinite) { }
+
+ virtual public void OnSetBackgroundLiveIn(int bSuccess, string SceneName, int InputChannel) { }
+
+ virtual public void OnUseBackground(int bSuccess, string SceneName, int Use) { }
+
+ virtual public void OnSetChangeOut(int bSuccess, string SceneName) { }
+
+ virtual public void OnSetChartCellData(int bSuccess, string ObjectName, float Value) { }
+
+ virtual public void OnSetChartCSVFile(int bSuccess, string ObjectName, string FilePath) { }
+
+ virtual public void OnSetCircleAngleKey(int bSuccess, string ObjectName, int KeyIndex, float Start, float End) { }
+
+ virtual public void OnSetCountDown(int bSuccess, string ObjectName, float Second) { }
+
+ virtual public void OnSetCounterNumberKey(int bSuccess, string ObjectName, int KeyIndex, double Number) { }
+
+ virtual public void OnSetCropKey(int bSuccess, string ObjectName, int KeyIndex, float Left, float Top, float Right, float Bottom) { }
+
+ virtual public void OnSetCylinderAngleKey(int bSuccess, string ObjectName, int KeyIndex, float Start, float End) { }
+
+ virtual public void OnSetEdgeAttribute(int bSuccess, string ObjectName, ref sKEdgeAttribute Param) { }
+
+ virtual public void OnSetFaceAttribute(int bSuccess, string ObjectName, ref sKFaceAttribute Param) { }
+
+ virtual public void OnSetFont(int bSuccess, string ObjectName, ref sKFont Param) { }
+
+ virtual public void OnSetLightAttribute(int bSuccess, string SceneName, string LightName, ref sKLightAttribute Param) { }
+
+ virtual public void OnSetLightColor(int bSuccess, string SceneName, string LightName, ref sKLightColor Param) { }
+
+ virtual public void OnSetMaterial(int bSuccess, string ObjectName, ref sKMaterial pKMaterial) { }
+
+ virtual public void OnSetMaterialKey(int bSuccess, string ObjectName, int KeyIndex, ref sKMaterial pKMaterial) { }
+
+ virtual public void OnSetLensFlaresKey(int bSuccess, string ObjectName, int KeyIndex, float X, float Y, float Z) { }
+
+ virtual public void OnSetObjectAttribute(int bSuccess, string ObjectName, ref sKObjectAttribute pKObjectAttribute) { }
+
+ virtual public void OnSetPosition(int bSuccess, string ObjectName, float X, float Y, float Z) { }
+
+ virtual public void OnSetPositionKey(int bSuccess, string ObjectName, int KeyIndex, float X, float Y, float Z) { }
+
+ virtual public void OnSetRotation(int bSuccess, string ObjectName, float X, float Y, float Z) { }
+
+ virtual public void OnSetRotationKey(int bSuccess, string ObjectName, int KeyIndex, float X, float Y, float Z) { }
+
+ virtual public void OnSetScale(int bSuccess, string ObjectName, float X, float Y, float Z) { }
+
+ virtual public void OnSetScaleKey(int bSuccess, string ObjectName, int KeyIndex, float X, float Y, float Z) { }
+
+ virtual public void OnSetEffectType(int bSuccess, string SceneName, int bInEffect, eKSceneEffectType EffectType, int Duration) { }
+
+ virtual public void OnSetShadowAttribute(int bSuccess, string ObjectName, ref sKShadowAttribute Param) { }
+
+ virtual public void OnSetSize(int bSuccess, string ObjectName, float Width, float Height, float Depth) { }
+
+ virtual public void OnSetSphereAngleKey(int bSuccess, string ObjectName, int KeyIndex, float Start, float End) { }
+
+ virtual public void OnSetStyleColor(int bSuccess, string ObjectName, ref sKStyleColor Param) { }
+
+ virtual public void OnSetFaceColor(int bSuccess, string ObjectName, int R, int G, int B, int A) { }
+
+ virtual public void OnSetEdgeColor(int bSuccess, string ObjectName, int R, int G, int B, int A) { }
+
+ virtual public void OnSetShadowColor(int bSuccess, string ObjectName, int R, int G, int B, int A) { }
+
+ virtual public void OnSetFaceTextColor(int bSuccess, string ObjectName, int BeginPos, int Count, int R, int G, int B, int A) { }
+
+ virtual public void OnSetEdgeTextColor(int bSuccess, string ObjectName, int BeginPos, int Count, int R, int G, int B, int A) { }
+
+ virtual public void OnSetShadowTextColor(int bSuccess, string ObjectName, int BeginPos, int Count, int R, int G, int B, int A) { }
+
+ virtual public void OnSetTextStyle(int bSuccess, string ObjectName, int Begin, int Count, int StyleNo) { }
+
+ virtual public void OnSetValue(int bSuccess, string ObjectName, string Value) { }
+
+ virtual public void OnSetTextTexture(int bSuccess, string ObjectName, string FileName) { }
+
+ virtual public void OnSetStyleTexture(int bSuccess, string ObjectName, string FileName) { }
+
+ virtual public void OnSetDiffuseTexture(int bSuccess, string ObjectName, string FileName) { }
+
+ virtual public void OnSetSpecularTexture(int bSuccess, string ObjectName, string FileName) { }
+
+ virtual public void OnSetTransparencyTexture(int bSuccess, string ObjectName, string FileName) { }
+
+ virtual public void OnSetNormalTexture(int bSuccess, string ObjectName, string FileName) { }
+
+ virtual public void OnSetReflectionTexture(int bSuccess, string ObjectName, string FileName) { }
+
+ virtual public void OnSetRefractionTexture(int bSuccess, string ObjectName, string FileName) { }
+
+ virtual public void OnSetVisible(int bSuccess, string ObjectName, int bShow) { }
+
+ virtual public void OnStop(int bSuccess, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnStopAll(int iSuccess) { }
+
+ virtual public void OnStoreTextStyle(int bSuccess, string ObjectName, string Text, int StyleCount) { }
+
+ virtual public void OnTrigger(int bSuccess, int OutputChannelIndex, int LayerNo, int AnimationType) { }
+
+ virtual public void OnTriggerByName(int bSuccess, int OutputChannelIndex, int LayerNo, string AnimationName) { }
+
+ virtual public void OnTriggerObject(int bSuccess, string ObjectName, int OutputChannelIndex, int LayerNo, int AnimationType, int bWithChildren) { }
+
+ virtual public void OnTriggerObjectByName(int bSuccess, string ObjectName, int OutputChannelIndex, int LayerNo, string AnimationName, int bWithChildren) { }
+
+ virtual public void OnUnloadAll(int bSuccess) { }
+
+ virtual public void OnUnloadScene(int bSuccess, string SceneName) { }
+
+ virtual public void OnUpdateTextures(int bSuccess, string SceneName) { }
+
+ virtual public void OnAddPathPoint(int bSuccess, string ObjectName, int Count) { }
+
+ virtual public void OnClearPathPoints(int bSuccess, string ObjectName) { }
+
+ virtual public void OnAddPathShapePoint(int bSuccess, string ObjectName, int Count) { }
+
+ virtual public void OnClearPathShapePoints(int bSuccess, string ObjectName) { }
+
+ virtual public void OnQueryScrollRemainingDistance(int bSuccess, string ObjectName, int ScrollRemainingDistance) { }
+
+ virtual public void OnQueryScrollChildRemainingDistance(int bSuccess, string ObjectName, string ChildName, int ScrollRemainingDistance) { }
+
+ virtual public void OnAddScrollObject(int bSuccess, string ObjectName, string ChildName) { }
+
+ virtual public void OnSetVariableName(int bSuccess, string ObjectName, string VariableName) { }
+
+ virtual public void OnAdjustScrollSpeed(int bSuccess, string ObjectName, float SpeedDelta) { }
+
+ virtual public void OnSetScrollSpeed(int bSuccess, string ObjectName, float Speed) { }
+
+ virtual public void OnSetDiffuse(int bSuccess, string ObjectName, int R, int G, int B) { }
+
+ virtual public void OnSetAmbient(int bSuccess, string ObjectName, int R, int G, int B) { }
+
+ virtual public void OnSetSpecular(int bSuccess, string ObjectName, int R, int G, int B) { }
+
+ virtual public void OnSetEmissive(int bSuccess, string ObjectName, int R, int G, int B) { }
+
+ virtual public void OnSetOpacity(int bSuccess, string ObjectName, int Opacity) { }
+
+ virtual public void OnSetDiffuseKey(int bSuccess, string ObjectName, int KeyIndex, int R, int G, int B) { }
+
+ virtual public void OnSetAmbientKey(int bSuccess, string ObjectName, int KeyIndex, int R, int G, int B) { }
+
+ virtual public void OnSetSpecularKey(int bSuccess, string ObjectName, int KeyIndex, int R, int G, int B) { }
+
+ virtual public void OnSetEmissiveKey(int bSuccess, string ObjectName, int KeyIndex, int R, int G, int B) { }
+
+ virtual public void OnSetOpacityKey(int bSuccess, string ObjectName, int KeyIndex, int Opacity) { }
+
+ virtual public void OnSetLoftPositionKey(int bSuccess, string ObjectName, int KeyIndex, float Start, float End) { }
+
+ virtual public void OnModifyPathPoint(int bSuccess, string ObjectName, int Index, float X, float Y, float Z) { }
+
+ virtual public void OnSetVideoFrame(int bSuccess, string ObjectName, int StartFrame, int StopFrame) { }
+
+ virtual public void OnSetVideoRepeatInfo(int bSuccess, string ObjectName, int StartFrame, int StopFrame, int LoopCount, int bInfinite, int bPlayAsOut) { }
+
+ virtual public void OnSetTextStyleLibrary(int bSuccess, string ObjectName, string Text, int StyleID) { }
+
+ virtual public void OnAddTextStyleLibrary(int bSuccess, string ObjectName, string Text, int StyleID) { }
+
+ virtual public void OnInitScrollObject(int bSuccess, string ObjectName) { }
+
+ virtual public void OnSetCounterInfo(int bSuccess, string ObjectName, string Format, int UpdatePeriod, int bAddPlusSign) { }
+
+ virtual public void OnSetCounterNumber(int bSuccess, string ObjectName, double Number) { }
+
+ virtual public void OnSetCounterRange(int bSuccess, string ObjectName, double StartTime, double EndTime) { }
+
+ virtual public void OnSetCounterRemainingTime(int bSuccess, string ObjectName, double BaseTime) { }
+
+ virtual public void OnSetCounterElapsedTime(int bSuccess, string ObjectName, double BaseTime) { }
+
+ virtual public void OnSaveObjectImage(int bSuccess, string ObjectName, string FileName) { }
+
+ virtual public void OnSendMosMessage(int bSuccess, string MosMessage) { }
+
+ virtual public void OnReceiveFile(int bSuccess, string ExistingFileName, string NewFileName) { }
+
+ virtual public void OnAddObject(int bSuccess) { }
+
+ virtual public void OnAddCloneObject(int bSuccess, string SceneName, string NewVariable) { }
+
+ virtual public void OnSavePreviewImage(int bSuccess, string ImagePathName, int Width, int Height) { }
+
+ virtual public void OnNewProject(int bSuccess, string AliasName) { }
+
+ virtual public void OnQueryPickedObjects(int bSuccess, string SceneName, int index, int TotalCount, ref sKVariable Param) { }
+
+ virtual public void OnSetSceneDuration(int bSuccess, string SceneName, int AnimationType, int Duration) { }
+
+ virtual public void OnSetBackgroundChangeType(int bSuccess, string SceneName, eKBackgroundChangeType ChangeType) { }
+
+ virtual public void OnSetBackgroundPauseType(int bSuccess, string SceneName, eKBackgroundPauseType PauseType) { }
+
+ virtual public void OnDragObject(int bSuccess, string ObjectName, int X, int Y, int FrameCount) { }
+
+ virtual public void OnMoveCamera(int bSuccess, string ObjectName, int X, int Y, int Z, int FrameCount) { }
+
+ virtual public void OnResetDrag(int bSuccess, string ObjectName, int FrameCount) { }
+
+ virtual public void OnCreateStory(int bSuccess) { }
+
+ virtual public void OnInsertStory(int bSuccess) { }
+
+ virtual public void OnMoveStory(int bSuccess) { }
+
+ virtual public void OnSwapStory(int bSuccess) { }
+
+ virtual public void OnDeleteStory(int bSuccess) { }
+
+ virtual public void OnCreateItem(int bSuccess) { }
+
+ virtual public void OnPrepareItem(int bSuccess) { }
+
+ virtual public void OnSceneSaved(int bSuccess, string FileName) { }
+
+ virtual public void OnResumeBackground(int bSuccess, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnSetSceneScrollSpeed(int bSuccess, string SceneName, float Speed) { }
+
+ virtual public void OnCreateWithAFile(int bSuccess, string SceneName, string FileName, string VariableName) { }
+
+ virtual public void OnSetSceneAudioFile(int bSuccess, string SceneName, int AnimatiionType, string AudioFileName) { }
+
+ virtual public void OnSetScrollSpeedByScenePlayer(int bSuccess, int OutputChannelIndex, int LayerNo, float Speed) { }
+
+ virtual public void OnAdjustScrollSpeedByScenePlayer(int bSuccess, int OutputChannelIndex, int LayerNo, float SpeedDelta) { }
+
+ virtual public void OnEnableSceneAudio(int bSuccess, string SceneName, int AnimatiionType, int bEnable) { }
+
+ virtual public void OnInsertItem(int bSuccess) { }
+
+ virtual public void OnDeleteItem(int bSuccess) { }
+
+ virtual public void OnMoveItem(int bSuccess) { }
+
+ virtual public void OnSwapItem(int bSuccess) { }
+
+ virtual public void OnUpdateItems(int bSuccess) { }
+
+ virtual public void OnSetPositionOfPathAnimation(int bSuccess, string ObjectName, float Position) { }
+
+ virtual public void OnSetPositionKeyOfPathAnimation(int bSuccess, string ObjectName, int KeyIndex, float Position) { }
+
+ virtual public void OnUpdateThumbnail(int bSuccess, string SceneName) { }
+
+ virtual public void OnSetStyleItemTexture(int bSuccess, string ObjectName, eKStyleType ItemType, int ItemIndex, string FileName) { }
+
+ virtual public void OnSetKeyFrame(int bSuccess, eKObjectAttribute AttributeType, string ObjectName, int KeyIndex, int Frame, eKKeyFrameType KeyFrameType) { }
+
+ virtual public void OnSetKeyInterpolation(int bSuccess, eKObjectAttribute AttributeType, string ObjectName, int KeyIndex, eKKeyInterpolationType InInterpolation, eKKeyInterpolationType OutInterpolation) { }
+
+ virtual public void OnSetStartFrame(int bSuccess, string ObjectName, int Frame) { }
+
+ virtual public void OnStartVideoCapture(int bSuccess, string FilePath, int VideoCodec) { }
+
+ virtual public void OnStopVideoCapture(int bSuccess) { }
+
+ virtual public void OnCaptureImage(int bSuccess, string FilePath) { }
+
+ virtual public void OnAddAbsolutePause(int bSuccess, string SceneName, int AnimationType, int FrameNo, int Delay, int bAuto) { }
+
+ virtual public void OnResetTotalTime(int bSuccess, string SceneName, int AnimationType) { }
+
+ virtual public void OnSetTotalTime(int bSuccess, string SceneName, int AnimationType, int Frame) { }
+
+ virtual public void OnSetAnimationLibrary(int bSuccess, string ObjectName, int AnimationID, int bApplyAtCurrentPosition) { }
+
+ virtual public void OnSetMaterialLibrary(int bSuccess, string ObjectName, int MaterialID) { }
+
+ virtual public void OnSetStyleLibrary(int bSuccess, string ObjectName, int StyleID) { }
+
+ virtual public void OnSetObjectEffectType(int bSuccess, string ObjectName, int bInEffect, eKEffectType EffectType, int Duration) { }
+
+ virtual public void OnSetAnimationLibrary(int bSuccess, string ObjectName, string Name, int bApplyAtCurrentPosition) { }
+
+ virtual public void OnSetMaterialLibrary(int bSuccess, string ObjectName, string Name) { }
+
+ virtual public void OnSetStyleLibrary(int bSuccess, string ObjectName, string Name) { }
+
+ virtual public void OnLoadStyleLibrarys(int bSuccess, string LibraryPath) { }
+
+ virtual public void OnLoadAnimationLibrarys(int bSuccess, string LibraryPath) { }
+
+ virtual public void OnLoadMaterialLibrarys(int bSuccess, string LibraryPath) { }
+
+ virtual public void OnCheckVersion(int bSuccess, string ServerVersion, string SDKVersion) { }
+
+ virtual public void OnSetEffectNone(int bSuccess, string SceneName, string ObjectName, int bAppliedObjectEffect) { }
+
+ virtual public void OnSetEffectWipe(int bSuccess, string SceneName, string ObjectName, int bAppliedObjectEffect) { }
+
+ virtual public void OnSetEffectPush(int bSuccess, string SceneName, string ObjectName, int bAppliedObjectEffect) { }
+
+ virtual public void OnSetEffectTransform(int bSuccess, string SceneName, string ObjectName, int bAppliedObjectEffect) { }
+
+ virtual public void OnSetEffectCurl(int bSuccess, string SceneName, string ObjectName, int bAppliedObjectEffect) { }
+
+ virtual public void OnSetEffectRipple(int bSuccess, string SceneName, string ObjectName, int bAppliedObjectEffect) { }
+
+ virtual public void OnSetEffectParticle(int bSuccess, string SceneName, string ObjectName, int bAppliedObjectEffect) { }
+
+ virtual public void OnSetEffectFade(int bSuccess, string SceneName, string ObjectName, int bAppliedObjectEffect) { }
+
+ virtual public void OnSetEffectDistortion(int bSuccess, string SceneName, string ObjectName, int bAppliedObjectEffect) { }
+
+ virtual public void OnSetEffectBlink(int bSuccess, string SceneName, string ObjectName, int bAppliedObjectEffect) { }
+
+ virtual public void OnSetEffectCrop(int bSuccess, string SceneName, string ObjectName, int bAppliedObjectEffect) { }
+
+ virtual public void OnSetEffectBlur(int bSuccess, string SceneName, string ObjectName, int bAppliedObjectEffect) { }
+
+ virtual public void OnSetEffectColor(int bSuccess, string SceneName, string ObjectName, int bAppliedObjectEffect) { }
+
+ virtual public void OnSetEffectSidefade(int bSuccess, string SceneName, string ObjectName, int bAppliedObjectEffect) { }
+
+ virtual public void OnSetEffectCutOut(int bSuccess, string SceneName, string ObjectName, int bAppliedObjectEffect) { }
+
+ virtual public void OnSetSceneEffectType(int bSuccess, string SceneName, int bInEffect, eKSceneEffectType EffectType, int Duration) { }
+
+ virtual public void OnQueryGroupType(int bSuccess, string ObjectName, eKGroupType GroupType) { }
+
+ virtual public void OnQueryImageType(int bSuccess, string ObjectName, eKTextureTarget TextureTarget, eKImageType ImageType) { }
+
+ virtual public void OnSetDiffuseTextColor(int bSuccess, string ObjectName, int BeginPos, int Count, int R, int G, int B, int A) { }
+
+ virtual public void OnSetVideoPlayInfo(int bSuccess, string ObjectName, eKTextureTarget TextureTarget, ref sKVideoPlayInfo pVideoPlayInfo) { }
+
+ virtual public void OnQueryVideoPlayInfo(int bSuccess, string ObjectName, eKTextureTarget TextureTarget, ref sKVideoPlayInfo pVideoPlayInfo) { }
+
+ virtual public void OnQueryIs3D(int bSuccess, string ObjectName, int b3D) { }
+
+ //virtual public void OnAddScrollObject2(int bSuccess, string ObjectName, string ChildName, string VariableName) { }
+
+ virtual public void OnPlayDirect(int bSuccess, string SceneName, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnSetImageType(int bSuccess, string ObjectName, eKTextureTarget TextureTarget, eKImageType ImageType) { }
+
+ virtual public void OnCutIn(int bSuccess, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnCutOut(int bSuccess, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnClearNextPreview(int bSuccess, int OutputChannelIndex, int LayerNo) { }
+
+ virtual public void OnSetAudioOutput(int bSuccess, eKPlayAudioType PlayAudioType) { }
+
+ virtual public void OnSetMemo(int bSuccess, string ObjectName, string Memo) { }
+
+ virtual public void OnQueryMemo(int bSuccess, string ObjectName, string Memo) { }
+
+ virtual public void OnEnableMaterialItem(int bSuccess, string ObjectName, eKMaterialType Type, int bEnable) { }
+
+ virtual public void OnSetDiffuseColor(int bSuccess, string ObjectName, sKColor Color) { }
+
+ virtual public void OnSetDiffuseColorKey(int bSuccess, string ObjectName, int KeyIndex, sKColor Color) { }
+
+ virtual public void OnSetAmbientColor(int bSuccess, string ObjectName, sKColor Color) { }
+
+ virtual public void OnSetAmbientColorKey(int bSuccess, string ObjectName, int KeyIndex, sKColor Color) { }
+
+ virtual public void OnSetSpecularColor(int bSuccess, string ObjectName, sKColor Color) { }
+
+ virtual public void OnSetSpecularColorKey(int bSuccess, string ObjectName, int KeyIndex, sKColor Color) { }
+
+ virtual public void OnSetEmissiveColor(int bSuccess, string ObjectName, sKColor Color) { }
+
+ virtual public void OnSetEmissiveColorKey(int bSuccess, string ObjectName, int KeyIndex, sKColor Color) { }
+
+ virtual public void OnSetSpecularSharpness(int bSuccess, string ObjectName, float Sharpness) { }
+
+ virtual public void OnSetTransparencyOpacity(int bSuccess, string ObjectName, byte Opacity) { }
+
+ virtual public void OnSetMaterialTextureOffset(int bSuccess, string ObjectName, float x, float y) { }
+
+ virtual public void OnSetMaterialTextureOffsetKey(int bSuccess, string ObjectName, int KeyIndex, float x, float y) { }
+
+ virtual public void OnSetMaterialTextureTiling(int bSuccess, string ObjectName, float x, float y) { }
+
+ virtual public void OnSetMaterialTextureTilingKey(int bSuccess, string ObjectName, int KeyIndex, float x, float y) { }
+
+ virtual public void OnSetMaterialTextureRotation(int bSuccess, string ObjectName, float Degree) { }
+
+ virtual public void OnSetMaterialTextureRotationKey(int bSuccess, string ObjectName, int KeyIndex, float Degree) { }
+
+ virtual public void OnSetMaterialTextureType(int bSuccess, string ObjectName, eKTextureType Type) { }
+
+ virtual public void OnSetMaterialTextureFile(int bSuccess, string ObjectName, string FilePathName) { }
+
+ virtual public void OnSetMaterialTextureFilter(int bSuccess, string ObjectName, eKTextureFilter FilterType) { }
+
+ virtual public void OnSetMaterialTextureOpacity(int bSuccess, string ObjectName, byte Opacity) { }
+
+ virtual public void OnSetMaterialTextureBlending(int bSuccess, string ObjectName, eKTextureBlending BlendingType) { }
+
+ virtual public void OnSetMaterialTextureAddress(int bSuccess, string ObjectName, eKTextureAddress AddressType) { }
+
+ virtual public void OnSetTrialPlayMode(int bSuccess) { }
+
+ virtual public void OnQueryFont(int bSuccess, string ObjectName, ref sKFont Param) { }
+
+ virtual public void OnSetImageOriginalSize(int bSuccess, string SceneName, string ObjectName) { }
+
+ virtual public void OnApplyLibrary(int bSuccess, string SceneName, string ObjectName, string LibraryPath, eKEffectTarget EffectTarget) { }
+
+ virtual public void OnSetTableValue(int bSuccess, string SceneName, string ObjectName, int Row, int Column, string Value) { }
+
+ virtual public void OnSetTableColor(int bSuccess, string SceneName, string ObjectName, int Row, int Column, sKColor Color) { }
+
+ virtual public void OnQueryTableValue(int bSuccess, string SceneName, string ObjectName, int Row, int Column, string Value) { }
+
+ virtual public void OnQueryTableValues(int bSuccess, string SceneName, string ObjectName, int Index, int TotalCount, int Row, int Column, string Value) { }
+
+ virtual public void OnQueryPauseCount(int bSuccess, string SceneName, int AnimationType, int PauseCount) { }
+
+ virtual public void OnQueryPauseCountByName(int bSuccess, string SceneName, string AnimationName, int PauseCount) { }
+
+ virtual public void OnPlayRange(int bSuccess, int OutputChannelIndex, int LayerNo, int PlaybackRangeNo) { }
+
+ virtual public void OnQueryPlaybackRangeCount(int bSuccess, string SceneName, int PlaybackRangeCount) { }
+
+ virtual public void OnQueryPlaybackRange(int bSuccess, string SceneName, int PlaybackRangeNo, int Start, int End) { }
+
+ //virtual public void OnSetVROffset(int bSuccess, string SceneName, float Horz, float Vert) { }
+
+ virtual public void OnSetOutputChannelIndex(int bSuccess, string SceneName, int OutputChannelIndex) { }
+
+ virtual public void OnQueryOutputChannelIndex(int bSuccess, string SceneName, int OutputChannelIndex) { }
+
+ virtual public void OnEndTransactionOnChannel(int bSuccess, int OutputChannelIndex) { }
+
+ void IKAEventHandler.OnSetVROffset(int bSuccess, string SceneName, float Horz, float Vert)
+ {
+
+ }
+
+ void IKAEventHandler.OnQueryTotalTime(int iSuccess, string SceneName, int AnimationType, int Frame)
+ {
+
+ }
+
+ void IKAEventHandler.OnSetPathShapeOutlineThickness(int bSuccess, string SceneName, string ObjectName, float Thickness)
+ {
+
+ }
+
+ void IKAEventHandler.OnEnablePathShapeOutline(int bSuccess, string SceneName, string ObjectName, int bEnable)
+ {
+
+ }
+
+ void IKAEventHandler.OnPlayInNextPreview(int bSuccess, int OutputChannelIndex, int LayerNo)
+ {
+
+ }
+
+ void IKAEventHandler.OnPlayOutNextPreview(int bSuccess, int OutputChannelIndex, int LayerNo)
+ {
+
+ }
+
+ void IKAEventHandler.OnSetPlaybackCamera(int bSuccess, string SceneName, string ObjectName)
+ {
+
+ }
+
+ void IKAEventHandler.OnSetMoveTo(int bSuccess, string SceneName, string ObjectName, float X, float Y, float Z)
+ {
+
+ }
+
+ void IKAEventHandler.OnSetRotateTo(int bSuccess, string SceneName, string ObjectName, float Pitch, float Yaw, float Roll)
+ {
+
+ }
+
+ void IKAEventHandler.OnSetVerticalFOV(int bSuccess, string SceneName, string ObjectName, float Angle)
+ {
+
+ }
+
+ void IKAEventHandler.OnSetDelay(int bSuccess, string SceneName, string ObjectName, int Delay)
+ {
+
+ }
+
+ void IKAEventHandler.OnExportVideo(int bSuccess, string SceneName, string FileName)
+ {
+
+ }
+
+ void IKAEventHandler.OnStopVideoExporting(int bSuccess, string SceneName)
+ {
+
+ }
+
+ void IKAEventHandler.OnQueryVideoExportingProgress(int bSuccess, string SceneName, int CurrentFrame, int TotalFrame)
+ {
+
+ }
+
+ void IKAEventHandler.OnFinishedVideoExporting(int bSuccess, string FileName)
+ {
+
+ }
+
+ void IKAEventHandler.OnSetPause(int bSuccess, string SceneName, int AnimationType, int FrameNo, int Delay, int bAuto)
+ {
+
+ }
+
+ void IKAEventHandler.OnSetPauseByName(int bSuccess, string SceneName, string AnimationName, int FrameNo, int Delay, int bAuto)
+ {
+
+ }
+
+ void IKAEventHandler.OnSetPauseWithIndex(int bSuccess, string SceneName, int AnimationType, int Index, int Delay, int bAuto)
+ {
+
+ }
+
+ void IKAEventHandler.OnSetPauseWithIndexByName(int bSuccess, string SceneName, string AnimationName, int Index, int Delay, int bAuto)
+ {
+
+ }
+
+ void IKAEventHandler.OnDeletePauseWithIndex(int bSuccess, string SceneName, int AnimationType, int Index, int bAll)
+ {
+
+ }
+
+ void IKAEventHandler.OnDeletePauseWithIndexByName(int bSuccess, string SceneName, string AnimationName, int Index, int bAll)
+ {
+
+ }
+
+ /*
+ void IKAEventHandler.OnQueryTextlistOfTextObjects(int bSuccess, string SceneName, int Index, int TotalCount, string Text)
+ {
+
+ }
+
+ void IKAEventHandler.OnPlayIn(int bSuccess, int OutputChannelIndex, int LayerNo)
+ {
+
+ }
+ */
+ }
+}
diff --git a/SSG_Automation_Solution/Tornado/TornadoManager.cs b/SSG_Automation_Solution/Tornado/TornadoManager.cs
new file mode 100644
index 0000000..24d69f7
--- /dev/null
+++ b/SSG_Automation_Solution/Tornado/TornadoManager.cs
@@ -0,0 +1,108 @@
+using K3DAsyncEngineLib;
+using SSG_Automation_Solution.Data;
+using SSG_Automation_Solution.Design.Forms;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SSG_Automation_Solution.Tornado
+{
+ public class TornadoManager
+ {
+ #region variables
+
+ protected KAEngine KAEngine;
+ protected KAScenePlayer KAScenePlayer;
+ protected KAScene KAScene;
+ protected K3DEventHandler KAEvent;
+
+ public string IP { get; set; } = "127.0.0.1";
+ public int Port { get; set; } = 30001;
+
+ public int DissolveTime { get; set; } = 3;
+
+ public bool isConnected()
+ {
+ if (KAScenePlayer == null) return false;
+ else return true;
+ }
+
+
+ #endregion
+
+
+ #region singleton
+
+ private static TornadoManager uniqueInstance = null;
+ private static readonly Object mInstanceLocker = new Object();
+
+ public static TornadoManager getInstance()
+ {
+ lock (mInstanceLocker)
+ {
+ if (uniqueInstance == null)
+ {
+ uniqueInstance = new TornadoManager();
+ }
+ }
+ return uniqueInstance;
+ }
+
+ public TornadoManager()
+ {
+ KAEngine = new KAEngine();
+ }
+
+ #endregion
+
+
+ #region Method - Connection
+ public void setMainFrom(MainForm _mainForm)
+ {
+ KAEvent = new K3DEventHandler(_mainForm);
+ }
+ public void Connection()
+ {
+ KAEngine.KTAPConnect(1, IP, Port, 0, KAEvent);
+ KAScenePlayer = KAEngine.GetScenePlayer();
+ }
+ public void AliveCheck()
+ {
+ KAEngine.HeartBeat();
+ }
+
+ #endregion
+
+
+ public void Display(SceneVO scene ,short? layerNo , BindingList variables)
+ {
+ KAScene = KAEngine.LoadScene(scene.ScenePath, scene.SceneName);
+ foreach(var v in variables)
+ {
+ KAScene.GetObject(v.Tag).SetValue(v.Text);
+ }
+ int layer = Convert.ToInt32(layerNo);
+ KAScenePlayer.Prepare(layer, KAScene);
+ KAScenePlayer.Play(layer);
+
+ KAEngine.UnloadScene(scene.SceneName);
+ }
+
+ public void Out(short? layerNo)
+ {
+ int layer = Convert.ToInt32(layerNo);
+ KAScenePlayer.CutOut(layer);
+ }
+
+
+ public void FileLoad(string path, string sceneName ,string savePath, int frame)
+ {
+ KAScene = KAEngine.LoadScene(path, sceneName);
+ KAScene.DownloadThumbnail(savePath, 640, 480, frame);
+ }
+ }
+}
diff --git a/SSG_Automation_Solution/packages.config b/SSG_Automation_Solution/packages.config
new file mode 100644
index 0000000..6151392
--- /dev/null
+++ b/SSG_Automation_Solution/packages.config
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SSG_Automation_Solution/ssg.ico b/SSG_Automation_Solution/ssg.ico
new file mode 100644
index 0000000..15fbfbf
Binary files /dev/null and b/SSG_Automation_Solution/ssg.ico differ