diff --git a/QRValidation/CapCleaningControl/CIcon.cs b/QRValidation/CapCleaningControl/CIcon.cs new file mode 100644 index 0000000..5dbe9d3 --- /dev/null +++ b/QRValidation/CapCleaningControl/CIcon.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public class CIcon + { + public string Text { get; set; } + public string Tag { get; set; } + public RectangleF Rect { get; set; } + public Boolean Focus { get; set; } + public Boolean Select { get; set; } + public CIcon() : this(string.Empty, RectangleF.Empty) { } + public CIcon(string tag,RectangleF rect) + { + Text = string.Empty; + Tag = tag; + Rect = rect; + } + public float X { get { return Rect.X; } } + public float Y { get { return Rect.Y; } } + public float W { get { return Rect.Width; } } + public float H { get { return Rect.Height; } } + } +} diff --git a/QRValidation/CapCleaningControl/CItem.cs b/QRValidation/CapCleaningControl/CItem.cs new file mode 100644 index 0000000..97099f7 --- /dev/null +++ b/QRValidation/CapCleaningControl/CItem.cs @@ -0,0 +1,208 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Drawing; +namespace UIControl +{ + [Serializable] + public class CItem + { + public Boolean Active { get; set; } + public Boolean PLCWriteNo { get; set; } + public Boolean PLCWriteSize { get; set; } + public Boolean Delete { get; set; } + /// + /// 어떠한 포트에서 픽업 되었는지 + /// + public int iPort { get; set; } + + /// + /// 출력 포트 + /// + public int oPort { get; set; } + + public Boolean ExistError { get; set; } + + /// + /// 배출여부 + /// + public int ErrorOut { get; set; } + + /// + /// 크기는 어떠한지(7 or 13) + /// + public string Size { get; set; } + + /// + /// 존번호 0~10 + /// + public int ZoneIndex { get; set; } + + /// + /// 피커에의해서 드랍된 시간 + /// + public DateTime DropTime { get; set; } + + /// + /// 차수별 일련번호 + /// + public UInt16 Seq { get; set; } + + public DateTime BarcodeStart { get; set; } + public DateTime BarcodeEnd { get; set; } + + /// + /// 바코드 처리가 완료디었는가? + /// 종료일자가 설정되면 처리완료로 합니다. + /// 201028 + /// + public Boolean BarcodeProcess + { + get + { + if (BarcodeEnd.Year == 1982) return false; + else if (BarcodeEnd <= BarcodeStart) return false; + else return true; + } + } + + public DateTime PlcStartTime { get; set; } + public DateTime PlcEndTime { get; set; } + + public DateTime ZoneIntime { get; set; } + + /// + /// 컨베이어에 들어온 시간 + /// 피커에서 드랍되면 dropTime 과 동일하며, 외부에서 들어오면 센서가 최초 감지한 시간이 된다 + /// + public DateTime InTime { get; set; } + public DateTime OutTime { get; set; } + public Rectangle Rect { get; set; } + + /// + /// jobhistory에 연결되는 데이터 키 + /// + public string JGUID { get; set; } + + /// + /// 바코드 데이터와 연결되는 키값 + /// + public string BGUID { get; set; } + public string RID { get; set; } + public string SID { get; set; } + public string VLOT { get; set; } + public string BarcodeRaw { get; set; } + public string BarcodeMsg { get; set; } + public Boolean Processing { get; set; } + public Boolean Complete { get; set; } + public string GUID { get; private set; } + public int Qty { get; set; } + public int QtyAcc { get; set; } + public int QtyMax { get; set; } + public List UnloaderMsg { get; set; } + + /// + /// 바코드의 완료여부, timeout 혻은 설정 되었을때 적용 + /// + public Boolean BarcodeDone { get; set; } + + public Boolean hasBarcode + { + get + { + return !string.IsNullOrEmpty(RID); + } + } + /// + /// 지정한 문자가 포함되어잇다면 true 반환 + /// + /// + /// + public Boolean CheckMessage(string msg) + { + if (UnloaderMsg == null || UnloaderMsg.Count < 1) return false; + foreach (var item in UnloaderMsg) + if (item.Contains(msg)) return true; + return false; + } + + public void AddMessage(string msg) + { + if (this.UnloaderMsg.Contains(msg) == false) + UnloaderMsg.Add(msg); + } + public void ClearMessage() + { + this.UnloaderMsg.Clear(); + } + + public CItem() + { + ExistError = false; + Active = true; + Complete = false; + PLCWriteNo = false; + PLCWriteSize = false; + Qty = 0; + QtyAcc = 0; //200913 누계 + QtyMax = 0; //200913 최대값 + UnloaderMsg = new List(); + ErrorOut = 0; + this.GUID = Guid.NewGuid().ToString(); + BGUID = string.Empty; + JGUID = string.Empty; + VLOT = string.Empty; + Seq = 0; + SID = string.Empty; + BarcodeRaw = string.Empty; + BarcodeMsg = string.Empty; + RID = string.Empty; + Rect = Rectangle.Empty; + Delete = false; + Processing = false; + DropTime = DateTime.Parse("1982-11-23"); + BarcodeStart = DateTime.Parse("1982-11-23"); + BarcodeEnd = DateTime.Parse("1982-11-23"); + PlcStartTime = DateTime.Parse("1982-11-23"); + PlcEndTime = DateTime.Parse("1982-11-23"); + InTime = DateTime.Parse("1982-11-23"); + OutTime = DateTime.Parse("1982-11-23"); + ZoneIntime = DateTime.Parse("1982-11-23"); + + ZoneIndex = -1; + oPort = -1; + iPort = -1; + Size = string.Empty; + } + public CItem Clone() + { + var item = new CItem(); + item.Qty = Qty; + item.Seq = Seq;//0; + item.SID = SID;// string.Empty; + item.VLOT = VLOT; + item.BarcodeRaw = BarcodeRaw;//string.Empty; + item.BarcodeMsg = BarcodeMsg;//string.Empty; + item.RID = RID;//string.Empty; + item.Rect = Rect;//Rectangle.Empty; + item.Delete = Delete;//DropTime;//; + item.ExistError = ExistError; + + item.DropTime = DropTime;// DateTime.Parse("1982-11-23"); + item.BarcodeStart = BarcodeStart;// DateTime.Parse("1982-11-23"); + item.BarcodeEnd = BarcodeEnd;//DropTime;//.Parse("1982-11-23"); + item.PlcStartTime = PlcStartTime;//DateTime.Parse("1982-11-23"); + item.PlcEndTime = PlcEndTime;// DateTime.Parse("1982-11-23"); + item.InTime = InTime;//DropTime;//.Parse("1982-11-23"); + item.OutTime = OutTime;//DateTime.Parse("1982-11-23"); + item.ZoneIntime = ZoneIntime;//DateTime.Parse("1982-11-23"); + item.ZoneIndex = ZoneIndex; + item.oPort = oPort; + item.iPort = iPort; + item.Size = Size; + return item; + } + + } +} diff --git a/QRValidation/CapCleaningControl/CMenu.cs b/QRValidation/CapCleaningControl/CMenu.cs new file mode 100644 index 0000000..4112084 --- /dev/null +++ b/QRValidation/CapCleaningControl/CMenu.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace UIControl +{ + + + [Serializable] + public class CMenuButton + { + public eButtonType Shape { get; set; } + public string Text { get; set; } + public string Tag { get; set; } + public Rectangle Rect { get; set; } + public Color BackColor { get; set; } + public Color ForeColor { get; set; } + public Color OverColor { get; set; } + public Color BorderColor { get; set; } + public byte BorderSize { get; set; } + public Font Font { get; set; } + public CMenuButton() : this(string.Empty, string.Empty) { } + public CMenuButton(string text, string tag) + { + Font = null; + BorderColor = Color.Black; + BorderSize = 5; + Shape = eButtonType.Rectangle; + this.Text = text; + this.Tag = tag; + BackColor = Color.White; + OverColor = Color.Gold; + ForeColor = Color.Black; + text = "Button"; + } + public string menutag { get; set; } + } + + [Serializable] + public class CMenu + { + public string Title { get; set; } + public string Text { get; set; } + public string Tag { get; set; } + public RectangleF Rect { get; set; } + public Boolean Focus { get; set; } + public Boolean Select { get; set; } + public eMsgIcon Icon { get; set; } + public CMenuButton[] buttons { get; set; } + public Font Font { get; set; } + public Color BackColor { get; set; } + public Color ForeColor { get; set; } + public Color BorderColor { get; set; } + + /// + /// 반드시 사용자의 허가를 받아야 넘어갈 수 있는 메뉴 + /// + public Boolean RequireInput { get; set; } + + public CMenu() : this("Contents", "Title", "tag", eMsgIcon.Info, null) { } + + public CMenu(string text_, string title_, string tag_, eMsgIcon icon_, params CMenuButton[] buttons_) + { + this.Tag = tag_; + this.Title = title_; + this.Text = text_; + this.Icon = icon_; + this.buttons = buttons_; + this.Font = new Font("맑은 고딕", 15, FontStyle.Bold); + BackColor = Color.White; + ForeColor = Color.Black; + BorderColor = Color.Orange; + RequireInput = false; + + } + public float X { get { return Rect.X; } } + public float Y { get { return Rect.Y; } } + public float W { get { return Rect.Width; } } + public float H { get { return Rect.Height; } } + } +} diff --git a/QRValidation/CapCleaningControl/CPicker.cs b/QRValidation/CapCleaningControl/CPicker.cs new file mode 100644 index 0000000..7e72acd --- /dev/null +++ b/QRValidation/CapCleaningControl/CPicker.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public class CPicker + { + + /// + /// 릴의 크기가 들어있음 (7 or 13) + /// + public string ReelSize { get; set; } + + /// + /// 릴이 있는 경우 해당 릴이 어느 포트에서 왔는지의 번호 + /// + public short PortIndex { get; set; } + + /// + /// 현재 작업이 프론트 포트의 작업인가? (portindex 값을 가지고 판단함) + /// + public Boolean isFrontJob + { + get + { + if (PortIndex <= 1) return true; + else return false; + } + } + + public Boolean Overload { get; set; } + + + /// + /// VAC센서의 값을 가지고 있음, 현재 릴이 감지되었는가? + /// + public Boolean isReelDetect + { + get + { + return VacDetect.Where(t => t == true).Count() > 0; + } + } + + /// + /// PICK후 60mm위치에서 미리 확인한 감지 상태값 + /// 이값을 가지고 도중에 떨궜을 상황을 감지한다 + /// + public Boolean PreCheckItemOn { get; set; } + public Boolean HasRealItemOn { get; set; } + public Boolean ItemOn { get; set; } + public Boolean[] VacDetect { get; set; } + public Boolean[] VacOutput { get; set; } + public CPicker() + { + this.Overload = false; + ReelSize = "7"; + PortIndex = -1; + HasRealItemOn = false; + PreCheckItemOn = false; + } + public void Clear() + { + this.Overload = false; + ItemOn = false; + ReelSize = "--"; + PortIndex = -1; + if(VacDetect != null && VacDetect.Length > 0) + { + for (int i = 0; i < VacDetect.Length; i++) + VacDetect[i] = false; + } + if (VacOutput != null && VacOutput.Length > 0) + { + for (int i = 0; i < VacOutput.Length; i++) + VacOutput[i] = false; + } + } + + + + } +} diff --git a/QRValidation/CapCleaningControl/CPort.cs b/QRValidation/CapCleaningControl/CPort.cs new file mode 100644 index 0000000..cca0d50 --- /dev/null +++ b/QRValidation/CapCleaningControl/CPort.cs @@ -0,0 +1,334 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public class CPort + { + public Boolean Safty1Err { get; set; } + public Boolean Safty2Err { get; set; } + public Boolean SaftyErr { get { return Safty1Err || Safty2Err; } } + public Boolean MotorRun { get; set; } + public Boolean MotorDir { get; set; } + public int arrowIndex { get; set; } + public Boolean LimitUpper { get; set; } + public Boolean LimitLower { get; set; } + public Boolean OverLoad + { + get + { + return LimitLower && DetectUp; + } + } + public byte AlignOK { get; set; } + public Boolean Ready { get; set; } + + public Boolean DetectUp { get; set; } //상단에 있는 자재 감지 센서 + public Boolean DetectDn { get; set; } //하단에 있는 자재 감지 센서 + // public List Items { get; set; } + + /// + /// 7인치 13인치의 크기 정보를 표시한다 + /// + public string title { get; set; } + public int reelNo { get; set; } + + /// + /// 차수별 릴 작업 수량이 표시됨 + /// + public int reelCount { get; set; } + + public int errorCount { get; set; } + + + + public System.Drawing.Color bgColor { get; set; } + private Boolean _enable = false; + + public Color fgColor { get; set; } + public Color fgColorCount { get; set; } + + public Rectangle rect_title { get; set; } + public RectangleF Rect { get; set; } + public Rectangle rect_count { get; set; } + public int AnimationStepPort { get; set; } + + /// + /// 0:notcart , 1:ready, 2:full + /// + public ushort State { get; set; } + + public Boolean Enable + { + get { return _enable; } + set + { + _enable = value; + this.bgColor = value ? Color.Lime : Color.FromArgb(43, 43, 43); + this.fgColor = value ? Color.White : Color.DimGray; + } + } + + public CPort() + { + Ready = false; + Enable = false; + rect_title = Rectangle.Empty; + rect_count = Rectangle.Empty; + Rect = RectangleF.Empty; + reelNo = -1; + arrowIndex = 2; + reelCount = 0; + fgColor = Color.Black; + Clear(); + AlignOK = 0; + AnimationStepPort = 9; + //Items.Clear(); + } + //public void ClearItem() + //{ + // Items.Clear(); + //} + public void Clear() + { + Enable = true; + Safty1Err = false; + Safty2Err = false; + MotorRun = false; + MotorDir = false; + LimitUpper = false; + LimitLower = false; + reelNo = 0; + reelCount = 0; + DetectUp = false; + DetectDn = false; + } + + public void Display(Graphics g, Font fCnt, Font fMsg, Boolean InputMode,Boolean InputActive) + { + if (Enable == false) + { + g.DrawLine(Pens.DimGray, Rect.Left, Rect.Top, Rect.Right, Rect.Bottom); + g.DrawLine(Pens.DimGray, Rect.Right, Rect.Top, Rect.Left, Rect.Bottom); + } + + //모터사용시 화살표 + eDirection DirL = MotorDir == false ? eDirection.TopToBottom : eDirection.BottomToTop; + if (MotorRun) UIControl.Common.Draw_Arrow(g, Rect, DirL, arrowIndex, AnimationStepPort, Color.Gold, fMsg); + + //글자표시 (크기 및 작업 수량) + var sf = new StringFormat + { + Alignment = StringAlignment.Center, + LineAlignment = StringAlignment.Center, + }; + + + //리밋영역표시(상/하) + var limitSizeH = (int)(Rect.Height * 0.2); + + + if (OverLoad == true)//과적 + { + g.FillRectangle(Brushes.Red, Rect); + if (InputMode) + { + using (Font f = new Font("맑은 고딕", 20, FontStyle.Bold)) + { + g.DrawString("적재초과", + f, + new SolidBrush(fgColor), Rect, sf); + } + } + else + { + + g.DrawString("OVER\nLOAD", fMsg, new SolidBrush(fgColor), Rect, sf); + } + } + else + { + //입력모드에서는 별도 처리를 한다 + if (InputMode) + { + if(InputActive) + { + using (Font f = new Font("맑은 고딕", 20, FontStyle.Bold)) + { + var msg = "투입준비"; + g.FillRectangle(new SolidBrush(Color.FromArgb(100, Color.Black)), Rect); + g.DrawString(msg, f, new SolidBrush(fgColor), Rect, sf); + } + } + else + { + using (Font f = new Font("맑은 고딕", 20, FontStyle.Bold)) + { + var msg = "--"; + g.FillRectangle(new SolidBrush(Color.FromArgb(100, Color.Black)), Rect); + g.DrawString(msg, f, new SolidBrush(fgColor), Rect, sf); + } + } + } + else + { + if (errorCount > 5) + { + g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Gold)), Rect); + } + else + { + g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Black)), Rect); + } + + + if (errorCount > 0) + { + if (errorCount > 05) + { + g.DrawString(reelCount.ToString() + "\n(ERROR)", fCnt, new SolidBrush(Color.Red), Rect, sf); + } + else g.DrawString(reelCount.ToString() + "\nE:" + errorCount.ToString(), fCnt, new SolidBrush(Color.Red), Rect, sf); + } + else + { + + g.DrawString(reelCount.ToString(), fCnt, new SolidBrush(fgColor), Rect, sf); + } + + } + } + + + //데두리표시 ( 비활성 회색, 활성 감지 : 라임, 미감지 흰색) + Color borderL = Enable ? (LimitUpper ? Color.Red : (LimitLower ? Color.Blue : (DetectUp ? Color.Lime : Color.White))) : Color.DimGray; + if (OverLoad) borderL = Color.White; + int bordersize = (InputMode ? 10 : 7);//ortL.enable ? 7 : 1; + + + + if (OverLoad == false) + { + var fontsize = InputMode ? 9 : 9; + using (Font fnt = new Font("Consolas", fontsize, FontStyle.Bold)) + { + //상단 리밋은 상단에 + if (LimitUpper) + { + var msgLU = "+ LIMIT"; + var fsize = g.MeasureString(msgLU, fnt); + var msgW = fsize.Width * 1.5f; + var msgH = fsize.Height * 1.5f; + if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f; + + var RectMsgL = new RectangleF( + Rect.Left + (Rect.Width - msgW) / 2.0f, + Rect.Top - msgH - bordersize / 2.0f + 1, + msgW, msgH); + + g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Red)), RectMsgL); + // g.DrawRectangle(Pens.Black, RectMsgL); + g.DrawString(msgLU, fnt, Color.White, RectMsgL); + + } + + //아이템 감지신호는 상단 아래쪽으로 + if (Ready) + { + var msgLU = "PORT READY"; + var fsize = g.MeasureString(msgLU, fnt); + var msgW = fsize.Width * 1.5f; + var msgH = fsize.Height * 1.5f; + if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f; + + var RectMsgL = new RectangleF( + Rect.Left + (Rect.Width - msgW) / 2.0f, + Rect.Top + bordersize / 2.0f - 1, + msgW, msgH); + + g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Lime)), RectMsgL); + // g.DrawRectangle(Pens.Black, RectMsgL); + g.DrawString(msgLU, fnt, Color.Black, RectMsgL); + } + + + //하단 리밋은 하단에표시 + if (LimitLower) + { + var msgLU = "- LIMIT"; + var fsize = g.MeasureString(msgLU, fnt); + var msgW = fsize.Width * 1.5f; + var msgH = fsize.Height * 1.5f; + if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f; + + var RectMsgL = new RectangleF( + Rect.Left + (Rect.Width - msgW) / 2.0f, + Rect.Bottom + bordersize / 2.0f - 1, + msgW, msgH); + + g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Blue)), RectMsgL); + //g.DrawString(msgLU, fnt, Brushes.White, RectMsgL, sf); + g.DrawString(msgLU, fnt, Color.White, RectMsgL); + + } + + + //아이템 감지 + if (DetectUp) + { + var msgLU = "ITEM DETECT"; + var fsize = g.MeasureString(msgLU, fnt); + var msgW = fsize.Width * 1.5f; + var msgH = fsize.Height * 1.5f; + if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f; + + var RectMsgL = new RectangleF( + Rect.Left + (Rect.Width - msgW) / 2.0f, + Rect.Bottom - msgH - bordersize / 2.0f + 1, + msgW, msgH); + + g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Lime)), RectMsgL); + //g.DrawRectangle(Pens.Black, RectMsgL); + g.DrawString(msgLU, fnt, Color.Black, RectMsgL); + + } + + //안전 오류는 중앙에 + + if (SaftyErr && InputMode == false) + { + var msgS = "SAFTY ERROR"; + var fsize = g.MeasureString(msgS, fMsg); + var msgW = fsize.Width * 1.5f; + var msgH = fsize.Height * 1.5f; + if (msgW > this.Rect.Width * 0.80f) msgW = this.Rect.Width * 0.8f; + + var RectMsgL = new RectangleF( + Rect.Left + (Rect.Width - msgW) / 2.0f, + Rect.Top + (Rect.Height - msgH) / 2.0f, + msgW, msgH); + + g.FillRectangle(new SolidBrush(Color.FromArgb(240, Color.Khaki)), RectMsgL); + g.DrawRectangle(Pens.Black, RectMsgL); + g.DrawString(msgS, fMsg, Color.Maroon, RectMsgL); + + } + } + + } + + //테두리가 리밋영역을 감추도록 그린다 + g.DrawRectangle(new Pen(borderL, bordersize), Rect.Left, Rect.Top, Rect.Width, Rect.Height); + + + + + sf.Dispose(); + } + + + } +} diff --git a/QRValidation/CapCleaningControl/CUnPortData.cs b/QRValidation/CapCleaningControl/CUnPortData.cs new file mode 100644 index 0000000..bd29153 --- /dev/null +++ b/QRValidation/CapCleaningControl/CUnPortData.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public partial class Unloader + { + public class CPortData + { + /// + /// sid + /// + public string sid { get; set; } + + /// + /// 현재진행된 수량 + /// + public int qty { get; set; } + + public string towername { get; set; } + + /// + /// 전체기준수량 + /// + public int kpc { get; set; } + public CPortData(string sid, int qty, int kpc,string tower_) + { + this.sid = sid; + this.qty = qty; + this.kpc = kpc; + this.Active = true; + this.towername = tower_; + } + public CPortData(string sid,string towr) : this(sid, 0, 0,towr) { } + public Boolean Active { get; set; } + } + } + +} diff --git a/QRValidation/CapCleaningControl/CUnPortInfo.cs b/QRValidation/CapCleaningControl/CUnPortInfo.cs new file mode 100644 index 0000000..1b12260 --- /dev/null +++ b/QRValidation/CapCleaningControl/CUnPortInfo.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public partial class Unloader + { + public class CPort + { + public int SortKey { get; set; } + public int portNo { get; set; } + public string portName { get; set; } + + public int idx { get; set; } + [Browsable(false)] + public Rectangle rect_title { get; set; } + [Browsable(false)] + public Rectangle rect { get; set; } + [Browsable(false)] + public Rectangle rect_count { get; set; } + [Browsable(false)] + public Rectangle rect_signL { get; set; } + [Browsable(false)] + public Rectangle rect_signR { get; set; } + + public List reelSID; + + public int cartSize { get; set; } + public ushort cartState { get; set; } + public Boolean SIDUpdate { get; set; } + + /// + /// 이값은 PLC에서 읽은 값이다 + /// + public int reelCount { get; set; } + public int reelCountPLC { get; set; } + + public string Mode { get; set; } + + public CPort() + { + SortKey = 0; + idx = -1; + Mode = "AUTO";// ePortMode.Auto; + rect_title = Rectangle.Empty; + rect = Rectangle.Empty; + rect_count = Rectangle.Empty; + rect_signL = Rectangle.Empty; + rect_signR = Rectangle.Empty; + reelSID = new List(); + cartSize = 0; + cartState = 0; + Clear(); + SIDUpdate = true; + + } + public void Clear() + { + reelSID.Clear();// = new string[0];// string.Empty; + reelCount = 0; + reelCountPLC = 0; + + //기존에 있었는데 지웠다면 업데이트해야함 + if (reelSID.Count > 0) SIDUpdate = true; + } + } + } + +} diff --git a/QRValidation/CapCleaningControl/Common.cs b/QRValidation/CapCleaningControl/Common.cs new file mode 100644 index 0000000..ba367e3 --- /dev/null +++ b/QRValidation/CapCleaningControl/Common.cs @@ -0,0 +1,126 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public static class Common + { + public static void Draw_Arrow(Graphics g, RectangleF rect, eDirection dir, int arrowindex, int animstep, Color basecolor,Font f ) + { + //컨베어 RUN 표시기 표시 + var paddingX = rect.Height * 0.15f; //상하단에 이만큼의 여백을 준다 + var paddingY = rect.Height * 0.15f; + var sigHeight = rect.Height - (paddingX * 2.0f); + var sigWidth = rect.Width / animstep; + + if (dir == eDirection.BottomToTop || dir == eDirection.TopToBottom) + { + paddingX = rect.Width * 0.15f; + paddingY = rect.Height / 10.0f; + sigWidth = rect.Width - (paddingX * 2.0f); + sigHeight = rect.Height / 4.5f; + } + List pts = new List(); + + //사각영역을 표시해준다. + //if (dir == eDirection.LeftToRight || dir == eDirection.RightToLeft) + //{ + // var rect2width = rect.Width / animstep; + // for (int i = 0; i < animstep; i++) + // { + // var rect2 = new RectangleF(rect.X + i * rect2width, rect.Y, rect2width, rect.Height); + // g.DrawRectangle(new Pen(Color.FromArgb(100, Color.Gray)), rect2.Left, rect2.Top, rect2.Width, rect2.Height); + // g.DrawString(i.ToString(), this.Font, Brushes.White, rect2.Left, rect2.Top); + // } + //} + //else + //{ + // var rect2width = rect.Height / animstep; + // for (int i = 0; i < animstep; i++) + // { + // var rect2 = new RectangleF(rect.X, rect.Y + i * rect2width, rect.Width, rect2width); + // g.DrawRectangle(new Pen(Color.FromArgb(100, Color.Gray)), rect2.Left, rect2.Top, rect2.Width, rect2.Height); + // g.DrawString(i.ToString(), this.Font, Brushes.White, rect2.Left, rect2.Top); + // } + //} + + + + var bX = rect.X + paddingX; + var bY = rect.Y + paddingY; + + if (dir == eDirection.LeftToRight) + { + var gridSize = rect.Width / animstep; + pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth), rect.Y + paddingX)); + pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth, rect.Y + paddingX)); + pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth * 2.0f, rect.Y + paddingX + sigHeight / 2.0f)); + pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth, rect.Y + paddingX + sigHeight)); + pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth), rect.Y + paddingX + sigHeight)); + pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth, rect.Y + paddingX + sigHeight / 2.0f)); + } + else if (dir == eDirection.RightToLeft) + { + var gridSize = rect.Width / animstep; + paddingY = rect.Height * 0.1f; //상,하 여백을 10%크기로 한다 + sigHeight = rect.Height - paddingY * 2.0f; + + bX = rect.X + ((animstep - 1) - arrowindex) * gridSize; + bY = rect.Y + paddingY; + + pts.Add(new PointF(bX, bY)); + pts.Add(new PointF(bX - gridSize, bY + sigHeight / 2.0f)); + pts.Add(new PointF(bX, bY + sigHeight)); + pts.Add(new PointF(bX + gridSize, bY + sigHeight)); + pts.Add(new PointF(bX, bY + sigHeight / 2.0f)); + pts.Add(new PointF(bX + gridSize, bY)); + } + else if (dir == eDirection.TopToBottom) + { + var gridSize = rect.Height / animstep; + paddingX = rect.Width * 0.2f; //상,하 여백을 10%크기로 한다 + sigWidth = rect.Width - paddingX * 2.0f; + + bX = rect.X + paddingX; + bY = rect.Y + (arrowindex + 1) * gridSize; + + + pts.Add(new PointF(bX, bY)); + pts.Add(new PointF(bX + (sigWidth / 2.0f), bY + gridSize)); + pts.Add(new PointF(bX + sigWidth, bY)); + pts.Add(new PointF(bX + sigWidth, bY - gridSize)); + pts.Add(new PointF(bX + (sigWidth / 2.0f), bY)); + pts.Add(new PointF(bX, bY - gridSize)); + + } + else if (dir == eDirection.BottomToTop) + { + var gridSize = rect.Height / animstep; + paddingX = rect.Width * 0.2f; //상,하 여백을 10%크기로 한다 + sigWidth = rect.Width - paddingX * 2.0f; + + bX = rect.X + paddingX; + bY = rect.Y + ((animstep - 1) - arrowindex) * gridSize; + + + pts.Add(new PointF(bX, bY)); + pts.Add(new PointF(bX + (sigWidth / 2.0f), bY - gridSize)); + pts.Add(new PointF(bX + sigWidth, bY)); + pts.Add(new PointF(bX + sigWidth, bY + gridSize)); + pts.Add(new PointF(bX + (sigWidth / 2.0f), bY)); + pts.Add(new PointF(bX, bY + gridSize)); + } + if (pts.Count > 0) + { + g.FillPolygon(new SolidBrush(Color.FromArgb(10, basecolor)), pts.ToArray()); + g.DrawPolygon(new Pen(Color.FromArgb(100, basecolor)), pts.ToArray()); + } + + //g.DrawString(arrowindex.ToString(), f, Brushes.Yellow, rect.Left, rect.Top - 20); + } + + } +} diff --git a/QRValidation/CapCleaningControl/CtlMotor.Designer.cs b/QRValidation/CapCleaningControl/CtlMotor.Designer.cs new file mode 100644 index 0000000..a95d2b6 --- /dev/null +++ b/QRValidation/CapCleaningControl/CtlMotor.Designer.cs @@ -0,0 +1,41 @@ +namespace UIControl +{ + partial class CtlMotor + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // CtlMotor + // + this.ResumeLayout(false); + + } + + #endregion + } +} diff --git a/QRValidation/CapCleaningControl/CtlMotor.cs b/QRValidation/CapCleaningControl/CtlMotor.cs new file mode 100644 index 0000000..46f11e2 --- /dev/null +++ b/QRValidation/CapCleaningControl/CtlMotor.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace UIControl +{ + public partial class CtlMotor : Control + { + public int Length { get; set; } + public Boolean Pin_Run { get; set; } + public Boolean Pin_DirCW { get; set; } + public Boolean Pin_Max { get; set; } + public Boolean Pin_Min { get; set; } + + [Browsable(true)] + public new string Text { get; set; } + [Browsable(true)] + public new Font Font { get; set; } + public CtlMotor() + { + InitializeComponent(); + Length = 100; + this.Size = new Size(80, 80); + this.MaximumSize = new Size(80, 80); + this.MinimumSize = new Size(40, 40); + if (this.Font == null) this.Font = new Font("맑은 고딕", 10); + if (this.Text == null) this.Text = string.Empty; + } + + int anim = 0; + protected override void OnPaint(PaintEventArgs pe) + { + base.OnPaint(pe); + pe.Graphics.DrawRect(DisplayRectangle, Color.Gray, 2); + var rect = new Rectangle(DisplayRectangle.Left + 2, DisplayRectangle.Top + 2, 10, 10); + var rect2 = new Rectangle(DisplayRectangle.Right - 2 - 10, DisplayRectangle.Top + 2, 10, 10); + if (this.Pin_Run) + { + if (this.Pin_DirCW) + { + if (anim % 2 == 0) + pe.Graphics.FillEllipse(Brushes.Lime, rect2); + else + pe.Graphics.FillEllipse(Brushes.Yellow, rect2); + pe.Graphics.DrawEllipse(Pens.Black, rect2); + } + else + { + if (anim % 2 == 0) + pe.Graphics.FillEllipse(Brushes.Lime, rect); + else + pe.Graphics.FillEllipse(Brushes.Blue, rect); + pe.Graphics.DrawEllipse(Pens.Black, rect); + } + + } + else + { + pe.Graphics.FillEllipse(Brushes.Red, rect); + pe.Graphics.DrawEllipse(Pens.Black, rect); + } + + if (string.IsNullOrEmpty(Text) == false) + { + pe.Graphics.DrawString(Text, + this.Font, + Brushes.Black, + DisplayRectangle, + new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + } + anim += 1; + } + } +} diff --git a/QRValidation/CapCleaningControl/CtlMotor.resx b/QRValidation/CapCleaningControl/CtlMotor.resx new file mode 100644 index 0000000..e5858cc --- /dev/null +++ b/QRValidation/CapCleaningControl/CtlMotor.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + False + + \ No newline at end of file diff --git a/QRValidation/CapCleaningControl/CtlSensor.Designer.cs b/QRValidation/CapCleaningControl/CtlSensor.Designer.cs new file mode 100644 index 0000000..1842104 --- /dev/null +++ b/QRValidation/CapCleaningControl/CtlSensor.Designer.cs @@ -0,0 +1,36 @@ +namespace UIControl +{ + partial class CtlSensor + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/QRValidation/CapCleaningControl/CtlSensor.cs b/QRValidation/CapCleaningControl/CtlSensor.cs new file mode 100644 index 0000000..d149623 --- /dev/null +++ b/QRValidation/CapCleaningControl/CtlSensor.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace UIControl +{ + public partial class CtlSensor : Control + { + string text_ = string.Empty; + Font font_ = new Font("맑은 고딕", 10); + [Browsable(true)] + public new string Text { get { return text_; } set { text_ = value; this.Invalidate(); } } + [Browsable(true)] + public new Font Font { get { return font_; } set { font_ = value; this.Invalidate(); } } + + public Color ColorOn { get; set; } + public Color ColorOff { get; set; } + public Boolean Value { get; set; } + public CtlSensor() + { + InitializeComponent(); + this.MaximumSize = new Size(80, 80); + this.MinimumSize = new Size(40, 40); + this.ColorOn = Color.Lime; + this.ColorOff = Color.DimGray; + //if (this.Font == null) this.Font = new Font("맑은 고딕", 10); + //if (this.Text == null) this.Text = string.Empty; + Value = false; + } + + protected override void OnPaint(PaintEventArgs pe) + { + base.OnPaint(pe); + // pe.Graphics.DrawRect( this.DisplayRectangle,Color.Gray,2); + + var rect = new Rectangle(this.DisplayRectangle.Left + 1, DisplayRectangle.Top + 1, DisplayRectangle.Width - 2, DisplayRectangle.Height - 2); + if (Value) pe.Graphics.FillEllipse(new SolidBrush(ColorOn), rect); + else pe.Graphics.FillEllipse(new SolidBrush(ColorOff), rect); + pe.Graphics.DrawEllipse(Pens.Black, rect); + + + if (string.IsNullOrEmpty(Text) == false) + { + pe.Graphics.DrawString(Text, + this.Font, + Brushes.Black, + DisplayRectangle, + new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + } + } + } +} diff --git a/QRValidation/CapCleaningControl/EnumStruct.cs b/QRValidation/CapCleaningControl/EnumStruct.cs new file mode 100644 index 0000000..ab12a68 --- /dev/null +++ b/QRValidation/CapCleaningControl/EnumStruct.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public enum eMsgIcon + { + None, + Info, + Alert, + Error, + Help + } + public enum eButtonType + { + Rectangle = 0, + Circle, + } + public enum eDirection + { + LeftToRight, + RightToLeft, + BottomToTop, + TopToBottom + } + public partial class Loader + { + enum eAxis : byte + { + Y_P = 0, + Z_F, + Z_R, + X_F, + X_R, + } + public enum eScean : byte + { + Nomal = 0, + MotHome, + Input, + } + } +} diff --git a/QRValidation/CapCleaningControl/Events.cs b/QRValidation/CapCleaningControl/Events.cs new file mode 100644 index 0000000..cd89124 --- /dev/null +++ b/QRValidation/CapCleaningControl/Events.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public partial class Loader + { + public class MessageArgs : EventArgs + { + public string Message { get; set; } + public Boolean isError { get; set; } + public MessageArgs(string m, Boolean err) + { + this.Message = m; + this.isError = err; + } + } + + + public event EventHandler Message; + + } +} diff --git a/QRValidation/CapCleaningControl/Loader.Designer.cs b/QRValidation/CapCleaningControl/Loader.Designer.cs new file mode 100644 index 0000000..ac23c6d --- /dev/null +++ b/QRValidation/CapCleaningControl/Loader.Designer.cs @@ -0,0 +1,38 @@ +namespace UIControl +{ + partial class Loader + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + } + + #endregion + } +} diff --git a/QRValidation/CapCleaningControl/Loader.cs b/QRValidation/CapCleaningControl/Loader.cs new file mode 100644 index 0000000..15b3708 --- /dev/null +++ b/QRValidation/CapCleaningControl/Loader.cs @@ -0,0 +1,2323 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing.Drawing2D; +using System.Configuration; + +namespace UIControl +{ + public partial class Loader : UserControl + { + #region "Variable - Private" + Timer tm; + Boolean _ardebugmode = false; + eScean _scean = eScean.Nomal; + //기타 내부 변수 + int AnimationStepConv = 30; //컨베어 이동 애니메이션 최대 값 + //int AnimationStepPort = 9; //포트 이동 애니메이션 최대 값 + Boolean bRemakeRect = true; //이값이 활성화되면 각 영역을 다시 그리게 된다 + DateTime updatetime = DateTime.Now; //화면을 다시 그린 시간 + Brush BRPortBg = new SolidBrush(Color.FromArgb(50, Color.DimGray)); + Brush BRDetectDn = new SolidBrush(Color.FromArgb(50, Color.DimGray)); + StringFormat sfCenter; + StringFormat sfLeft = new StringFormat { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center }; + SolidBrush brVacOff = new SolidBrush(Color.FromArgb(150, Color.White)); + SolidBrush brVacOn = new SolidBrush(Color.FromArgb(200, Color.Lime)); + + Pen penVacOn = new Pen(Color.Red, 5); + Pen penVacOff = new Pen(Color.Black, 5); + + //영역(큰 그림?) (bRemakeRect 에 의 해 생성된다) + RectangleF rect_main = RectangleF.Empty; + RectangleF rect_frontShuttle = RectangleF.Empty; + RectangleF rect_rearShuttle = RectangleF.Empty; + RectangleF rect_conveyor = RectangleF.Empty; + RectangleF rect_picker = RectangleF.Empty; + + //영역(피커) + RectangleF rect_picker_rear = RectangleF.Empty; + RectangleF rect_picker_front = RectangleF.Empty; + RectangleF rect_picker_rear_vac1 = RectangleF.Empty; + RectangleF rect_picker_rear_vac2 = RectangleF.Empty; + RectangleF rect_picker_rear_vac3 = RectangleF.Empty; + RectangleF rect_picker_rear_vac4 = RectangleF.Empty; + RectangleF rect_picker_front_vac1 = RectangleF.Empty; + RectangleF rect_picker_front_vac2 = RectangleF.Empty; + RectangleF rect_picker_front_vac3 = RectangleF.Empty; + RectangleF rect_picker_front_vac4 = RectangleF.Empty; + + //X축 포트 (F-L:0, F-R:1, R-L:2, R-R:3 + //RectangleF[] rect_port = new RectangleF[4]; + RectangleF[] rect_zone = new RectangleF[11]; + + CIcon[] icons = new CIcon[6]; + List Buttons = new List(); + List menuButtons = new List(); + + /// + /// 외부에서 입력된 릴의 갯수 + /// + int ExtInputCount = 0; + #endregion + + #region "Variable - Public" + public double[] arMotorPosition = new double[] { 0, 0, 0, 0, 0 }; + public int ConveyorRunPoint = 1; //컨베어 모터 이동시 이동 화살표의 위치값(내부 타이머에의해 증가함) + public double arMcLengthW = 1460; + public double arMcLengthH = 1350;// + #endregion + + #region "Property" + + /// + /// 현재 메뉴가 표시되어있는가? + /// + public Boolean HasPopupMenu { get; private set; } + /// + /// 현재표시된 메뉴는 사용자의 입력을 반드시 받아야 하는가? + /// + public Boolean PopupMenuRequireInput { get; private set; } + public Font arFont_PortMessage { get; set; } + public Boolean LockXF { get; set; } + public Boolean LockXR { get; set; } + public Boolean LockYP { get; set; } + + public eScean Scean { get { return _scean; } set { _scean = value; bRemakeRect = true; this.Invalidate(); } } + + //컨베이어에 설치된 자재 감지 센서 + public Boolean[] arDI_Cv_Detect { get; set; } + //컨베이어 입구 안전 센서 + public Boolean arInitMOT { get; set; } + public Boolean arJobEND { get; set; } + public Boolean arLowDiskSpace { get; set; } //용량 부족 메세지 여부 + public double arFreespace { get; set; } //남은 디스크 용량 비율 + + public Boolean arDI_Safty_CvIn { get; set; } + public Boolean arDI_SaftyOk { get; set; } + + //작업을 선택하면 설정되는 작업일자와 차수이다 + public string arJobDate { get; set; } + public string arJobSeq { get; set; } + + public Boolean[] arMOT_LimUp = new bool[] { false, false, false, false, false }; + public Boolean[] arMOT_LimDn = new bool[] { false, false, false, false, false }; + public Boolean[] arMOT_Origin = new bool[] { false, false, false, false, false }; + public Boolean[] arMOT_Alm = new bool[] { false, false, false, false, false }; + public Boolean[] arMOT_HSet = new bool[] { false, false, false, false, false }; + public Boolean[] arMOT_SVOn = new bool[] { false, false, false, false, false }; + + public Boolean arFlag_WaitPLC { get; set; } + public Boolean arFlag_WaitBCD2 { get; set; } + public Boolean arFlag_WaitBCD1 { get; set; } + public Boolean arFlag_BusyExtIn { get { return ExtInputCount > 0; } } + public Boolean arFlag_Minspace { get; set; } + + public byte arUnloaderSeq { get; set; } + public Boolean arFlag_UnloaderBusy { get; set; } + public Boolean arFlag_UnloaderErr { get; set; } + public Boolean arConn_REM { get; set; } + + + public Boolean arFG_RDY_YP_FPICKON { get; set; } + public Boolean arFG_RDY_YP_FPICKOF { get; set; } + public Boolean arFG_RDY_YP_RPICKON { get; set; } + public Boolean arFG_RDY_YP_RPICKOF { get; set; } + + public Boolean arFG_CMD_YP_FPICKON { get; set; } + //public Boolean arFG_CMD_YP_FPICKOF { get; set; } + public Boolean arFG_CMD_YP_RPICKON { get; set; } + //public Boolean arFG_CMD_YP_RPICKOF { get; set; } + + + + //컨베이어 출구 안전 센서 + public Boolean arDI_Safty_CvOut { get; set; } + + //비상정지 센서 상태 + public Boolean arDI_Emergency { get; set; } + + public Boolean arDIAir { get; set; } + + public Boolean arConn_MOT { get; set; } + public Boolean arConn_DIO { get; set; } + public Boolean arConn_BCD { get; set; } + public Boolean arConn_PLC { get; set; } + + public int arLastDetectIndex { get; set; } + + + public Boolean arDebugMode { get { return _ardebugmode; } set { this._ardebugmode = value; Invalidate(); } } + + public CPort[] arVar_Port { get; set; } + public CPicker[] arVar_Picker { get; set; } + + public Boolean arConvRun { get; set; } + + + public Boolean arIsRunning { get; set; } + public Boolean arFGInputMode { get; set; } + public Boolean arFGInputFL { get; set; } + public Boolean arFGInputFR { get; set; } + public Boolean arFGInputRL { get; set; } + public Boolean arFGInputRR { get; set; } + + + private List zitem = new List(); + public long[] zonetime = new long[11]; + + public Font arFont_count { get; set; } + public Font arFont_picker { get; set; } + + public double arMotorLengthY { get; set; } + public double arMotorLengthXF { get; set; } + public double arMotorLengthXR { get; set; } + + private CMenu[] _menus = null; + public CMenu[] arMenus { get { return _menus; } set { _menus = value; this.Invalidate(); } } + + #endregion + + public Loader() + { + InitializeComponent(); + + // Set Optimized Double Buffer to reduce flickering + this.SetStyle(ControlStyles.UserPaint, true); + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.ContainerControl, false); + this.SetStyle(ControlStyles.Selectable, true); + + + this.Resize += Loader_Resize; + + sfCenter = new StringFormat(); + sfCenter.Alignment = StringAlignment.Center; + sfCenter.LineAlignment = StringAlignment.Center; + + // Redraw when resized + this.SetStyle(ControlStyles.ResizeRedraw, true); + tm = new Timer(); + tm.Interval = 50; //10frame; + tm.Tick += Tm_Tick; + + arLastDetectIndex = -1; + arFont_PortMessage = new Font("Consolas", 11, FontStyle.Bold); + arFont_picker = new Font("Arial", 10, FontStyle.Bold); + + arUnloaderSeq = 0; + arMotorLengthY = 400; + arMotorLengthXF = 580; + arMotorLengthXR = 590; + arJobDate = string.Empty; + arJobSeq = string.Empty; + + arDI_Cv_Detect = new bool[8]; + for (int i = 0; i < arDI_Cv_Detect.Length; i++) + arDI_Cv_Detect[i] = false; + + bool designMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime); + if (designMode == false) tm.Start(); + + arFont_count = new Font("Consolas", 30, FontStyle.Bold); + + //기본수량설정됨 + arVar_Port = new CPort[4]; + arVar_Picker = new CPicker[2]; + for (int i = 0; i < rect_zone.Length; i++) + rect_zone[i] = RectangleF.Empty; + + for (int i = 0; i < zonetime.Length; i++) + zonetime[i] = 0; + + for (int i = 0; i < icons.Length; i++) + icons[i] = new CIcon(); + + //미리 10개를 생성한다. 슬롯에 10개이상 생기기 않는다. + zitem = new List(10); + for (int i = 0; i < zitem.Count; i++) + zitem[i] = new CItem(); + } + + + + + protected override void OnMouseMove(MouseEventArgs e) + { + base.OnMouseMove(e); + if (this.icons == null || icons.Length < 1) return; + + var item = this.icons.Where(t => t.Rect.Contains(e.Location)).FirstOrDefault(); + + //선택된 것이 잇다면 모두 해제를 해준다. + icons.Where(t => t.Focus == true).ToList().ForEach(t => t.Focus = false); + + + if (item != null) + { + item.Focus = true; + this.Cursor = Cursors.Hand; + } + else + { + this.Cursor = Cursors.Arrow; + } + } + + public class ZoneItemClickEventargs : EventArgs + { + public CItem item { get; private set; } + public ZoneItemClickEventargs(CItem item_) + { + this.item = item_; + } + } + public class IconClickEventargs : EventArgs + { + public CIcon item { get; private set; } + public IconClickEventargs(CIcon item_) + { + this.item = item_; + } + } + public class MenuItemClickEventargs : EventArgs + { + public CMenuButton item { get; private set; } + public MenuItemClickEventargs(CMenuButton item_) + { + this.item = item_; + } + } + public event EventHandler ButtonClick; + public event EventHandler IConClick; + public event EventHandler ZoneItemClick; + protected override void OnMouseClick(MouseEventArgs e) + { + base.OnMouseClick(e); + + if (e.Button == MouseButtons.Left) + { + var item = this.icons.Where(t => t.Rect.Contains(e.Location)).FirstOrDefault(); + if (item != null) + { + //다른 메뉴가 선택되어잇다면 동작하지 않게 한다. + if (IConClick != null) + IConClick(this, new IconClickEventargs(item)); + } + + //삭제된 아이템은 선택되지 않게 한다 201013 + lock (zitem) + { + var zitem = this.zitem.Where(t => t.Rect.Contains(e.Location) && t.Delete == false).FirstOrDefault(); + if (zitem != null) + { + //특정 존의 아이템을 선택했다 + if (ZoneItemClick != null) + ZoneItemClick(this, new ZoneItemClickEventargs(zitem)); + + } + + } + + //메뉴의해 생성된 버튼 + var zbbut = this.menuButtons.Where(t => t.Rect.Contains(e.Location)).FirstOrDefault(); + if (zbbut != null) + { + //특정 존의 아이템을 선택했다 + if (ButtonClick != null) + ButtonClick(this, new MenuItemClickEventargs(zbbut)); + + } + + //아이콘 + var zbut = this.Buttons.Where(t => t.Rect.Contains(e.Location)).FirstOrDefault(); + if (zbut != null) + { + //특정 존의 아이템을 선택했다 + if (ButtonClick != null) + ButtonClick(this, new MenuItemClickEventargs(zbut)); + } + + } + } + void Loader_Resize(object sender, EventArgs e) + { + bRemakeRect = true; + } + + + public void RemakeRect() + { + bRemakeRect = true; + } + void makeRect_Input() + { + rect_main = new RectangleF( + DisplayRectangle.Left + DisplayRectangle.Width * 0.05f, + DisplayRectangle.Top + DisplayRectangle.Height * 0.05f, + DisplayRectangle.Width * 0.9f, + DisplayRectangle.Height * 0.9f); + + //화면에 꽉차도록 전체 영역을 할당한다. + var cx = rect_main.Left + rect_main.Width / 2.0f; + var cy = rect_main.Top + rect_main.Height / 2.0f; + + var padding = (int)(rect_main.Width * 0.03); + + arVar_Port[2].Rect = new Rectangle( + (int)rect_main.Left + padding, + (int)rect_main.Top + padding, + (int)((cx - rect_main.Left) - padding * 2), + (int)((cy - rect_main.Top) - padding * 2)); + + arVar_Port[3].Rect = new Rectangle( + (int)cx + padding, + (int)rect_main.Top + padding, + (int)((cx - rect_main.Left) - padding * 2), + (int)((cy - rect_main.Top) - padding * 2)); + + arVar_Port[0].Rect = new Rectangle( + (int)rect_main.Left + padding, + (int)cy + padding, + (int)((cx - rect_main.Left) - padding * 2), + (int)((cy - rect_main.Top) - padding * 2)); + + arVar_Port[1].Rect = new Rectangle( + (int)cx + padding, + (int)cy + padding, + (int)((cx - rect_main.Left) - padding * 2), + (int)((cy - rect_main.Top) - padding * 2)); + } + void makeRect_MotHome() + { + rect_main = new RectangleF( + DisplayRectangle.Left + DisplayRectangle.Width * 0.05f, + DisplayRectangle.Top + DisplayRectangle.Height * 0.05f, + DisplayRectangle.Width * 0.9f, + DisplayRectangle.Height * 0.9f); + } + + double CvtMMtoPX_W(double PosMM, double StartX) + { + //컨베어 기준으로 값을 반환한ㄷ. + return StartX + rect_main.Width * (PosMM / arMcLengthW); + } + double CvtMMtoPX_H(double PosMM, double StartY) + { + //컨베어 기준으로 값을 반환한ㄷ. + return StartY + rect_main.Height * (PosMM / arMcLengthH); + } + + + + #region "Menu Method" + public void ClearMenu() + { + _menus = null; + this.Invalidate(); + } + public void AddMenu(CMenu menu) + { + var curCnt = 0; + if (this._menus != null) curCnt = this._menus.Length; + Array.Resize(ref _menus, curCnt + 1); + _menus[curCnt] = menu; + this.Invalidate(); + } + + public void DelMenu(CMenu menu) + { + List newlist = new List(); + for (int i = 0; i < _menus.Length; i++) + { + if (_menus[i] != menu) newlist.Add(_menus[i]); + } + this._menus = newlist.ToArray(); + this.Invalidate(); + } + + public void DelMenu(int idx) + { + List newlist = new List(); + for (int i = 0; i < _menus.Length; i++) + { + if (i != idx) newlist.Add(_menus[i]); + } + this._menus = newlist.ToArray(); + this.Invalidate(); + } + public void DelMenu() + { + //제거할 아이템이 없다 + if (_menus == null || _menus.Length < 1) return; + + if (_menus.Length == 1) _menus = null; + else + { + //마지막요소를 제거 해주낟 + Array.Resize(ref _menus, _menus.Length - 1); + + } + + this.Invalidate(); + } + #endregion + + /// + /// 각 영역을 현재 크기대비하여 재계산 한다 + /// + void makeRect_Normal() + { + + + rect_main = new RectangleF( + DisplayRectangle.Left + DisplayRectangle.Width * 0.025f, + DisplayRectangle.Top + DisplayRectangle.Height * 0.025f, + DisplayRectangle.Width * 0.95f, + DisplayRectangle.Height * 0.8f); + + //X축 모션(셔틀) 표시 + var xPos1 = rect_main.Left + (rect_main.Width * 0.175); + var xPos2 = rect_main.Right - xPos1; + var yposR = rect_main.Height * 0.15; + var yposF = rect_main.Height * 0.85; + var h0p5 = rect_main.Height * 0.03; + var w0p5 = (rect_main.Width * 0.035) * ((rect_main.Height * 1.0) / rect_main.Width); + + //var conv_height = rect_main.Height * 0.3; + + var cx = (float)(rect_main.Top + (rect_main.Width / 2.0)); + var cy = (float)(rect_main.Top + (rect_main.Height / 2.0)); + + + var conv_height = CvtMMtoPX_H(350, 0); //컨베이어 높이 + var conv_width = CvtMMtoPX_W(arMcLengthW, 0); //컨베어이어너비는 장비 너비와 같다 + + rect_conveyor = new RectangleF(rect_main.Left, + (float)(rect_main.Top + (rect_main.Height - conv_height) / 2.0f), + (float)conv_width, + (float)conv_height); + + var h10p = rect_main.Height * 0.03; + var pickWidth = rect_main.Width * 0.02f; + + //프론트셔틀의 영역(가동 영역) - 아래서 450mm 떨어진곳 + var xAxisLengthMM = arMcLengthW - 200; // 컨베어 길이에서 좌우 100mm 씩 리밋센서가 있다 + var xAxisLengthPX = CvtMMtoPX_W(xAxisLengthMM, rect_conveyor.Left); + rect_frontShuttle = new RectangleF( + (float)(CvtMMtoPX_W(100, rect_conveyor.Left)), + (float)(CvtMMtoPX_H(arMcLengthH - 410 - 10, rect_main.Top)), + (float)xAxisLengthPX, + (float)(CvtMMtoPX_H(20, 0))); + + //리어셔틀의 영역(가동 영역) - 위에서 450mm + rect_rearShuttle = new RectangleF( + (float)(CvtMMtoPX_W(100, rect_conveyor.Left)), + (float)(CvtMMtoPX_H(410 - 10, rect_main.Top)), + (float)xAxisLengthPX, + (float)(CvtMMtoPX_H(20, 0))); + + + //세로축 총길이 1400mm Y축 모터는 양끝에 100mm 의 여유가 있으며, Y축 + + + var pickerX = CvtMMtoPX_W(750, rect_conveyor.Left); + rect_picker = new RectangleF( + (float)(pickerX - (pickWidth / 2.0f)), + (float)(rect_rearShuttle.Top), + (float)(pickWidth), + (float)(rect_frontShuttle.Bottom - rect_rearShuttle.Top) + ); + + + //Y축 피커 관련 세부 영역 설정 (VAC 와 원) + + //전체영역의 80% 영역에 Y-로봇의 축을 그린다. + //var motorMax = 400; //전체 가동 길이 400mm + RectangleF rect = rect_picker; + var MotPosPx = rect.Top + rect.Height * (this.arMotorPosition[0] / (this.arMotorLengthY * 1.0f)); + cx = rect.Left + rect.Width / 2.0f; + + //상(Rear), 하(Front)로 영역을 그린다 + var port_height = rect.Height * 0.25f; + var port_width = port_height; + //;// var port_width = rect.Width * 3f; + //port_width = port_height; + var port_space = CvtMMtoPX_H(350 / 2.0f, 0); + var port_spacex = CvtMMtoPX_W(10, 0); ; + + var PickerSizeW = CvtMMtoPX_W(145, 0);// (float)(Math.Max(CvtMMtoPX_W(150, 0), CvtMMtoPX_H(15, 0))); + var PickerSizeH = PickerSizeW;// CvtMMtoPX_H(130, 0);//(float)(Math.Max(CvtMMtoPX_W(150, 0), CvtMMtoPX_H(15, 0))); + var PickerSpaceH = CvtMMtoPX_H(350, 0); + + + rect_picker_rear = new RectangleF( + (float)(cx + port_spacex), + (float)(MotPosPx - PickerSpaceH - PickerSizeH / 2.0f), + (float)PickerSizeW, + (float)PickerSizeH); + rect_picker_front = new RectangleF( + (float)(cx + port_spacex), + (float)(MotPosPx), + (float)PickerSizeW, + (float)PickerSizeH); + + var pointoffset = 5; + rect_picker_rear_vac1 = new RectangleF( + (float)rect_picker_rear.Left + pointoffset, + (float)rect_picker_rear.Top + pointoffset, + (float)rect_picker_rear.Width * 0.2f, + (float)rect_picker_rear.Height * 0.2f); + rect_picker_rear_vac2 = new RectangleF( + (float)rect_picker_rear.Right - rect_picker_rear_vac1.Width - pointoffset, + (float)rect_picker_rear_vac1.Top, + (float)rect_picker_rear_vac1.Width, + (float)rect_picker_rear_vac1.Height); + rect_picker_rear_vac3 = new RectangleF( + (float)rect_picker_rear.Left + pointoffset, + (float)rect_picker_rear.Bottom - rect_picker_rear_vac1.Height - pointoffset, + (float)rect_picker_rear_vac1.Width, + (float)rect_picker_rear_vac1.Height); + rect_picker_rear_vac4 = new RectangleF( + (float)rect_picker_rear.Right - rect_picker_rear_vac1.Width - pointoffset, + (float)rect_picker_rear.Bottom - rect_picker_rear_vac1.Height - pointoffset, + (float)rect_picker_rear_vac1.Width, + (float)rect_picker_rear_vac1.Height); + + rect_picker_front_vac1 = new RectangleF( + (float)rect_picker_front.Left + pointoffset, + (float)rect_picker_front.Top + pointoffset, + (float)rect_picker_front.Width * 0.2f, + (float)rect_picker_front.Height * 0.2f); + rect_picker_front_vac2 = new RectangleF( + (float)rect_picker_front.Right - rect_picker_front_vac1.Width - pointoffset, + (float)rect_picker_front_vac1.Top, + (float)rect_picker_front_vac1.Width, + (float)rect_picker_front_vac1.Height); + rect_picker_front_vac3 = new RectangleF( + (float)rect_picker_front.Left + pointoffset, + (float)rect_picker_front.Bottom - rect_picker_front_vac1.Height - pointoffset, + (float)rect_picker_front_vac1.Width, + (float)rect_picker_front_vac1.Height); + rect_picker_front_vac4 = new RectangleF( + (float)rect_picker_front.Right - rect_picker_front_vac1.Width - pointoffset, + (float)rect_picker_front.Bottom - rect_picker_front_vac1.Height - pointoffset, + (float)rect_picker_front_vac1.Width, + (float)rect_picker_front_vac1.Height); + + + //각 존의 영역 확인 + + //컨베어의 릴감지센서 위치를 표시한다 + var senseW = rect_conveyor.Width * 0.02f; + var senseH = rect_conveyor.Height * 0.05f; + var slist = new double[] { 20, 340, 550, 890, 1110, 1440 };// new double[] { 0.02, 0.25, 0.4, 0.6, 0.75, 0.9 }; //센서의 위치정보(컨베어좌측기준) + + + + //센서가 포함된 존의 영역을 생성한다 + for (int i = 0; i < slist.Length; i++) + { + //선으로 영역을 표시해준다. + var PosMM = rect_conveyor.Width * (slist[i] / arMcLengthW); + var x = (float)(rect_conveyor.Left + PosMM); + var rx = x - senseW / 2.0f; + rect_zone[i * 2] = new RectangleF(rx, rect_conveyor.Top, senseW, rect_conveyor.Height); + } + + var arraylis = new int[] { 1, 3, 5, 7, 9 }; + var zterm = 4; + for (int i = 0; i < arraylis.Length; i++) + { + var idx = arraylis[i]; + rect_zone[idx] = new RectangleF( + rect_zone[idx - 1].Right + zterm, + rect_zone[idx - 1].Top, + rect_zone[idx + 1].Left - rect_zone[idx - 1].Right - zterm * 2, + rect_zone[idx - 1].Height); + } + + //아이콘영역 + + float ix = rect_main.Left; + float iy = rect_main.Bottom + 20; + Size iconSizeW = new Size(80, 80); + int idxIcon = 0; + ix = rect_main.Left; + iy = rect_main.Bottom + 20; + icons[idxIcon++] = new CIcon("bcd", new RectangleF(ix, iy, iconSizeW.Width, iconSizeW.Height)); + + ix += 85; + icons[idxIcon++] = new CIcon("plc", new RectangleF(ix, iy, iconSizeW.Width, iconSizeW.Height)); + + ix += 85; + icons[idxIcon++] = new CIcon("mot", new RectangleF(ix, iy, iconSizeW.Width, iconSizeW.Height)); + + ix += 85; + icons[idxIcon++] = new CIcon("emg", new RectangleF(ix, iy, iconSizeW.Width, iconSizeW.Height)); + + ix += 85; + icons[idxIcon++] = new CIcon("sft", new RectangleF(ix, iy, iconSizeW.Width, iconSizeW.Height)); + + ix += 85; + icons[idxIcon++] = new CIcon("air", new RectangleF(ix, iy, iconSizeW.Width, iconSizeW.Height)); + + //ix += 85; + //icons[idxIcon++] = new CIcon("debug", new RectangleF(ix, iy, iconSizeW.Width, iconSizeW.Height)); + + ////버튼 생성해준다 + //var ButL = this.Buttons.Where(t => t.Tag == "INPUTL").FirstOrDefault(); + //var ButR = this.Buttons.Where(t => t.Tag == "INPUTR").FirstOrDefault(); + //var butWidth = 64; + //var butPadding = 1; + //var butHeight = butWidth;// (int)(rect_conveyor.Height - butPadding * 2); + //if (ButL == null) + //{ + // var newbutton = new CMenuButton("투입\n출구", "INPUTL"); + // newbutton.BorderSize = 1; + // newbutton.Shape = eButtonType.Rectangle; + // newbutton.Rect = new Rectangle((int)rect_main.Left + butPadding, (int)rect_main.Bottom - butHeight - butPadding, butWidth, butHeight); + // this.Buttons.Add(newbutton); + //} + //else + //{ + // ButL.Rect = new Rectangle((int)rect_main.Left + butPadding, (int)rect_main.Bottom - butHeight - butPadding, butWidth, butHeight); + // ButL.Shape = eButtonType.Rectangle; + //} + //if (ButR == null) + //{ + // var newbutton = new CMenuButton("투입\n입구", "INPUTR"); + // newbutton.BorderSize = 1; + // newbutton.Shape = eButtonType.Rectangle; + // newbutton.Rect = new Rectangle((int)rect_main.Right - butWidth - butPadding, (int)rect_main.Bottom - butHeight - butPadding, butWidth, butHeight); + // this.Buttons.Add(newbutton); + //} + //else + //{ + // ButR.Rect = new Rectangle((int)rect_main.Right - butWidth - butPadding, (int)rect_main.Bottom - butHeight - butPadding, butWidth, butHeight); + // ButR.Shape = eButtonType.Rectangle; + //} + } + + + protected override void OnPaint(PaintEventArgs e) + { + e.Graphics.CompositingQuality = CompositingQuality.HighQuality; + e.Graphics.InterpolationMode = InterpolationMode.High; + e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; + + base.OnPaint(e); + + if (bRemakeRect) + { + if (Scean == eScean.Nomal) makeRect_Normal(); + else if (Scean == eScean.MotHome) makeRect_MotHome(); + else if (Scean == eScean.Input) makeRect_Input(); + bRemakeRect = false; + } + + try + { + if (this.Scean == eScean.Nomal) Scean_Normal(e.Graphics); + else if (this.Scean == eScean.MotHome) Scean_MotHome(e.Graphics); + else if (this.Scean == eScean.Input) Scean_Input(e.Graphics); + } + catch (Exception ex) + { + //오류발생시 해당 오류를 표시한다 210110 + e.Graphics.DrawString(ex.Message, this.Font, Brushes.Red, 100, 100); + } + + + //삭제대상 아이템을 삭제한다 + ZoneItem_AutoClear(); + + + + //var str = "CAN DROP:" + isCanPickerDrop.ToString() + " : HOLD;" + zoneitemholding.ToString//() + ",TOT:" + ZoneItemCountTotal.ToString(); + // e.Graphics.DrawString(str, this.Font, Brushes.White, 100, 100); + } + + public double[] HomeProgress { get; set; } + + public UIControl.CItem ZoneItem_Get(int zoneIndex) + { + lock (zitem) + return zitem.Where(t => t.ZoneIndex == zoneIndex).FirstOrDefault(); + } + public UIControl.CItem ZoneItem_Get(string guid) + { + lock (zitem) + return zitem.Where(t => t.GUID == guid).FirstOrDefault(); + } + public UIControl.CItem ZoneItem_GetJ(string jguid) + { + lock (zitem) + return zitem.Where(t => t.JGUID == jguid).FirstOrDefault(); + } + //public int CountZoneItem(int zoneIndex) + //{ + // return zoneitem.Where(t => t.Delete == false && t.ZoneIndex == zoneIndex).Count(); + //} + private void ZoneItem_AutoClear() + { + //삭제된 아이템을 소거한다(작업중인녀석은 삭제되지 않게한다) + lock (zitem) + { + var delitems = this.zitem.Where(t => t.Delete == true && t.Processing == false).ToList(); + for (int i = delitems.Count - 1; i >= 0; i--) + { + //이미 삭제된 아이템이므로 수량에는 적용하지 않는다 + var item = delitems[i]; + RaiseMessage("[{0}] 아이템소거 : Zone:{1},iPort:{2},Id:{3},Sid:{4},jguid:{5}", false, item.Seq, item.ZoneIndex, item.iPort, item.RID, item.SID, item.JGUID); + this.zitem.Remove(delitems[i]); + } + } + } + public void ZoneItem_Clear() + { + RaiseMessage("ClearZoneItem", false); + lock (zitem) + { + //직접모두 삭제하게 함 + //this.zitem.ForEach((t) => { t.Delete = true; t.ZoneIndex = -1; }); + this.zitem.Clear(); + ExtInputCount = 0; + //this.ZoneItemCountTotal = 0; + } + + } + public void ZoneItem_Delete(string itemguid) + { + lock (zitem) + { + var item = zitem.Where(t => t.GUID == itemguid).FirstOrDefault(); + if (item != null) + { + if (item.ZoneIndex > ExitInputBusyBaseZone) ExtInputCount -= 1; + item.Delete = true; + item.ZoneIndex = -1; + if (ExtInputCount < 0) ExtInputCount = 0; + } + // this.ZoneItemCountTotal -= 1; + } + } + public void ZoneItem_Delete(UIControl.CItem item) + { + RaiseMessage("[{0}] Delte Item : ZONE:{1},iPORT:{2},RID:{3},SID:{4}", false, item.Seq, item.ZoneIndex, item.iPort, item.RID, item.SID); + item.Delete = true; + if (item.ZoneIndex > ExitInputBusyBaseZone) ExtInputCount -= 1; + item.ZoneIndex = -1; + if (ExtInputCount < 0) ExtInputCount = 0; + } + + /// + /// 지정된 시간을 초과한 자료를 삭제한다 + /// + /// + public List ZoneItem_GetOldItemList(int timeSec) + { + + var retval = new List(); + var basetime = DateTime.Now.AddSeconds(-timeSec); + lock (zitem) + { + var list = this.zitem.Where(t => t.Delete == false && t.InTime <= basetime).ToList(); + foreach (var item in list) + retval.Add(item.GUID); + } + return retval; + } + + public void ZoneItem_Add(UIControl.CItem item) + { + + //해당 아이템을 지정한 존에 추가한다. + //만약 해당 존에 아이템이 있다면 정보를 변형만 한다 + lock (zitem) + { + var curitems = this.zitem.Where(t => t.ZoneIndex == item.ZoneIndex && t.Delete == false).ToList(); + if (curitems.Count == 0) + { + RaiseMessage("[{0}] ##### AddItem Zone:{1},iPort:{2},JGUID:{3}", false, item.Seq, item.ZoneIndex, item.iPort, item.JGUID); + item.Delete = false; + this.zitem.Add(item); + if (item.ZoneIndex > ExitInputBusyBaseZone) ExtInputCount += 1; + //return item.GUID; + } + else + { + //기존 정보를 업데이트 해버린다. + var firstdr = curitems.FirstOrDefault(); + if (firstdr != null) + { + if (firstdr.ZoneIndex > ExitInputBusyBaseZone) ExtInputCount -= 1; + + RaiseMessage("[{0}] ##### UpdateItem Zone:{1},iPort:{2},Id:{3},Sid:{4} => Zone:{5},iPort:{6},Id:{7},Sid:{8}", true, + firstdr.Seq, + firstdr.ZoneIndex, firstdr.iPort, firstdr.RID, firstdr.SID, + item.ZoneIndex, item.iPort, item.RID, item.SID); + + firstdr.ZoneIndex = item.ZoneIndex; + firstdr.DropTime = item.DropTime; + firstdr.InTime = item.InTime; + firstdr.iPort = item.iPort; + firstdr.Size = item.Size; + firstdr.Delete = false; + + if (item.ZoneIndex > ExitInputBusyBaseZone) ExtInputCount += 1; + + } + //return item.GUID; + } + if (ExtInputCount < 0) ExtInputCount = 0; + } + + } + /// + /// 해당 존에 아이템이 들어왔다 + /// + /// + public CItem ZoneItem_MoveIn(int InputZoneIdx, int offset = 1) + { + if (InputZoneIdx < 0 || InputZoneIdx > 9) throw new Exception("zonindex 값은 0~10 입니다"); + + //RaiseMessage("CVItem In : 존에 아이템 투입 입력존 : {0}", false, InputZoneIdx); + //해당 아이템 이후의 자재를 모두 Offset 만큼 shit 해준다 + //Boolean shiftok = false; + + //입력하려는 존 이후의 1개 데이터를 가져와서 존을 이동시켜준다 + CItem target = null; + lock (zitem) + { + target = this.zitem.Where(t => t.Delete == false && t.ZoneIndex > InputZoneIdx && t.ZoneIndex <= InputZoneIdx + offset).OrderBy(t => t.ZoneIndex).FirstOrDefault(); + if (target != null) + { + //RaiseMessage("CVItemIn : 아이템 존 설정 Zone:{0},iPort:{1},Id:{2},Sid:{3} => NewZone:{4}", false, target.ZoneIndex, target.iPort, target.RID, target.SID, InputZoneIdx); + if (target.ZoneIndex > ExitInputBusyBaseZone) ExtInputCount -= 1; + if (InputZoneIdx > ExitInputBusyBaseZone) ExtInputCount += 1; + target.ZoneIndex = InputZoneIdx; + target.ZoneIntime = DateTime.Now; + //shiftok = true; + } + else RaiseMessage("아이템이동 실패 대상 존 " + InputZoneIdx.ToString() + ": 아이템이 없습니다, 현재:" + ZoneItemCountTotal.ToString() + "개 있음", true, null); + } + + if (ExtInputCount < 0) ExtInputCount = 0; + return target; + } + + int ExitInputBusyBaseZone = 5; + + public Boolean isCanPickerDrop + { + get + { + //현재 존에 1개까지는 놓을수 있지만 그 이상 있다면 놓을 수없다 + var tsDrop = DateTime.Now - LastDropTime; + + //마지막으로 놓은시간이후 3초 미만은 놓지 못하게 한다 + //단 이경우는 컨베이어가 멈춰있는 경우에는 적용하지 못한다 + if (tsDrop.TotalSeconds < 2) return false; + + //절대 2개이상은 놓지못한다 + if (ZoneItemCountTotal >= 2) return false; + else return zoneitemholding == 0; + //return this.zoneitem.Where(t => t.Delete == false && t.ZoneIndex > 1).Count() == 0; + } + } + + public int ZoneItemCountTotal + { + get + { + int retval = -1; + lock (zitem) + { + retval = this.zitem.Where(t => t.Delete == false && t.ZoneIndex != -1).Count(); + } + return retval; + } + } + public Boolean ZoneItemDoubleError + { + get + { + int retval = 0; + lock (zitem) + { + retval = this.zitem.Where(t => t.Delete == false && t.ZoneIndex >= 0 && t.ZoneIndex <= 1).Count(); //중복오류 + } + return retval > 1; + } + } + + /// + /// Z축이 아이템을 내려놓은 시간(연속으로 놓는 증상이 발생하여, 일단 이것으로 2초이상 빠르게 놓는일이 없도록 한다) + /// + public DateTime LastDropTime = DateTime.Now; + + public int zoneitemholding + { + get + { + int retval = -1; + lock (zitem) + { + //int holdCount = 2; + int inch13cnt = this.zitem.Where(t => t.Delete == false && t.Size == "13").Count(); + if (inch13cnt > 0) + retval = this.zitem.Where(t => t.Delete == false && t.ZoneIndex >= CanDropCount13).Count(); + else + retval = this.zitem.Where(t => t.Delete == false && t.ZoneIndex >= CanDropCount7).Count(); + } + return retval; + } + + } + + public int CanDropCount7 { get; set; } + public int CanDropCount13 { get; set; } + //private int ZoneItemCountTotal = 0;// + //private int zoneitemholding = 0; + + /// + /// 컨베이어에 아이템이 있는가? + /// + public Boolean CVHasItem + { + get + { + //return ZoneItemCountTotal > 0; + Boolean cnt = false; + lock (zitem) + { + cnt = this.zitem.Where(t => t.Delete == false && t.ZoneIndex != -1).Count() > 0; + } + return cnt; + + } + } + + + + /// + /// 바코드 존의 데이터를 변경해준다. + /// + /// + /// + /// + public CItem SetBarcodeZone(string jguid, string _reelid, string _sid, string _lot, string _rawdata, int qty_, string _msg, DateTime _sTime) + { + + //바코드 존에 있는 아이템을 확인한다 + var item = ZoneItem_GetJ(jguid); + if (item == null) + { + RaiseMessage("바코드 존 아이템 찾기 실패 GUID:{0}", true, jguid); + return null; + } + else if (item.BarcodeDone) + { + if (item.RID == _reelid && item.SID == _sid) + { + RaiseMessage("[{0}] 바코드할당 스킵(동일 바코드값 확인) jguid:{1}", true, item.Seq, jguid); + } + else RaiseMessage("[{0}] 바코드할당 실패(이미 등록된 아이템) jguid:{1}", true, item.Seq, jguid); + return item; + } + + item.RID = _reelid; + item.SID = _sid; + item.VLOT = _lot; + item.Qty = qty_; + item.BarcodeRaw = _rawdata; + item.BarcodeEnd = DateTime.Now; + item.BarcodeMsg = _msg; + item.BarcodeStart = _sTime; + item.BarcodeDone = true; + RaiseMessage("[{0}] SetBarcode Zone:{1},RID:{2},SID:{3},msg{4},time:{5},jguid:{6}", false, item.Seq, item.ZoneIndex, _reelid, _sid, _msg, _sTime, jguid); + return item; + } + //public int SetBarcodeZone(string _reelid, string _sid, string _rawdata, string _msg, DateTime _sTime) + //{ + + // RaiseMessage("SetBarcodeZone : id:{0},sid:{1},msg{2},time:{3}", false, _reelid, _sid, _msg, _sTime); + + + // //바코드 존에 있는 아이템을 확인한다 + // int[] bcdzone = new int[] { 1, 2, 3 }; //1,2,3번 존에 할당한다 + // for (int i = 0; i < bcdzone.Length; i++) + // { + // var item = ZoneItem_Get(bcdzone[i]); + // if (item == null || item.BarcodeDone) continue; + + // if (string.IsNullOrEmpty(item.RID)) + // { + // //존에서 아이템이 검출되었다 + // //동일한 데이터가 있다면 + // item.RID = _reelid; + // item.SID = _sid; + // item.BarcodeRaw = _rawdata; + // item.BarcodeEnd = DateTime.Now; + // item.BarcodeMsg = _msg; + // item.BarcodeStart = _sTime; + // item.BarcodeDone = true; + // return bcdzone[i]; + // } + // else if (item.RID != _reelid) + // { + // //이미 등록된 아이템이다 (??) + // RaiseMessage("SetBarcodeZone : 지금 등록하려는 바코드가 이미 등록되었다! id:{0}, 등록되어있는 존 : {1},등록시간:{2} ", true, _reelid, bcdzone[i], item.BarcodeStart); + // continue; + // } + // else + // { + // //같은게 중복으로 인식되었으므로 처리하지 않아도 된다 + // RaiseMessage("SetBarcodeZone : 중복건으로 처리하지 않는다", false); + // return bcdzone[i]; + // } + // } + // RaiseMessage("1~3번 존 안에서 아이템을 찾지 못해 할당할 수 없습니다", true); + // return -1; + + //} + void RaiseMessage(string m, Boolean iserr, params object[] args) + { + if (args != null && args.Length > 0) m = string.Format(m, args); + if (Message != null) Message(this, new MessageArgs(m, iserr)); + } + + + + + + //public void CVItemMove(int oldZoneIdx) + //{ + // if (oldZoneIdx < 1 || oldZoneIdx > 10) throw new Exception("zonindex 값은 1~10 입니다"); + + // //해당 아이템 이하의 데이터를 모두 -1 한다. + // this.zoneitem.Where(t => t.Delete == false && t.ZoneIndex >= oldZoneIdx).ToList().ForEach((t) => + // { + // t.ZoneIndex = t.ZoneIndex - 1; + // t.ZoneIntime = DateTime.Now; + // }); + //} + + /// + /// 아이템을 DROP해도 되는가? 존 3번 부터 아이템이 존재하면 drop 불가능으로 한다 + /// + + + void Scean_Input(Graphics g) + { + //var sb = new System.Text.StringBuilder(); + //sb.AppendLine("자재 투입 모드"); + //for (int i = 0; i < 4; i++) + //{ + // var p = arVar_Port[i]; + // sb.AppendLine(string.Format("P{0} A:{1},DETU:{2},ENB:{3},LIML:{4},LIMH:{5},OVR:{6},RDY:{7}" + + // ",MDIR:{8},MRUN:{9},SFTY:{10} :: {11}", + // i + 1, p.AlignOK, p.DetectUp, p.Enable, p.LimitLower, + // p.LimitUpper, p.OverLoad, p.Ready, p.MotorDir, p.MotorRun, p.SaftyErr, p.title)); + //} + + //g.DrawString(sb.ToString(), this.arFont_PortMessage, Brushes.White, 100, 100); + + //각 포트영역 테두리 그리기 + for (int i = 0; i < arVar_Port.Length; i++) + { + var p = arVar_Port[i]; + var inputActive = false; + if (i == 0) inputActive = arFGInputFL; + else if (i == 1) inputActive = arFGInputFR; + else if (i == 2) inputActive = arFGInputRL; + else if (i == 3) inputActive = arFGInputRR; + p.Display(g, this.arFont_count, this.arFont_PortMessage, this.arFGInputMode, inputActive); + } + } + void Scean_MotHome(Graphics g) + { + //g.DrawString("mot home", this.Font, Brushes.Black, 100, 100); + g.DrawRectangle(new Pen(Color.SteelBlue, 10), this.rect_main.Left, rect_main.Top, rect_main.Width, rect_main.Height); + Font f = new Font(this.Font.Name, 50f, FontStyle.Bold); + + var rectTitle = new RectangleF( + rect_main.Left, + rect_main.Top, + rect_main.Width, + rect_main.Height * 0.25f); + + g.DrawString("MOTION HOME", f, Brushes.White, rectTitle, sfCenter); ; + // g.DrawRectangle(Pens.Red, rectTitle.Left, rectTitle.Top, rectTitle.Width, rectTitle.Height); + + var rectBody = new RectangleF( + rect_main.Left, + rectTitle.Bottom + 10, + rect_main.Width, + rect_main.Height - rectTitle.Height - 10); + + // g.DrawRectangle(Pens.White, rectBody.Left, rectBody.Top, rectBody.Width, rectBody.Height); + + + + var rectT = new Rectangle( + (int)(rectBody.Left + 20), + (int)(rectBody.Top + 10), + (int)(rectBody.Width * 0.23f), + (int)(rectBody.Height * 0.07)); + + var rectXF = new Rectangle( + (int)(rectT.Right + 20), + (int)(rectBody.Top + 10), + (int)(rectBody.Width - rectT.Width - rectT.Left - 10), + (int)(rectBody.Height * 0.07)); + + + var titles = new string[] { "Y-PICKER", "Z-FRONT", "Z-REAR", "X-FRONT", "X-REAR" }; + for (int i = 0; i < 5; i++) + { + var perc = HomeProgress[i]; + var title = titles[i]; + var offsetY = (rectBody.Height * 0.15f); + rectXF.Offset(0, (int)offsetY); + rectT.Offset(0, (int)offsetY); + + //g.DrawRectangle(Pens.Yellow, rectT.Left, rectT.Top, rectT.Width, rectT.Height); + + using (Font f2 = new Font(this.Font.Name, 20f, FontStyle.Bold)) + { + g.DrawString("* " + title, f2, Brushes.Lime, rectT, sfLeft); + } + + LinearGradientBrush brProgr = new LinearGradientBrush(rectXF, Color.Gold, Color.Yellow, LinearGradientMode.Vertical); + var rectXF_P = new Rectangle(rectXF.Left, rectXF.Top, (int)(rectXF.Width * (perc / 100.0)), rectXF.Height); + g.FillRectangle(brProgr, rectXF_P); + g.DrawRectangle(Pens.Gray, rectXF); + brProgr.Dispose(); + } + + + + + + f.Dispose(); + + } + + + + + void Scean_Normal(Graphics g) + { + + ///50mm 마다 그리드를 처리한다 + //using (Font f = new Font("Consolas", 7)) + //{ + // for (float i = 0; i < arMcLengthW; i += 50.0f) + // { + // var fs = g.MeasureString(i.ToString(), f); + // var px = (float)(CvtMMtoPX_W(i, rect_main.Left)); + // g.DrawLine(Pens.DimGray, px, (float)rect_main.Top, px, (float)rect_main.Bottom); + // g.DrawString(i.ToString(), f, Brushes.White, new PointF(px - (fs.Width / 2.0f), rect_main.Top - fs.Height)); + // } + // for (float i = 0; i < arMcLengthH; i += 50.0f) + // { + // var fs = g.MeasureString(i.ToString(), f); + // var px = (float)(CvtMMtoPX_H(i, rect_main.Top)); + // g.DrawLine(Pens.DimGray, (float)rect_main.Left, px, (float)rect_main.Right, px); + // if (i == 0) continue; + // g.DrawString(i.ToString(), f, Brushes.White, new PointF(rect_main.Left, px - (fs.Height / 2.0f))); + // } + //} + + Draw_Icon(g); + + //전체 영역 테두리 + g.DrawRectangle(new Pen(Color.DimGray, 2), rect_main.Left, rect_main.Top, rect_main.Width, rect_main.Height); + + //컨베어 그리기 + Draw_Conveyor(g, rect_conveyor); + + //셔틀표시 + Draw_BallScrewRail(g, rect_frontShuttle, 50, 5, false, LockXF, this.arMOT_Origin[(int)eAxis.X_F], arMOT_LimDn[(int)eAxis.X_F], arMOT_LimUp[(int)eAxis.X_F]); + Draw_BallScrewRail(g, rect_rearShuttle, 50, 5, false, LockXR, this.arMOT_Origin[(int)eAxis.X_R], arMOT_LimDn[(int)eAxis.X_R], arMOT_LimUp[(int)eAxis.X_R]); + + //포트표시(셔틀위에 표시됨) + Draw_Port(g, arMotorPosition[3], arMotorLengthXF, rect_frontShuttle, 0); //front + Draw_Port(g, arMotorPosition[4], arMotorLengthXR, rect_rearShuttle, 2); //rear + + //Y축 레일표시 + Draw_BallScrewRail(g, rect_picker, 50, 5, true, LockYP, this.arMOT_Origin[(int)eAxis.Y_P], arMOT_LimDn[(int)eAxis.Y_P], arMOT_LimUp[(int)eAxis.Y_P]); + + //모터 Y축 + Draw_PickerY(g, rect_picker); + + Draw_Zone(g); + + Draw_CVItem(g); + + Draw_Button(g); + + //우측상단에 작업일자와 차수를 표시한다 + if (string.IsNullOrEmpty(arJobDate) == false && string.IsNullOrEmpty(arJobSeq) == false) + { + var msg = arJobDate + ":" + arJobSeq; + var fsizeseq = g.MeasureString(msg, this.Font); + var rectseqinfo = new RectangleF(rect_main.Right - fsizeseq.Width * 1.15f, rect_main.Bottom, fsizeseq.Width * 1.15f, fsizeseq.Height); + g.FillRectangle(new SolidBrush(Color.FromArgb(64, 64, 64)), rectseqinfo); + g.DrawString(arJobDate + ":" + arJobSeq, this.Font, Brushes.White, rectseqinfo, sfCenter); + g.DrawRectangle(Pens.White, rectseqinfo.Left, rectseqinfo.Top, rectseqinfo.Width, rectseqinfo.Height); + } + + //정보 표시 (나중에 제거해야함) 별도 인포박스형태를 취해야 함 + Draw_Info(g, rect_conveyor); + Draw_Error(g); + + //메뉴는 최상위에 표시한다 + Draw_Menu(g); + + if (arDebugMode) + { + var sb = new System.Text.StringBuilder(); + sb.AppendLine("Loader Control"); + sb.AppendLine(string.Format("Display {0} / pickup zone count {1} / total item count {2}", DisplayRectangle, zoneitemholding, ZoneItemCountTotal)); + g.DrawString(sb.ToString(), this.Font, Brushes.White, 10, 10); + updatetime = DateTime.Now; + + + + //작업 수량 및 전체수량을 표시함 + var sb2 = new System.Text.StringBuilder(); + if (arVar_Port != null && arVar_Port.Length > 0) + { + + //sb2.AppendLine(string.Format("입(PICKER)/출(SS:DET1)/겹침(SS:DET1) : {0}/{1}/{2}", + // ar_cnt_in, ar_cnt_out, ar_cnt_outdup)); + + //sb2.AppendLine(string.Format("바코드 입/출:CMD/DUP/READ/ERR/중복수신/할당실패 {0}/{1}:{2}/{3}/{4}/{5}/{6}/{7}", + // ar_cnt_barcodein, ar_cnt_barcodeot, ar_cnt_barcodecmd, ar_cnt_barcodedup, ar_cnt_barcoderead, ar_cnt_barcodereaderr, ar_cnt_barcodereaddup, ar_cnt_barcodeAssignErr)); + + //sb2.AppendLine(string.Format("언로더 입/출:CMD/DUP {0}/{1}:{2}/{3}", + // ar_cnt_plcin, ar_cnt_plcot, ar_cnt_plccmd, ar_cnt_plcdup)); + + + sb2.AppendLine(string.Format("DIO:{4},BCD:{5},PLC:{6}\n" + + "YP_RDY {7},{8},{9},{10}\n" + + "YP_CMD {7},{8},{9},{10}\n", + arVar_Port[0].reelCount, + arVar_Port[1].reelCount, + arVar_Port[2].reelCount, + arVar_Port[3].reelCount, + arConn_DIO, + arConn_BCD, + arConn_PLC, + arFG_RDY_YP_FPICKON, arFG_RDY_YP_FPICKOF, arFG_RDY_YP_RPICKON, arFG_RDY_YP_RPICKOF, + arFG_CMD_YP_FPICKON, arFG_CMD_YP_RPICKON)); + + } + + using (var f = new Font("Consolas", 15f, FontStyle.Bold)) + g.DrawString(sb.ToString(), f, Brushes.SkyBlue, rect_conveyor.Left + 20, rect_conveyor.Top + 50); + } + + + } + void Draw_Zone(Graphics g) + { + // + if (arFlag_WaitBCD2) //바코드 대기중이라면 해당 존을 강조해준다 + { + var zone = rect_zone[2]; + g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Violet)), zone.Left, rect_main.Top, zone.Width, rect_main.Height); + } + if (arFlag_WaitBCD1) //바코드 대기중이라면 해당 존을 강조해준다 + { + var zone = rect_zone[3]; + g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Gold)), zone.Left, zone.Top, zone.Width, zone.Height); + } + if (arFlag_WaitPLC) + { + var zone = rect_zone[0]; + g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Violet)), zone.Left, this.rect_main.Top, zone.Width, this.rect_main.Height); + } + } + + /// + /// 컨베이어의 아이템을 화면에 표시한ㄷ + /// + /// + void Draw_CVItem(Graphics g) + { + //lock 개체적용 210110 + lock (zitem) + { + var items = this.zitem.Where(t => t.Delete == false).ToList(); + foreach (var item in items) + { + var zone = rect_zone[item.ZoneIndex]; + var itemwidth = rect_conveyor.Width * 0.09f; + + //해당 존의 중앙에 아이템을 그린다. + var cx = zone.Left + zone.Width / 2.0f; + var cy = zone.Top + zone.Height / 2.0f; + item.Rect = new Rectangle( + (int)(cx - itemwidth / 2.0f), + (int)(cy - itemwidth / 2.0f), + (int)itemwidth, + (int)itemwidth); + + //원을 그리다. + if (item.hasBarcode) + { + if (item.Size == "13") + { + using (LinearGradientBrush br = new LinearGradientBrush(item.Rect, Color.DeepSkyBlue, Color.LightSkyBlue, LinearGradientMode.Vertical)) + { + g.FillEllipse(br, item.Rect); + } + } + else + { + using (LinearGradientBrush br = new LinearGradientBrush(item.Rect, Color.LightSkyBlue, Color.DeepSkyBlue, LinearGradientMode.Vertical)) + { + g.FillEllipse(br, item.Rect); + } + } + + } + else + { + if (item.iPort == -1) //외부입력데이터 + { + using (LinearGradientBrush br = new LinearGradientBrush(item.Rect, Color.Magenta, Color.DimGray, LinearGradientMode.BackwardDiagonal)) + { + g.FillEllipse(br, item.Rect); + } + } + else + { + using (LinearGradientBrush br = new LinearGradientBrush(item.Rect, Color.Gray, Color.DimGray, LinearGradientMode.BackwardDiagonal)) + { + g.FillEllipse(br, item.Rect); + } + } + + } + // g.DrawRectangle(Pens.Blue, zone.Left,zone.Top,zone.Width,zone.Height); + // g.DrawRectangle(Pens.Red, item.Rect); + var ts = DateTime.Now - item.ZoneIntime; + if (ts.TotalSeconds > 7.0) + { + //오류발생 너무 오래됬음 + g.DrawEllipse(new Pen(Color.Black, 7), item.Rect.OffsetRect(1, 1)); + g.DrawEllipse(new Pen(Color.Magenta, 7), item.Rect); + } + else + { + g.DrawEllipse(new Pen(Color.DimGray, 5), item.Rect.OffsetRect(1, 1)); + g.DrawEllipse(new Pen(Color.FromArgb(240, 240, 240), 5), item.Rect); + } + + + using (Font f = new Font("Consolas", 11, FontStyle.Bold)) + { + var fsizet = g.MeasureString(item.SID, f); + var fsizeb = g.MeasureString(item.RID, f); + var itemW = Math.Max(fsizet.Width, fsizeb.Width); + var itemH = Math.Max(fsizet.Height, fsizeb.Height); + + //padding + var paddingValue = (int)((item.Rect.Top - rect_conveyor.Top - itemH) / 2.0f + 5); + + //상단에는 SID를 + if (string.IsNullOrEmpty(item.SID) == false) + { + + var zcx = zone.Left + zone.Width / 2.0f; + var rectTop = new RectangleF(zcx - itemW / 2.0f, (float)rect_conveyor.Top, itemW, itemH); + g.FillRectangle(new SolidBrush(Color.SteelBlue), rectTop); + g.DrawRect(rectTop, Color.FromArgb(30, 30, 30)); + g.DrawString(item.SID, f, Brushes.Black, rectTop, sfCenter); + } + //하단에는 RID를 + if (string.IsNullOrEmpty(item.RID) == false) + { + + var zcx = zone.Left + zone.Width / 2.0f; + var rectTop = new RectangleF(zcx - itemW / 2.0f, (float)rect_conveyor.Bottom - itemH, itemW, itemH); + g.FillRectangle(new SolidBrush(Color.SteelBlue), rectTop); + g.DrawRect(rectTop, Color.FromArgb(30, 30, 30)); + g.DrawString(item.RID, f, Brushes.Black, rectTop, sfCenter); + } + } + + if (arDebugMode) + { + ///크기 및 포트 drop 시간 정보를 표시한다. + var sb = new System.Text.StringBuilder(); + sb.AppendLine("[" + item.Seq.ToString() + "]PORT:" + item.iPort.ToString()); + sb.AppendLine("SIZE:" + item.Size); + sb.AppendLine("DROP:" + item.DropTime.ToString("HH:mm:ss")); + sb.AppendLine("IN:" + item.InTime.ToString("HH:mm:ss")); + sb.AppendLine("ZONE:" + item.ZoneIndex.ToString()); + sb.AppendLine("존투입:" + item.ZoneIntime.ToString("yyyy-MM-dd HH:mmss")); + sb.AppendLine("REEL:" + item.RID.ToString()); + sb.AppendLine("SID:" + item.SID.ToString()); + using (Font f = new Font("맑은 고딕", 12, FontStyle.Bold)) + { + if (item.Delete) + g.DrawString(sb.ToString(), f, Brushes.Red, item.Rect.Left, item.Rect.Top); + else if (item.RID.Trim() != "") + g.DrawString(sb.ToString(), f, Brushes.Blue, item.Rect.Left, item.Rect.Top); + else + g.DrawString(sb.ToString(), f, Brushes.Black, item.Rect.Left, item.Rect.Top); + } + } + else + { + //배출포트 설정전에는 크기를 중앙에 표시 + //위에는 SID , 아래는 RID를 표시 + var CenterString = (item.oPort == -1 ? item.Size + "\"" : "#" + item.oPort.ToString()); + var fsize = item.oPort == -1 ? 40 : 30; + using (Font f = new Font("Consolas", fsize, FontStyle.Bold)) + { + if (item.Delete) + g.DrawString(CenterString, f, Brushes.Red, item.Rect, sfCenter); + else if (item.RID.Trim() != "") + { + g.DrawString(CenterString, f, Brushes.Black, item.Rect, sfCenter); + + } + else + g.DrawString(CenterString, f, Brushes.Black, item.Rect, sfCenter); + } + } + } + } + + } + + + + + void Draw_Icon(Graphics g) + { + + + int iconOffsetX = 19; + int iconOffsetY = 20; + + CIcon icon; + + icon = this.icons[0];//.Rect; + if (arConn_BCD) g.DrawImage(UIControl.Properties.Resources.bg_blue, icon.X, icon.Y); + else g.DrawImage(Properties.Resources.bg_red, icon.X, icon.Y); + g.DrawImage(Properties.Resources.bcd, icon.X + iconOffsetX, icon.Y + iconOffsetY); + //if (icon.Focus) g.DrawRectangle(Pens.Gold, icon.X,icon.Y,icon.W,icon.H); + + icon = this.icons[1];//.Rect; + if (arConn_PLC) g.DrawImage(Properties.Resources.bg_blue, icon.X, icon.Y); + else g.DrawImage(Properties.Resources.bg_red, icon.X, icon.Y); + g.DrawImage(Properties.Resources.plc, icon.X + iconOffsetX, icon.Y + iconOffsetY); + //if (icon.Focus) g.DrawRectangle(Pens.Gold, icon.X, icon.Y, icon.W, icon.H); + + icon = this.icons[2];//.Rect; + if (arConn_MOT) g.DrawImage(Properties.Resources.bg_blue, icon.X, icon.Y); + else g.DrawImage(Properties.Resources.bg_red, icon.X, icon.Y); + g.DrawImage(Properties.Resources.mot, icon.X + iconOffsetX, icon.Y + iconOffsetY); + //if (icon.Focus) g.DrawRectangle(Pens.Gold, icon.X, icon.Y, icon.W, icon.H); + + icon = this.icons[3];//.Rect; + if (arDI_Emergency == false) g.DrawImage(Properties.Resources.bg_blue, icon.X, icon.Y); + else g.DrawImage(Properties.Resources.bg_red, icon.X, icon.Y); + g.DrawImage(Properties.Resources.emg, icon.X + iconOffsetX, icon.Y + iconOffsetY); + //if (icon.Focus) g.DrawRectangle(Pens.Gold, icon.X, icon.Y, icon.W, icon.H); + + icon = this.icons[4];//.Rect; + if (this.arDI_SaftyOk) g.DrawImage(Properties.Resources.bg_blue, icon.X, icon.Y); + else g.DrawImage(Properties.Resources.bg_red, icon.X, icon.Y); + g.DrawImage(Properties.Resources.safty, icon.X + iconOffsetX, icon.Y + iconOffsetY); + //if (icon.Focus) g.DrawRectangle(Pens.Gold, icon.X, icon.Y, icon.W, icon.H); + + icon = this.icons[5];//.Rect; + if (arDIAir) g.DrawImage(Properties.Resources.bg_blue, icon.X, icon.Y); + else g.DrawImage(Properties.Resources.bg_red, icon.X, icon.Y); + g.DrawImage(Properties.Resources.air, icon.X + iconOffsetX, icon.Y + iconOffsetY); + //if (icon.Focus) g.DrawRectangle(Pens.Gold, icon.X, icon.Y, icon.W, icon.H); + + //icon = this.icons[6];//.Rect; + //if (arConn_REM) g.DrawImage(Properties.Resources.bg_blue, icon.X, icon.Y); + //else g.DrawImage(Properties.Resources.bg_red, icon.X, icon.Y); + //g.DrawImage(Properties.Resources.debug40, icon.X + iconOffsetX, icon.Y + iconOffsetY); + ////if (icon.Focus) g.DrawRectangle(Pens.Gold, icon.X, icon.Y, icon.W, icon.H); + } + + void Draw_Button(Graphics g) + { + + foreach (var but in Buttons) + { + var font = but.Font; + if (font == null) font = new Font("맑은 고딕", 15); + + if (NeedHomeSet() == false && arDI_Emergency == false && but.Tag == "INPUTL" && arIsRunning == false && arFGInputMode == false) + { + if (but.Shape == eButtonType.Rectangle) + { + g.FillRectangle(Brushes.White, but.Rect); + g.DrawRectangle(new Pen(but.BorderColor, but.BorderSize), but.Rect); + } + else + { + g.FillEllipse(Brushes.White, but.Rect); + g.DrawEllipse(new Pen(but.BorderColor, but.BorderSize), but.Rect); + } + + + g.DrawString(but.Text, font, Brushes.Black, but.Rect, sfCenter); + } + else if (NeedHomeSet() == false && arDI_Emergency == false && but.Tag == "INPUTR" && arIsRunning == false && arFGInputMode == false) + { + if (but.Shape == eButtonType.Rectangle) + { + g.FillRectangle(Brushes.White, but.Rect); + g.DrawRectangle(new Pen(but.BorderColor, but.BorderSize), but.Rect); + } + else + { + g.FillEllipse(Brushes.White, but.Rect); + g.DrawEllipse(new Pen(but.BorderColor, but.BorderSize), but.Rect); + } + + g.DrawString(but.Text, font, Brushes.Black, but.Rect, sfCenter); + } + font.Dispose(); + } + } + + void Draw_Info(Graphics g, RectangleF rect) + { + + //디자인 모드에서는 표시하지 않는다 200714 + //if (DesignMode == true) return; + + //if (this.arFlag_UnloaderBusy) ShowPopupMessage(g, "언로더 작업 대기 중\nBUSY", Properties.Resources.info); + //if (this.arIsRunning) + if (arFGInputMode) + { + ShowPopupMessage(g, "자재 투입 모드", "투입완료 후 'Re.Start' 하세요", Properties.Resources.info, false); + } + else + { + if (this.arFlag_UnloaderErr == true) ShowPopupMessage(g, "언로더 오류 발생", "STOP된 언로더를 확인하세요", Properties.Resources.error, false); + else if (this.arFlag_WaitPLC && arUnloaderSeq > 0) + { + if (arUnloaderSeq == 1) ShowPopupMessage(g, "언로더 작업 대기 중", "상태확인(#1)", Properties.Resources.info, false); + else if (arUnloaderSeq == 2) ShowPopupMessage(g, "언로더 작업 대기 중", "BUSY(#2)", Properties.Resources.info, false); + else if (arUnloaderSeq == 3) ShowPopupMessage(g, "언로더 작업 대기 중", "ITEM CHECK(#3)", Properties.Resources.info, false); + else if (arUnloaderSeq == 4) ShowPopupMessage(g, "언로더 작업 대기 중", "배출포트 설정(#4)", Properties.Resources.info, false); + else if (arUnloaderSeq == 5) ShowPopupMessage(g, "언로더 작업 대기 중", "릴크기 설정(#5)", Properties.Resources.info, false); + else if (arUnloaderSeq == 6) ShowPopupMessage(g, "언로더 작업 대기 중", "No.ZERO CHECK(#6)", Properties.Resources.info, false); + } + } + + } + + void Draw_PickerRail(Graphics g, RectangleF rect) + { + RectangleF rectRailL = new RectangleF(rect.Left, rect.Top, rect.Width / 2.0f + 1, rect.Height); + RectangleF rectRailR = new RectangleF(rect.Left + rect.Width / 2.0f, rect.Top, rect.Width / 2.0f, rect.Height); + var brR = new LinearGradientBrush(rect, Color.FromArgb(60, 60, 60), Color.FromArgb(80, 80, 80), LinearGradientMode.Horizontal); + var brL = new LinearGradientBrush(rect, Color.FromArgb(80, 80, 80), Color.FromArgb(60, 60, 60), LinearGradientMode.Horizontal); + g.FillRectangle(brL, rectRailL); + //g.FillRectangle(brR, rectRailR); + brL.Dispose(); + brR.Dispose(); + g.DrawRectangle(Pens.DimGray, rect.Left, rect.Top, rect.Width, rect.Height); + + } + + + + + void Draw_PickerY(Graphics g, RectangleF rect) + { + //전체영역의 80% 영역에 Y-로봇의 축을 그린다. + //var motorMax = 400; //전체 가동 길이 400mm + this.arMotorLengthY = 600; + var py = rect.Top + rect.Height - (rect.Height * ((this.arMotorPosition[0] + 1) / (this.arMotorLengthY * 1.0f))); + var cx = rect.Left + rect.Width / 2.0f; + + + //상(Rear), 하(Front)로 영역을 그린다 + var port_width = rect_picker_rear.Width;// * 3f; + var port_height = rect_picker_rear.Height; // rect.Height * 0.2f; + var port_space = (this.rect_picker_front.Top - this.rect_picker_rear.Bottom) / 2.0f; + + + //New Rear Position + var newYR = (float)(py - port_height - port_space); + if (newYR != rect_picker_rear.Y) + { + var offset = newYR - rect_picker_rear.Y; + this.rect_picker_rear.Offset(0, offset); //좌표가 변경되었다면 재계산 + this.rect_picker_rear_vac1.Offset(0, offset); + this.rect_picker_rear_vac2.Offset(0, offset); + this.rect_picker_rear_vac3.Offset(0, offset); + this.rect_picker_rear_vac4.Offset(0, offset); + } + + //New Front Position + var newYF = (float)(py + port_space); + if (newYF != rect_picker_front.Y) + { + var offset = newYF - rect_picker_front.Y; + this.rect_picker_front.Offset(0, offset); //좌표가 변경되었다면 재계산 + this.rect_picker_front_vac1.Offset(0, offset); + this.rect_picker_front_vac2.Offset(0, offset); + this.rect_picker_front_vac3.Offset(0, offset); + this.rect_picker_front_vac4.Offset(0, offset); + } + + + //피커 #1 Circle 색상 + var Bg1 = Color.FromArgb(100, 100, 100); + var Bg2 = Color.FromArgb(160, 160, 160); + if (this.arVar_Picker[0].Overload) + { + Bg1 = Color.Tomato; + Bg2 = Color.Red; + } + else + { + if (this.arVar_Picker[0].ItemOn) + { + + if (this.arVar_Picker[0].isReelDetect) + { + Bg1 = Color.Lime; //.FromArgb(100, 100, 100); + Bg2 = Color.Green;//.FromArgb(160, 160, 160); + } + else + { + Bg1 = Color.Magenta; //.FromArgb(100, 100, 100); + Bg2 = Color.DarkMagenta;//.FromArgb(160, 160, 160); + } + + } + else + { + Bg1 = Color.FromArgb(100, 100, 100); + Bg2 = Color.FromArgb(160, 160, 160); + } + } + + + using (var br = new LinearGradientBrush(rect_picker_front, Bg1, Bg2, LinearGradientMode.Vertical)) + { + g.FillEllipse(br, rect_picker_front); + } + + //피커 #2 Circle 색상 + if (this.arVar_Picker[1].Overload) + { + Bg1 = Color.Tomato; + Bg2 = Color.Red; + } + else + { + if (this.arVar_Picker[1].ItemOn) + { + //실제 아이템 체크 + + if (this.arVar_Picker[1].isReelDetect) + { + Bg1 = Color.Lime; //.FromArgb(100, 100, 100); + Bg2 = Color.Green;//.FromArgb(160, 160, 160); + } + else + { + Bg1 = Color.Magenta; //.FromArgb(100, 100, 100); + Bg2 = Color.DarkMagenta;//.FromArgb(160, 160, 160); + } + } + else + { + Bg1 = Color.FromArgb(100, 100, 100); + Bg2 = Color.FromArgb(160, 160, 160); + } + } + + using (var br = new LinearGradientBrush(rect_picker_rear, Bg1, Bg2, LinearGradientMode.Vertical)) + { + g.FillEllipse(br, rect_picker_rear); + } + + //피커 테두리 + using (var bgPen = new Pen(Color.Black, 3)) + { + g.DrawEllipse(bgPen, rect_picker_front); + g.DrawEllipse(bgPen, rect_picker_rear); + } + + //피커 내부의 진공 표현 + g.FillEllipse((this.arVar_Picker[0].VacDetect[0] ? brVacOn : brVacOff), rect_picker_front_vac1); + g.FillEllipse((this.arVar_Picker[0].VacDetect[1] ? brVacOn : brVacOff), rect_picker_front_vac2); + g.FillEllipse((this.arVar_Picker[0].VacDetect[2] ? brVacOn : brVacOff), rect_picker_front_vac3); + g.FillEllipse((this.arVar_Picker[0].VacDetect[3] ? brVacOn : brVacOff), rect_picker_front_vac4); + + g.FillEllipse((this.arVar_Picker[1].VacDetect[0] ? brVacOn : brVacOff), rect_picker_rear_vac1); + g.FillEllipse((this.arVar_Picker[1].VacDetect[1] ? brVacOn : brVacOff), rect_picker_rear_vac2); + g.FillEllipse((this.arVar_Picker[1].VacDetect[2] ? brVacOn : brVacOff), rect_picker_rear_vac3); + g.FillEllipse((this.arVar_Picker[1].VacDetect[3] ? brVacOn : brVacOff), rect_picker_rear_vac4); + + //피커설명 표시 + if (arVar_Picker[0].Overload) + g.DrawString("OVL", arFont_picker, Brushes.Black, rect_picker_front, sfCenter); + else + g.DrawString(this.arVar_Picker[0].ReelSize, arFont_picker, Brushes.Black, rect_picker_front, sfCenter); + + if (arVar_Picker[1].Overload) + g.DrawString("OVL", arFont_picker, Brushes.Black, rect_picker_rear, sfCenter); + else + g.DrawString(this.arVar_Picker[1].ReelSize, arFont_picker, Brushes.Black, rect_picker_rear, sfCenter); + + + //피커 진공표시 테두리 (진공출력상태에 따라서 색상을 달리 함) + g.DrawEllipse((this.arVar_Picker[0].VacOutput[0] ? penVacOn : penVacOff), rect_picker_front_vac1); + g.DrawEllipse((this.arVar_Picker[0].VacOutput[1] ? penVacOn : penVacOff), rect_picker_front_vac2); + g.DrawEllipse((this.arVar_Picker[0].VacOutput[2] ? penVacOn : penVacOff), rect_picker_front_vac3); + g.DrawEllipse((this.arVar_Picker[0].VacOutput[3] ? penVacOn : penVacOff), rect_picker_front_vac4); + + g.DrawEllipse((this.arVar_Picker[1].VacOutput[0] ? penVacOn : penVacOff), rect_picker_rear_vac1); + g.DrawEllipse((this.arVar_Picker[1].VacOutput[1] ? penVacOn : penVacOff), rect_picker_rear_vac2); + g.DrawEllipse((this.arVar_Picker[1].VacOutput[2] ? penVacOn : penVacOff), rect_picker_rear_vac3); + g.DrawEllipse((this.arVar_Picker[1].VacOutput[3] ? penVacOn : penVacOff), rect_picker_rear_vac4); + + + //중앙부에 흰색구를 표시함 + g.FillEllipse(Brushes.White, cx - 5, (float)(py - 5f), 10, 10); + } + + void Draw_Screw(Graphics g, Rectangle rect) + { + //모터표시(X축) + g.FillRectangle(new SolidBrush(Color.FromArgb(50, 150, 150, 150)), rect); + + //해다 영역에 사선으로그림을 그린다. + var termcount = 50; + var lineterm = rect.Width / termcount; + var skew = rect.Width * 0.01f; + Pen p = new Pen(Color.FromArgb(50, 120, 120, 120), 2); + for (int i = 0; i < termcount; i++) + { + var pt1 = new PointF(rect.Left + i * lineterm, rect.Top); + var pt2 = new PointF(pt1.X + skew, rect.Bottom); + g.DrawLine(p, pt1, pt2); + } + p.Dispose(); + //e.Graphics.DrawRectangle(Pens.Gray, motr_rect.Left, motr_rect.Top, motr_rect.Width, motr_rect.Height); + //e.Graphics.DrawRectangle(Pens.Gray, motf_rect.Left, motf_rect.Top, motf_rect.Width, motf_rect.Height); + + + //RectangleF rectRailT = new RectangleF(rect.Left, rect.Top, rect.Width, rect.Height / 2.0f + 1); + //RectangleF rectRailB = new RectangleF(rect.Left, rect.Top + rect.Height / 2.0f, rect.Width, rect.Height / 2.0f); + //var brR = new LinearGradientBrush(rect, Color.FromArgb(100, 60, 60, 60), Color.FromArgb(100, 80, 80, 80), LinearGradientMode.Vertical); + //var brL = new LinearGradientBrush(rect, Color.FromArgb(100, 80, 80, 80), Color.FromArgb(100, 60, 60, 60), LinearGradientMode.Vertical); + ////g.FillRectangle(brL, rectRailT); + ////g.FillRectangle(brR, rectRailB); + //brL.Dispose(); + //brR.Dispose(); + + g.DrawRectangle(new Pen(Color.FromArgb(50, Color.Gray)), rect.Left, rect.Top, rect.Width, rect.Height); + + + } + + void Draw_BallScrewRail(Graphics g, RectangleF rect, int divCount, int alpha, Boolean downDirection, Boolean MLock, Boolean Org, Boolean LimDn, Boolean LimUp) + { + //모터표시(X축) + if (Org) g.FillRectangle(new SolidBrush(Color.FromArgb(alpha, Color.SkyBlue)), rect); + else if (LimUp) g.FillRectangle(new SolidBrush(Color.FromArgb(alpha, Color.Red)), rect); + else if (LimDn) g.FillRectangle(new SolidBrush(Color.FromArgb(alpha, Color.Blue)), rect); + else g.FillRectangle(new SolidBrush(Color.FromArgb(alpha, 150, 150, 150)), rect); + + //해다 영역에 사선으로그림을 그린다. + var baseSize = (downDirection == false ? rect.Width : rect.Height); + var lineterm = baseSize / divCount; + var skew = baseSize * 0.01f; + Pen p = new Pen(Color.FromArgb(alpha, 120, 120, 120), 2); + PointF pt1 = PointF.Empty; + PointF pt2 = PointF.Empty; + for (int i = 0; i < divCount; i++) + { + if (downDirection) + { + pt1 = new PointF(rect.Left, rect.Top + i * lineterm); + pt2 = new PointF(rect.Right, pt1.Y + skew); + } + else + { + pt1 = new PointF(rect.Left + i * lineterm, rect.Top); + pt2 = new PointF(pt1.X + skew, rect.Bottom); + } + g.DrawLine(p, pt1, pt2); + } + p.Dispose(); + + //limi이 걸려있다면 해당 영역에 적색으로 표시한다. + var limwidth = 30; + if (LimUp) + { + RectangleF rectlu; + if (downDirection) rectlu = new RectangleF(rect.Left, rect.Top, rect.Width, limwidth); + else rectlu = new RectangleF(rect.Right - limwidth, rect.Top, limwidth, rect.Height); + + g.FillRectangle(Brushes.Red, rectlu.Left, rectlu.Top, rectlu.Width, rectlu.Height); + } + + if (LimDn) + { + RectangleF rectlu; + if (downDirection) rectlu = new RectangleF(rect.Left, rect.Bottom - limwidth, rect.Width, limwidth); + else rectlu = new RectangleF(rect.Left, rect.Top, limwidth, rect.Height); + + g.FillRectangle(Brushes.Red, rectlu.Left, rectlu.Top, rectlu.Width, rectlu.Height); + } + //전체 테두리 + g.DrawRectangle(new Pen(Color.FromArgb(alpha, Color.Gray)), rect.Left, rect.Top, rect.Width, rect.Height); + } + + Boolean NeedHomeSet() + { + return arConn_MOT && (this.arMOT_HSet[0] == false || this.arMOT_HSet[1] == false || this.arMOT_HSet[2] == false || this.arMOT_HSet[3] == false || this.arMOT_HSet[4] == false); + } + + byte errstep = 0; + bool errstepR = true; + void Draw_Error(Graphics g) + { + //디자인 모드에서는 표시하지 않는다 200714 + if (DesignMode == true) return; + + if (arConn_DIO && this.arDI_Emergency == true) ShowPopupMessage(g, "EMERGENCY BUTTON", "비상정지 확인\nEMERGENCY or POWER LOSS", Properties.Resources.error, true); + else if (this.arDI_SaftyOk == false) ShowPopupMessage(g, "SAFTY SENSOR", "안전 센서 확인", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_Alm[0] == true) ShowPopupMessage(g, "SERVO ALARM", "Y-PICKER 모터 알람 발생", Properties.Resources.error, true); + else if (arConn_MOT && this.arMOT_Alm[1] == true) ShowPopupMessage(g, "SERVO ALARM", "Z-FRONT 모터 알람 발생", Properties.Resources.error, true); + else if (arConn_MOT && this.arMOT_Alm[2] == true) ShowPopupMessage(g, "SERVO ALARM", "Z-REAR 모터 알람 발생", Properties.Resources.error, true); + else if (arConn_MOT && this.arMOT_Alm[3] == true) ShowPopupMessage(g, "SERVO ALARM", "X-FRONT 모터 알람 발생", Properties.Resources.error, true); + else if (arConn_MOT && this.arMOT_Alm[4] == true) ShowPopupMessage(g, "SERVO ALARM", "X-REAR 모터 알람 발생", Properties.Resources.error, true); + + else if (arConn_MOT && this.arMOT_SVOn[0] == false) ShowPopupMessage(g, "SERVO ALARM", "Y-PICKER SERVO-OFF", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_SVOn[1] == false) ShowPopupMessage(g, "SERVO ALARM", "Z-FRONT SERVO-OFF", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_SVOn[2] == false) ShowPopupMessage(g, "SERVO ALARM", "Z-REAR SERVO-OFF", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_SVOn[3] == false) ShowPopupMessage(g, "SERVO ALARM", "X-FRONT SERVO-OFF", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_SVOn[4] == false) ShowPopupMessage(g, "SERVO ALARM", "X-REAR SERVO-OFF", Properties.Resources.alert, true); + + else if (arConn_MOT && (this.arMOT_HSet[0] == false || this.arMOT_HSet[1] == false || this.arMOT_HSet[2] == false || this.arMOT_HSet[3] == false || this.arMOT_HSet[4] == false)) + { + //안전오류도 표시해줘야한다 + var SaftyMessage = string.Empty; + if (arVar_Port[0].SaftyErr == true) SaftyMessage += "PORT-FL"; + if (arVar_Port[1].SaftyErr == true) SaftyMessage += (string.IsNullOrEmpty(SaftyMessage) == false ? "," : string.Empty) + "PORT-FR"; + if (arVar_Port[2].SaftyErr == true) SaftyMessage += (string.IsNullOrEmpty(SaftyMessage) == false ? "," : string.Empty) + "PORT-RL"; + if (arVar_Port[3].SaftyErr == true) SaftyMessage += (string.IsNullOrEmpty(SaftyMessage) == false ? "," : string.Empty) + "PORT-RR"; + + if (string.IsNullOrEmpty(SaftyMessage) == false) + { + ShowPopupMessage(g, "SYSTEM NOT READY", "장치 초기화가 필요 합니다\n포트안전센서 확인 필요\n" + SaftyMessage, Properties.Resources.error, true); + } + else ShowPopupMessage(g, "SYSTEM NOT READY", "장치 초기화가 필요 합니다\n홈 검색이 완료되지 않았습니다", Properties.Resources.error, true); + } + else if (arConn_MOT && this.arMOT_HSet[0] == false) ShowPopupMessage(g, "SERVO ALARM", "Y-PICKER 홈 검색 필요", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_HSet[1] == false) ShowPopupMessage(g, "SERVO ALARM", "Z-FRONT 홈 검색 필요", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_HSet[2] == false) ShowPopupMessage(g, "SERVO ALARM", "Z-REAR 홈 검색 필요", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_HSet[3] == false) ShowPopupMessage(g, "SERVO ALARM", "X-FRONT 홈 검색 필요", Properties.Resources.alert, true); + else if (arConn_MOT && this.arMOT_HSet[4] == false) ShowPopupMessage(g, "SERVO ALARM", "X-REAR 홈 검색 필요", Properties.Resources.alert, true); + + else if (arVar_Port[0].OverLoad) ShowPopupMessage(g, "## OVERLOAD ##", "FRONT-LEFT", Properties.Resources.alert, true); + else if (arVar_Port[1].OverLoad) ShowPopupMessage(g, "## OVERLOAD ##", "FRONT-RIGHT", Properties.Resources.alert, true); + else if (arVar_Port[2].OverLoad) ShowPopupMessage(g, "## OVERLOAD ##", "REAR-LEFT", Properties.Resources.alert, true); + else if (arVar_Port[3].OverLoad) ShowPopupMessage(g, "## OVERLOAD ##", "REAR-RIGHT", Properties.Resources.alert, true); + + //else if (arFlag_UnloaderBusy) ShowPopupMessage(g, "## UNLOADER ##\nBUSY", Properties.Resources.alert); + //else if (arFlag_UnloaderErr) ShowPopupMessage(g, "## UNLOADER ##\nERROR", Properties.Resources.alert); + } + + + void Draw_Menu(Graphics g) + { + //var buttonOk = new CMenuButton("OK", "1"); + //var buttonNo = new CMenuButton("CANCLE", "0"); + //var newmenu = new CMenu("body str", "title", eMsgIcon.Error, buttonOk, buttonNo) + //{ + // BorderColor = Color.Gray + //}; + //this.menus.Push(newmenu); + + if (arMenus == null || arMenus.Length < 1) { this.HasPopupMenu = false; return; } + else HasPopupMenu = true; + + ShowMaskLayer(g, Color.FromArgb(250, Color.Black)); + var item = this.arMenus.Last();//.Peek(); + //이 메뉴를 표시 합니다. + + PopupMenuRequireInput = item.RequireInput; + + var buttonSpace = 10; + var hSpace = 5; + var vSpace = 10; + var iconSize = 80; + var menuheight = 64; + var padding = 10; + var msgW = 900;// (int)(this.rect_main.Width * 0.65f);// 640;// (int)(rect_main.Width * 0.7f); + var msgH = 400; + var rect = new RectangleF( + rect_main.Left + (rect_main.Width - msgW) / 2.0f, + rect_main.Top + (rect_main.Height - msgH) / 2.0f, + msgW, msgH); + + Rectangle rectT = Rectangle.Empty; //title + Rectangle rectI = Rectangle.Empty; //icon + Rectangle rectC = Rectangle.Empty; //content + Rectangle rectB = Rectangle.Empty; //button + + rectT = new Rectangle((int)rect.Left + padding, (int)rect.Top + padding, (int)rect.Width - (padding * 2), (int)(rect.Height * 0.1)); + rectI = new Rectangle((int)rect.Left + padding + 10, (int)rectT.Bottom + vSpace, iconSize, iconSize); //icon size + rectB = new Rectangle((int)(rect.Left + padding * 2), (int)(rect.Bottom - menuheight - padding), (int)rect.Width - (padding * 4), menuheight); + rectC = new Rectangle((int)rectI.Right + 20 + hSpace * 2, (int)rectT.Bottom + 10 + vSpace, + (int)(rect.Width - hSpace - (padding * 2) - rectI.Width), + (int)(rect.Height - rectT.Height - rectB.Height - (padding * 2) - vSpace * 2)); + + g.FillRectangle(new SolidBrush(Color.FromArgb(220, item.BackColor)), rect); + + //제목줄 표시 + using (LinearGradientBrush sb = new LinearGradientBrush(rectT, + Color.FromArgb(160, 160, 160), + Color.FromArgb(180, 180, 180), + LinearGradientMode.Vertical)) + { + g.FillRectangle(sb, rectT); + } + + + g.DrawString(item.Title, item.Font, new SolidBrush(item.ForeColor), rectT, sfCenter); + + //버튼표시 + if (item.buttons != null && item.buttons.Length > 0) + { + //현재 버튼 영역의 갯수가 다르면 다시 생성한다. + if (menuButtons.Count != item.buttons.Length) + { + + menuButtons = new List(); + foreach (var bt in item.buttons) + menuButtons.Add(bt); + + g.DrawString("!!", this.Font, Brushes.Red, rectB.Left + 10, rectB.Top + 10); + } + else + { + for (int i = 0; i < menuButtons.Count; i++) + menuButtons[i] = item.buttons[i]; + } + + g.DrawString(item.buttons.Length.ToString() + "/" + menuButtons.Count.ToString(), this.Font, Brushes.Red, rectB); + var butidx = 0; + var butwid = (rectB.Width - (item.buttons.Length - 1) * buttonSpace) / item.buttons.Length; + foreach (var but in item.buttons) + { + but.menutag = item.Tag; + but.Rect = new Rectangle(rectB.Left + butwid * butidx + buttonSpace * butidx, rectB.Top, butwid, rectB.Height); + g.FillRectangle(new SolidBrush(but.BackColor), but.Rect); + g.DrawRectangle(new Pen(but.BorderColor, but.BorderSize), but.Rect); + g.DrawString(but.Text, item.Font, new SolidBrush(but.ForeColor), but.Rect, sfCenter); + butidx++; + } + } + else menuButtons.Clear(); + + //아이콘 영역에 그림표시 + if (rectI.IsEmpty == false) + { + g.DrawImage(Properties.Resources.info, rectI); + } + + //본문데이터표시 + if (string.IsNullOrEmpty(item.Text) == false) //contec + { + g.DrawString(item.Text, item.Font, new SolidBrush(item.ForeColor), rectC); + } + + //외각 테두리 + //g.DrawRectangle(new Pen(Color.FromArgb(20,20,20), 10) { Alignment = PenAlignment.Center }, rect.Left + 1, rect.Top + 1, rect.Width, rect.Height); + + g.DrawRectangle(new Pen(Color.FromArgb(180, 180, 180), 10) { Alignment = PenAlignment.Center }, rect.Left, rect.Top, rect.Width, rect.Height); + + + //g.DrawRectangle(Pens.Black, rect.Left, rect.Top, rect.Width, rect.Height); + + //g.DrawRectangle(Pens.Red, rectT); //제목표시줄 + //g.DrawRectangle(Pens.Blue, rectI); //아이콘 + //g.DrawRectangle(Pens.Green, rectB); //버튼영역 + //g.DrawRectangle(Pens.Black, rectC); //본문영역 + } + + void ShowMaskLayer(Graphics g, Color maskColor) + { + g.FillRectangle(new SolidBrush(maskColor), this.DisplayRectangle.Left, DisplayRectangle.Top, DisplayRectangle.Width, DisplayRectangle.Height); + + } + + void ShowPopupMessage(Graphics g, string title, string msg, Image icon, Boolean isError) + { + //팝업표시할때마다 배경 마스킹을 한다 + //var maskColor = Color.FromArgb(100, Color.White); + //ShowMaskLayer(g, maskColor); + + if (isError == false) + { + //팝업표시할때마다 배경 마스킹을 한다 + var maskColor = Color.FromArgb(50, Color.Gray); + ShowMaskLayer(g, maskColor); + + var msgW = (int)(this.rect_main.Width * 0.65f);// 640;// (int)(rect_main.Width * 0.7f); + var msgH = 105; + var rect = new RectangleF( + rect_main.Left + (rect_main.Width - msgW) / 2.0f, + rect_main.Top + (rect_main.Height - msgH) / 2.0f, + msgW, msgH); + + var TitleHeight = 25; + var rectT = new Rectangle((int)rect.Left, (int)rect.Bottom - TitleHeight, (int)rect.Width, TitleHeight); + var rectI = new Rectangle((int)rect.Left, (int)rect.Top, (int)rect.Width, (int)rect.Height - rectT.Height); + + //g.FillRectangle(new SolidBrush(Color.FromArgb(220, Color.Black)), rect); + g.FillRectangle(new SolidBrush(Color.FromArgb(120, Color.White)), rect); + + var rectTL = new RectangleF(rectT.Left, rectT.Top, rectT.Width / 2.0f, rectT.Height); + var rectTR = new RectangleF(rectTL.Right, rectT.Top, rectTL.Width, rectTL.Height); + using (var sb = new LinearGradientBrush(rectT, Color.Transparent, Color.White, LinearGradientMode.Horizontal)) + g.FillRectangle(sb, rectTL); + using (var sb = new LinearGradientBrush(rectT, Color.White, Color.Transparent, LinearGradientMode.Horizontal)) + g.FillRectangle(sb, rectTR); + + //g.DrawImage(icon, + // (int)(rect.Left + 20), + // (int)(rect.Top + (rect.Height - icon.Height) / 2.0f)); + + g.DrawString(title, new Font("맑은 고딕", 10f, FontStyle.Bold), Color.Black, rectT, ContentAlignment.MiddleCenter); + g.DrawString(msg, new Font("맑은 고딕", 30f, FontStyle.Bold), Color.White, rectI, ContentAlignment.MiddleCenter, Color.FromArgb(24, 24, 24)); + + if (errstep % 5 == 0) errstepR = !errstepR; + + if (errstepR) + g.DrawRectangle(new Pen(Color.Gold, 2), rect.Left, rect.Top, rect.Width, rect.Height); + else + g.DrawRectangle(new Pen(Color.White, 2), rect.Left, rect.Top, rect.Width, rect.Height); + + if (errstep < 255) errstep += 1; + else errstep = 0; + } + else + { + //팝업표시할때마다 배경 마스킹을 한다 + var maskColor = Color.FromArgb(253, 15, 15, 15); + ShowMaskLayer(g, maskColor); + + var msgW = (int)(this.rect_main.Width * 0.65f);// 640;// (int)(rect_main.Width * 0.7f); + var msgH = 400; + var rect = new RectangleF( + rect_main.Left + (rect_main.Width - msgW) / 2.0f, + rect_main.Top + (rect_main.Height - msgH) / 2.0f, + msgW, msgH); + + var rectT = new Rectangle((int)rect.Left, (int)rect.Bottom - 200, (int)rect.Width, 200); + var rectI = new Rectangle((int)rect.Left, (int)rect.Top, (int)rect.Width, (int)rect.Height - rectT.Height); + + //g.FillRectangle(new SolidBrush(Color.FromArgb(220, Color.Black)), rect); + g.FillRectangle(new SolidBrush(Color.FromArgb(253, Color.Black)), rect); + + g.DrawImage(icon, + (int)(rectI.Left + rectI.Width / 2.0f) - 40, + (int)(rectI.Top + rectI.Height / 2.0f) + 10); + + g.DrawString(msg, new Font("맑은 고딕", 30f, FontStyle.Bold), Brushes.Gold, rectT, sfCenter); + + if (errstep % 5 == 0) errstepR = !errstepR; + + if (errstepR) + g.DrawRectangle(new Pen(Color.Red, 10), rect.Left, rect.Top, rect.Width, rect.Height); + else + g.DrawRectangle(new Pen(Color.Gold, 10), rect.Left, rect.Top, rect.Width, rect.Height); + + if (errstep < 255) errstep += 1; + else errstep = 0; + } + + + + } + + void Draw_Conveyor(Graphics g, RectangleF rect) + { + //컨베어표시 + g.FillRectangle(new SolidBrush(Color.FromArgb(100, Color.Black)), rect); + + + if (arDI_Safty_CvIn || arDI_Cv_Detect[6]) + { + //입구쪽 감지센서 + var rectdetIn = new RectangleF(rect.Right - 10, rect.Top + 9, 5, rect.Height - 10); + g.FillRectangle(new SolidBrush(Color.FromArgb(100, Color.Blue)), rectdetIn); + } + if (arDI_Safty_CvOut || arDI_Cv_Detect[7]) + { + //출구쪽 감지센서 + var rectdetOut = new RectangleF(rect.Left, rect.Top + 9, 5, rect.Height - 10); + g.FillRectangle(new SolidBrush(Color.FromArgb(100, Color.Blue)), rectdetOut); + } + + + + //컨베어의 릴감지센서 위치를 표시한다 + var gridsize = rect.Width / (6 + 1f); + var senseW = rect.Width * 0.02f; + var senseH = rect.Height * 0.05f; + var slist = new double[] { 50, 350, 470, 890, 1110, 1440 }; + + for (int i = 0; i < slist.Length; i++) + { + + //선으로 영역을 표시해준다. + var PosMM = rect.Width * (slist[i] / arMcLengthW); + var x = (float)(rect.Left + PosMM); + var rx = x - senseW / 2.0f; + + //센서모양을 그려준다 + var rectT = new RectangleF(rx, rect.Top + 3, senseW, senseH); + var rectB = new RectangleF(rx, rect.Bottom - senseH - 3, senseW, senseH); + + if (arDI_Cv_Detect[i] == true) + { + g.DrawLine(Pens.SkyBlue, x, rect.Top, x, rect.Bottom); + arLastDetectIndex = i; + + } + + if (i == arLastDetectIndex) //마지막으로 지나간 것은 색상을 변경 해준다. + { + g.FillRectangle(Brushes.Gold, rectT); + g.FillRectangle(Brushes.Gold, rectB); + } + else + { + g.FillRectangle(Brushes.White, rectT); + g.FillRectangle(Brushes.White, rectB); + } + + + // g.DrawString(i.ToString(), this.Font, Brushes.White, x, rect.Top - 20); + } + + Color borderColor = CVHasItem ? Color.Gold : (arConvRun ? Color.Red : Color.Gray); + using (var p = new Pen(borderColor, 6)) + { + g.DrawLine(p, rect.Left, rect.Top, rect.Right, rect.Top); + g.DrawLine(p, rect.Left, rect.Bottom, rect.Right, rect.Bottom); + //g.DrawLine(new Pen(Color.Red), rect.Left, rect.Top , rect.Right, rect.Top ); + //g.DrawLine(new Pen(Color.Red), rect.Left, rect.Bottom, rect.Right, rect.Bottom); + + } + + //동작시 모터의 진행방ㅎㅇ을 표시한다 + if (arConvRun) + UIControl.Common.Draw_Arrow(g, rect, + eDirection.RightToLeft, + ConveyorRunPoint, + AnimationStepConv, + Color.FromArgb(50, 50, 50), this.Font); + } + + + + void Draw_Port(Graphics g, double motposition, double maxLength, RectangleF area, int portindex) + { + CPort portL = arVar_Port[portindex + 0]; + CPort portR = arVar_Port[portindex + 1]; + + maxLength = arMcLengthW - 200; + var PosX = area.Left + (area.Width * (motposition / maxLength)); + + // g.DrawLine(Pens.DarkViolet, (int)PosX, (int)(area.Top - 10), (int)PosX, (int)(area.Bottom + 10)); + + var portwidth = CvtMMtoPX_W(350, 0); // area.Width * 0.25; + var port_space = CvtMMtoPX_W(60, 0); //각 포트사이가 60mm + var port_height = CvtMMtoPX_H(250, 0); + + var position_front_px = area.Left + ((area.Width * (motposition / maxLength))); + + + var borderSize = 7; + var offsetY = CvtMMtoPX_H(10, 0); //포트는 축으로 부터 10mm 이격되어있음 + var portY = area.Top + (portindex < 2 ? (offsetY + borderSize - area.Height / 2.0f) : (-offsetY - port_height + area.Height / 2.0f)); + + //left port + var NewX0 = PosX; // 기준부터 좌측 셔틀이 시작한다 (PosX - portwidth - port_space); + this.arVar_Port[portindex + 0].Rect = new RectangleF( + (float)NewX0, + (float)portY, + (float)portwidth, + (float)port_height); + + + //right port + var NewX1 = (float)(PosX + portwidth + port_space); + this.arVar_Port[portindex + 1].Rect = new RectangleF( + NewX1, + (float)portY, + (float)portwidth, + (float)port_height); + + var Rect_L = arVar_Port[portindex + 0].Rect; + var Rect_R = arVar_Port[portindex + 1].Rect; + + using (Font fCnt = new Font("consolas", 30, FontStyle.Bold)) + { + using (Font fMSg = new Font("맑은 고딕", 12, FontStyle.Bold)) + { + portL.Display(g, fCnt, fMSg, this.arFGInputMode, (portindex == 0 ? this.arFGInputFL : this.arFGInputRL)); + portR.Display(g, fCnt, fMSg, this.arFGInputMode, (portindex == 0 ? this.arFGInputFR : this.arFGInputRR)); + } + } + + //g.DrawRect(area, Color.DarkViolet, 1); + } + + private void Tm_Tick(object sender, EventArgs e) + { + + if (ConveyorRunPoint < (AnimationStepConv - 3)) ConveyorRunPoint += 1; + else ConveyorRunPoint = 1; + + for (int i = 0; i < 4; i++) + { + + if (this.arVar_Port[i].arrowIndex < (arVar_Port[i].AnimationStepPort - 3)) this.arVar_Port[i].arrowIndex += 1; + else this.arVar_Port[i].arrowIndex = 1; + } + this.Invalidate(); + + // var ts = DateTime.Now - updatetime; + //if (ts.TotalMilliseconds >= tm.Interval) this.Invalidate(); + } + + } +} diff --git a/QRValidation/CapCleaningControl/Properties/AssemblyInfo.cs b/QRValidation/CapCleaningControl/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..44193bf --- /dev/null +++ b/QRValidation/CapCleaningControl/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 +// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 +// 이러한 특성 값을 변경하세요. +[assembly: AssemblyTitle("CapCleaningControl")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CapCleaningControl")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("9264cd2e-7cf8-4237-a69f-dcda984e0613")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를 +// 기본값으로 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/QRValidation/CapCleaningControl/Properties/Resources.Designer.cs b/QRValidation/CapCleaningControl/Properties/Resources.Designer.cs new file mode 100644 index 0000000..a366221 --- /dev/null +++ b/QRValidation/CapCleaningControl/Properties/Resources.Designer.cs @@ -0,0 +1,243 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace UIControl.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("UIControl.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 air { + get { + object obj = ResourceManager.GetObject("air", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap alert { + get { + object obj = ResourceManager.GetObject("alert", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap bcd { + get { + object obj = ResourceManager.GetObject("bcd", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap bg_blue { + get { + object obj = ResourceManager.GetObject("bg_blue", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap bg_red { + get { + object obj = ResourceManager.GetObject("bg_red", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap debug { + get { + object obj = ResourceManager.GetObject("debug", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap debug40 { + get { + object obj = ResourceManager.GetObject("debug40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap emg { + get { + object obj = ResourceManager.GetObject("emg", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap erase { + get { + object obj = ResourceManager.GetObject("erase", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap error { + get { + object obj = ResourceManager.GetObject("error", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap help { + get { + object obj = ResourceManager.GetObject("help", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_pause_button_30 { + get { + object obj = ResourceManager.GetObject("icons8_pause_button_30", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap info { + get { + object obj = ResourceManager.GetObject("info", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap mot { + get { + object obj = ResourceManager.GetObject("mot", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap plc { + get { + object obj = ResourceManager.GetObject("plc", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap reel_big { + get { + object obj = ResourceManager.GetObject("reel_big", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap reel_small { + get { + object obj = ResourceManager.GetObject("reel_small", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap safty { + get { + object obj = ResourceManager.GetObject("safty", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/QRValidation/CapCleaningControl/Properties/Resources.resx b/QRValidation/CapCleaningControl/Properties/Resources.resx new file mode 100644 index 0000000..da63550 --- /dev/null +++ b/QRValidation/CapCleaningControl/Properties/Resources.resx @@ -0,0 +1,435 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABXRJREFUWEft + WHlM22UYxmMeMWo8ojPxH2E6l02dqPFWsrgZ2WaWsbiLjcTEOc8tGq9t0f3hkajTMGJBEDY2GFA3xmCj + COUqpXd/pa1dyzoJjGsgx2DGxOn4fN7m/fWADtNC2WL2JE8gv/f73vf5rvd7v8ZdxqUGu91+h9VqXQQu + t1gsiS6X6xo2XVxAzFK9RdLnqN1iR0WbeL+sQ3xZeVKUNTnOwqYA7+KmMwulUnkVgud8W+UVD+cMi3sU + ZydwZWGvqGh2jpjN5sXcbeaApcx9p/RUWGHBXPDjiChudJ2TJOlJ7hp7YOZWfK3yhghZU9wrdle3itxa + t/gUS/147pDftjB7WNTpbW1er/dadhFbNJkk60MIKgsgsZjRDCxlvMPhuAUDWNJokNzJ+/v8bWhvwr6R + XcQOQogrihpc5+XAqw/0CgjazWY/jEbjbapmx8AcxaivXWLOEAksZ3NsYbRIVWklXWJ5wWmham7p1ul0 + t7IpBBD0xYrC0/5ZrNbbO9kUW2i12hsRfDsJAOP58wTA9vbGkm6/wHLMKJsuDWDpC5/OG/SJS8gcFdiX + LjZdfGD2krPV7jF59l7c1097VcHm6EGbGyfyFXBTNKRlhZADWTWesfnIgbLADKQg5MJHOUx0MBgMd6u0 + 9sF3SzvEpoNdUZEOz3N7BvzCiGuLeygN7eMw0QMjfy81aFNPB0mc1mST6GBxmOiB5Vm182hb2ECRkA7E + S/v7haKmdQyDzp8WcQRKwnD4TWWzva9cax+NhkebnYNNRpsTS5oBX4ns+n8OjHYlcpTjcJOjZyZYq7d1 + aAwSwlpzwWVYuStZykSYTKbZRSiH5mYFUsJMMAF3dNLe332Vj8Zo80DHUywpFLRPvlKdDOtkpkiFREGD + 62/M5nqWFUB9ff3VWF7zB2XtYfNaLEi5cilKMTrtssh78X9+3fF/kEmSWFoAEHkdDCkYQdjbIQZ8C/xO + pXMMrC7q9Yt8MPuMwP5s9xe2ELV4XMdJifZrwAtWL5ECN9dNBqPl2Hokc1kkF7YbaO/totdXakmPWIcG + /8UNuGHoDZJZ4xF6s6WarkWOMyXguXqDWt/SNTeLC9ufhqmoqIgr0zj+kFVHykU4fRVax9CUL38GBO2g + N43sv1LnHIjDwbA/EfSwiZSJeGqq8RBCNX09x4kaWNJVVKDIvpWaX89Rcp6nN1vVuJ66wyXT8SzTOvqy + 1Z6xpKBKhU4kRv8xxwkBvq9D4HJwJ/6fxZ/DAvY3X/05UKTg0T/KpsgARwlqg/3UApw2cnQ/9o3OLJnY + 7AcG/+wP1R7xANptPthJg8hkU1gYTJKW9h75pL1oNEl6NkUOBNuSpgyM9ojWOcImP6hNanGgTUbNiTHM + 5Fo2hwDfP/wsqIKiNwz6f8Lm8ECDRLXB9ptS4/oL/6cH35WYnc9Tgl5qlTp7H5v8wLU1P682UO7TNapQ + t46hby5sz0NUPPwuMVkspZRJ4jlhU+I+1OT8ExniTnYVHhqjZKJfA6jT1sMdNCIlnCbh75YC3NvyW/cR + XFEIUsHdQoD2379xqNPXTmYyakSarfTqE74fmigbBNvpXsYgtrKLC6NOL7nuCyoelhX0ie3lbeJ17Ce6 + kuTvVNxCSAp3CwEGM0tntvyyeZzIcIwHt8E/+uRw98mBhmm7qry+juEcEmmZkQVqqMjlbhNAIsF0Ov0v + 5IfOFpH8v4zHf2G9kwqFbZP5mgDavLnYR8/wu1bmPLzUPjrSLgxmqRHBb+bmkwL7biH85VXqHGeyaty+ + F15OrUeodC39NACIm8NNIwMcPwYHymNae/+eOrcobDh+HoWmHQ5fo98HuVlEgM/ZEEuH5Hb+ND2gh8+M + /Xx2GVNGXNy/B7Gt3iRjVn4AAAAASUVORK5CYII= + + + + + ..\Resources\icons8-automatic-gearbox-warning-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAsxJREFUWEft + ll1IU1EcwBdGBUFvPfRUD0VBjaAeerCHCMyHHkrXsZwhohOE2q6F835s0jUlg6h7J2rp7hJsICzQHiJI + LGePfdFLDyVEEEG9SEEguez0P/Nfzu3cfRjn+rIf/OAw/uec38O2e11lypQpEcWMBRXTWgSpQ75X++9u + x+sLo5rWC84hYo3EavD6wihmdIJ7iFgJXl8Y1Yz1cQ4QbfGBcsTycg4QbfGBmjG8g3OAaIsPZMAv+Tnn + EGHKkegpvLo45EjMzztIgClwRu+Pb8Ori6PjxthW2Pgl46D/tvPmCJWuD9C27lu0OdxHz3depWcv6efw + ytJRjFgD76JCdvXfXhoY6aWDd0K0vaeXNso9tK49TM8EtBw9kjaE160N+AO9ApcuZUegC7IZfaUY1his + ZdmwTirG6C76aPfmxeSB8VTSTb9NHaKh7jZuHNMT0N7hVWtHNaxKNWINQcQ92bTCqhGtDUZG95BEogJH + cqAJUpGadU+zyPmpw7Q52MENZNZeCO3Ebc7yc8a9DwJ/s8j4YB03jkkktQW3OA/EvWGBrxPHuXHoOI47 + D8RNssC5B5W8sGUl9SuMblje4TC/Zt0N8F18+SxePceNQ2v88kHcsj5AxLXsqExJIHQZR9cHiPicHbVK + SXuIo+sDRKRyolb7/Ziub8Rx54EAH/gxIyhHj6QewfH8VHlb3zLZ+oTXp1d5fbS6vnU/k63ZZytzPrpi + S/qVKb2u991n60yamvQt8OQY5sUx4f9QwdH8iApksEiImc+OWzb0GMfyIzKQATHTuXFpfxBd34Rj9ogO + JH5tkhOXlkihozhmj+hACElmh2XYhWP2OBD4IStqRUl9gmP2iAwkUngvNwwlAe0pjtojNDCgSbywv8J3 + 8CKO2iMyEB5pjbwwNEEIsX0J/ofIQPY4gxD24sCeKgvgJ3DC066expEyZcqUhsv1B6iAtIhPh2shAAAA + AElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABGdBTUEAALGPC/xhBQAAAsFJREFUeF7t + nL1uE0EUhS0QvBDvYCcVCHAQeRoXId4N1IBrRyClSiSwgR7vFoCgQHZkp4wpDUqo+Bnm7M5AFM1aa07n + OUf6uvG17ifvrKvTUBRFUZan3fl8vdnN7rXS/FkrySetJDu3mDXD7mR3K3bMtrCzW59Lq5vf2UhGJ5e+ + LAZmG2l222lYPe2Dg6utNHvkB24/+WR2h3PT//DdHB3/NIPZ77UCO2E37Ihd/d72x/Ow0zFXnJb68fI2 + 93KTvPliBtPwF68jL6e/TPf1vNgdDpppvue01AseWy+vN/oa/JIY6I0WFySObjk9y4PL0995xS8vMDgm + dl/N/eM8rfViKd629gO4B/BTDg2NCTjYfvyxvA+7o7bTVJ1mkj3HYZgPDYyRneGpE5jtO03VsQePcXjf + vpFCw2Kk//7cPcb5xGmqjj14hsOHkx/BYTFyZF2UArMzp6k67mBwUMx4L05TdSQwjASSSCCJBJJIIIkE + kkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkE + kkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCDJKgKL0gkU + LYQGxcjh+G/pxDenqTr2kGpPLrFa7UnZn2ceDE+Dw2JkZ1AW7zSTrO80Vcce3MJh1B2p+qmsfrrvqp+a + aX7XaaoOCrbs4Rk+gAq40NCYQJ8gXFimN3rvrjlNy4PmRnyorL9bBAfHwNO3C7OZlvV39v676fTUC5ob + vUQUkcX0OL+wu+KX909eljot9YPaSzQ3ugHFnYgWM7yR1rFXCzthN7w8/Z3n5f1XBagPmhvtkOmFgbFg + d17xsa0KLk+UD6I/zw4eW4o/22sGdhpjR7xta78wFEVRok2j8Qfk0Qty9BRILAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABGdBTUEAALGPC/xhBQAAAsFJREFUeF7t + nMFOE1EYhRuMvozLtok+gxq1UMDAri7EXaXs2WkpbO3MGiyKb6EriVsD9g68AwFcSa73n/mnMeROM8PZ + zT0n+XZ37uT/OnOnq9NgGIZh5ufh0a8H7ShZaUXJxHHaisyVw9YMN5PMlkzaY7MsM+v4WFrj6aLb/OzW + zUIgaUfTjmqonu6Rved+id18w5W9b/ZwMLRnvZ79s/bS2tUntUJmktlkRpk1n7sZTUeNbbugWsonl/f4 + 46n9+u69vVl96r1xHbl59cx+2fyQzp6JTHZUS7noa5tucPym771JCBxv9GcSm3HyQvXMjxye7oL0zJMn + z7dxSHzeHGZPYWxMqQ9L9rXNzjx5lH2bhoQ4WN77rk+h6aqm4rTi6aEslsPUt2GIfBqMMoGROVBNxXEL + f8vic/dF8m0WIknvdfYau/+Jqqk4buGlLL6u4V+Vu3K93lGB5lI1FUcXejcKmdyLaioOBfqhQBAKBKFA + EAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFA + EAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKki + MCudWO94NwqRq7XFXOCFaiqOW8Tak1tUrD2RjkBjJ4Md72Yhsr+1mz+B+6qpOFI+KIul7ojVT1n1U1er + nxxLqqk4Wj6WyAVSAefbNCSkAiuVFxvTjH/eV03zI82NclFaf7cRbv3dj7d9+2icdwia56qnXKS5MZco + FXAhvc5/3azy5M3kxclQtVTItl2Q5ka1n56J0mImX6Q69mrJTDLbwdbo/zMvk3eXCtA80two7/9sw1DI + Zq722hZFDk8pH5T+PLfpiSP9s10zZKYTnXGp9AeDYRgm2DQa/wBGopc1FSaqkQAAAABJRU5ErkJggg== + + + + ..\Resources\icons8-bug-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-bug-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABOJJREFUWEft + WOtvFFUUb6Ifff8HRv8AE9xZmqJsd0ZgW0BCWWp4tDxcKIK8FFsSEx/VAlXjB1NrNWpCMUSiSLR0i00w + EEHlIeq3on4UE40K2Z2ZfR/PuXvnzr0z03Vf9VNP8ktn5575nd/ce+fcc9oyb/NWwf6Khe8yDa0zHdX6 + zaj2Nv79iMCv+2mMfLj7/2MQidye0sNPpPXQl2ldKyDgP5BHTKX0UDfE47dxmrkxFLYmpWu/egRUDVPX + fkkZodWcrnl2a2nrfSjsVFBQgrkyClZvHOydW8HevQ3sJ9fjPT3Ql4BcJ28uWnQvp2/MbkVaHwyaNbMr + Brk3DkPxi9MAV34EuPqTD8WpafQZBqt7ufIse97Qfr4ZXfAAD1OfkTgk+10hXhGF/OgIwKVrgaICgS+Q + f2c0aFZv1C2SL6syc3ZiA5TOnlcCFz49CdlDg2DvSoC1uRusresgs7cPskMv4+xOKEJL575Gjo2yQDaT + /0QeuoeHrd6C9pzVuxbgm8ssWOHoUbA2rlHGg2BtWA2Fj0+4Qi99z16Atkh26CXmY+qhT3jY6iwV1eLe + QA7s3QnIDOwLHKuEzMFnAC7/IESWzl+A/IcfiHH8wlfx8JWtnOekpTXCYO/YLIgagf10golzZlMWiLhe + VZ4sJ+HyQ7SEtMeIzFq3SiarHfiiucOvKF+8RyBgjlzLZcxudEKwL3XkLYUs9+ZrClmtMDseZdsjO/gi + 5N8bg+LnE5B/d8zrl+Qygu1vY8Hd6FQwOxezPVOaPisEls5dgPSSVi9hs5H/s63tTi7Hb+zglx4onp4q + i5v+Cq+TYO/pk8nmBGb04RiX47e0ERoQjsvb3eV9/Uj5XsdihaxhLGtjqSsde8S9Z2gHuBy/pQxt1HGk + hOsIpPNVEDQJdt8mscetHjefmnp4hMvxGzocEwS4oYXALesFQbNgbep2+Z/aIo2Fx7kcv6FDoECaTZeg + OVAEYhXkjlUQKC+xrSxxQiJoDljS5vzVLzGW6cLxcV0Q5IaHBEGzkKWkTfy4DynvirFo+Fkux29me7hD + JqF6jkjoNJHvNwPFz04xbqp41LHQMi7Hb9TgoBP1EMyZik1nFmnPuCSNgZbU4c0NH5LHchUTNRnmoTOC + CCthJxUUxsdlooZAXEwgFg5m11JpLDzJZcxu1H3JZPmxUfG29ZRZXmSf7xd8VJnLY1TmcRmzG5U8VOU6 + D9GJIqrob6+wBCuT1gKWnL+7yrjobPe0ADNVt6UpI9wlPQj2th63B8EAmef2ysR+yEcXBytYHQ78a2/v + UcbN9oUrefjqjFpDmYCOO+ftCbSPgkp+M96Jdd774jedtWrJfw0y+3epzxjaCR62eqO+VV5qgr29V22a + EJl9O9xAWKYVJ6ewnL9YbkknJhVfWlbvzCFmqMzjYWszagmR4IZMaK6IuG0n9hiU0NnYYwuhcPy4IkgA + fekZavBlLsx5v9lLtPt5uPqMRHpnkkDpITOwX/zOHNijisL0VJxMQu7Iq7jsMeVZjpmGxTlGfSu1hgFB + FNBXWkyeYQIpnQT5EGjP1b2slYxaQwxw3RtQAS519oWD2PMOBo3P1Py11mqUq6j7wmBJhDgWfcAujl/n + 6ISgJDzn/37zGp2b1ENQmU5lEoqhevIYu8Z7dPD/EYncwd3nbd781tLyLxOgcrDBNHH8AAAAAElFTkSu + QmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAK + YQAACmEB/MxKJQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJrSURBVEhLvdZd + b9JQGAdwEr3wTm9M/AheqJlfxWSfQudMBnYaWarQ8WIyMBlUWoSp0CkzawWM6C5G0aiZzhfoMCZidIu6 + bG5DL8yc0mMPO8cwOIUyWv/J/6aF55eekifYzMogHT424AqdoGl6H7pkfSgvn/bzYu36XVmlfNHNU3Tk + MLplXRwe7mn0zqw6pyyCuYUlIL+sgLPe6O+BS+xx9BHzA1GGnVLThTJ4UvxUh2ELrypg2BezBseomFeA + JCsg84iMn2FCfegrvacZxW3BtWMf9se2TMH10B14aSdO+a719uSdUFxTcaMorg7e3bHbPZH0yBVBlfIl + IqLX7OMyeNbwzvPz74HDw//UlsxeNFo/rnCSCgnZqjNwE9x6ME8E2jXThN+QCurgxXA/Gk8OROPizFr1 + lwreLa2CnnFtyVzmp2unGfYIIlrTiP7YAvX+wx/uAtfeOZeaUbWjTiOiNe6Q4Elm5Y3vCGxs5es6GNHw + yfvPiQCp4mwJXAgmVDvD3UZEa9qhuBgXci+IUGNNQ3GN4KajuO1wQyjDCkPNPySjJeEQdWqow8uJiGiN + wx8/FJyQlneD4kLcObaNG0Jhzvu5PuGevEoa2E3fLq7Un9wZTKpDTCSLxuunP5XaM8pOvi5/XK6RBhot + PLHxRKZq9/ASGt05lDey380KpTeVz39IQzt1Y7OmLYfcmms8cRKNNJ46HhaUbvGeUByMFytfDOGmoDhG + cVNRnE44RKNTuW+mojh0IH6AhFuK4kCcCQsLxQ/b+H9Bcc6Nxg66rwqKtsfXAxPTK3C9olvWB/5Hosbi + R+F6RZd6jM32F+J393EUKic/AAAAAElFTkSuQmCC + + + + ..\Resources\icons8-hazard-warning-flasher-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-help-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + + iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAK + YQAACmEB/MxKJQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKmSURBVEhL1ZfL + bxJRFMbrwvj4a4wLXdRUXZo4vGkxtDst0MQFGKMwMB1eKdVNI9CdaNQmxkWtIQyvqRTqprU8VpZuNLFt + FOq0tbpo7ALvCbch0gsZ4Frjl3wJmTnn/HIvl3MPff+F9NZXZxi7cFnBCka1K3lf7Uzcg88KNjZwhc+c + xmH0pOFSar17Pmfwvd0YCxertsjavmPmUw1se1zeh2cGf2Z90D2fVXMJJU7rXhoucVXPi2vm6dKe/021 + 9jC+29YQYw4X9/QesazhkwO4TGfSuUXXSCD3zfe6QoS0s3euUhtGuTo+5cDl5EnHi89NofzuA2GHWFiO + IdcULOwg+FNctr104ym/JVz6QSrWjS2hwne09RwuT5aajV8yBhalXlbabKhlDOQkrSt2EWOaVTuhd6dX + fTIOUaf2z1VrWj79ARgY1pDKmVTBd0JKfLn0s3aoz9LBkffw7FAQ2/webArmtxln8jrGNTToSb9rtVoa + YPh16N1iFuPqYvjoWYN/YZOUAKYBBhu8C5t/dDhoeZbpkkQKBtMCm0NFSWEX+jEWTrNgvBMpH5CCwbTA + tsjqL4aN3cBY1BpRl7K/+EgMBtMC21FvR33fhbHQk5Pj9pljAqNFYmx9q2EbSMFgWmArYihZYQhj/+Hh + unZbODXky2yQgsG0wAZvZn10dOUkxtaF2mXubzcQHZ/OYFxD0DLNocI2KYkG2PSoRcsEocu/4Jn9Skzs + xZ7ZL9AuVzDmqDQuod84kduifS0OT2SrKjZ6AWPIQrPS2K2p9y1PeKe+ObUsabi4CZdvL3R3PqM1+mh5 + 8QkuK09aLn13ZLKHYW9ycUvrTltxuc7EOKLnUfIyGlkrssfbYL6KBrwllSN2DpfpXjCkyx3olVySwWn0 + dOx/Yeirr+83SXRvTbd4pKkAAAAASUVORK5CYII= + + + + ..\Resources\icons8-info-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABF1JREFUWEft + Vt1PU2ccZtebu5gXy7Ys2TJ3vf9id5rtZhdeumQxQbaQQQnooAWhxZaPtpSV0p5+QG0nLT0gVaHGQqQF + lkgUK6UyQJSYbZmaqVkCi5ydp/m97Hh62h5LSxazJ3mSk/M+z+/39LwffateOySCX22lr317rxTCS2Uq + h3Ss+o+d9T6hFMJLZSqH/wPuF//pgDVnLJ/09bU/dwx2PyuF8KIGlSsvTp2xftxs9qdH40sCP5MqiZH4 + baHFHMjUt9k/pbLlQTnCMZY9ZDnDMZYtZCXCMe47ZCXDMZYc8iDCMb5yyIMMx6g6JM6oZvP5ZRiUCknJ + jSWeGRyRVTU0cRcfFKuJcfQueE42mrw31YT7MXj1UZ3e2UG2oqAfnlYTEhnIlovmXv+MklFK6/Dkb/Ud + Tg1ZVANL54fe4ksHGciSi3qD2x2O31I0gl3c+P269oHjJH9lFAuJ9w0GzkXyXJxq6z/mjszuyI2R6ZSg + t4+u1bcNfE7SklEoJMdf/7tGZztK0lyc0HQeOufk78mNLZZApqbV/hnJ9g2syRZxTcr7oDcykEwZzRZ/ + Um4UN4SHhssG1JT3EUMnaDg/Gjpdgcj0y7tNKeCggW8K2q9tXnDMbBQiNNCSbQ/ygOjZcI7z03B+fNfa + f9w7nnwhNcsD9mgDH0U8iY1f7jwV1JD3JDZt2qEjZM9CHtA7lnxRq+0vvgG/1na/Y3Jf3JKa5QHdXdHp + zNKTvQCrqafC8o3Hwu2FR1niGe/Y+F1R6zZGp4Uq4Q0qkRPQxI1vVTf2HabhwtBZAj9LzdKAg/rI9wvx + jb9Y8yUx0NzUQ+FSMCWEXfPbIJ7xDmGZDh54qUxOQK01sEBDxdFgdId5yTpkAbtPez8Ic7NrrOni7O/C + ZGh519cbW7ad5Y8a63xvgnbx2WeeSk+G0rvQMD28qIFa0oA4xhqNnhG8V4XaVvvJoej8rjwgZ4zGVmhq + 8eUQzmO6wmVNCuCMV7xToZVdaOGBFzUwJg04HJ0Xas86TmZNavBNU897vZ7or9KAg+189dzV9edohPWF + KcSXI0teiJqVudhD0fNnNiRqoJY0YI/Y64TG+j5Z1EFnDS6yAho9FxxxzqyiAYhNgHWGaSV5Xgy0hb64 + /FNKuHPj302FWqjJ6uusgUWSq0edwTXCrktave/+ys3Hew0wZSHn3LZNe+EtkudFp8Z1SNTuSDdM5tYT + oUXve8DqoxfJS4PbOHFZIeCOmoCWmuG3lQK6TdEJkuwfvU3n31WaYuxWkuSFQxf+UmmKUZMk5YHiJhGP + EhrOiyFLLKO0SWi4vJAeM5gynHM4Smg4B+6uS/5YnmOmIlA6qHHO4Uv2d4wdw5oEMa0+cyyDcPkO6opB + 8a9OnEKss1FufhvEM96xLwfK/+oqCs40EcdOZM2xvrAJMO0gntmaA3FZEKf2pctCRWE7HfiQ9ybXWYBi + 5D3JTVzRyH4wwCU0zF1f472J1UKERunC+pqgquofdvoa6+LDQkwAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAnhJREFUWEft + ls1rE1EUxd/eP0BcigvBpS5sQcVdFEVTUFuoOi1pG8ViotSkBGea1tSQzJBObEhSMOmHMYm2JqmlWgNq + IoiLdiXBD1zozmVx6cJc33u+DIozNZ1JYsU58CMhN/eew7tvYJApU1tZMIe2wRSaw6w1lDh6jj/3Mhv9 + ghgaxMOgKcRQidnoFx7iVR3eGCrMRr/++YDvvAgWL6pTvorgW0y9j9H8gPJpBMEObT6Oq/cxmh/wlQvB + LKdO/gKCrxH1PoZ5B41iBjSKGdAoZkCjmAGNYgY0yv8RcOu98vd6pT0cL+0juH3uA6/Du5ffT+5800je + yrtWs+KxrrOeiR3Mtn71jYY+9fAitIpeQfrACVI3s/+zAsl7n8dvp6EV8JEZ6B+TqzSsII6xCBur8Oxl + BQPzKyVw+SQYuMaDP5YA8tvPTM5mwe4SwDnih9TSk19qm+lN5pbBKcbIaVbP82I7i6EtPIAG7By4DPst + JxW8oahicGsmC20Wq1KzdHIwXywp9c32JguP2cqlaRZDW3hIJfWwSJs5hwvuLK7AoRNn4JTtkmJidwu0 + Hs88gCteP/0uT6dpTW+v/Ua4ygniKouhLTykQlbUfrQDjnfbwBMIQ9sRK5wbHFJMHCM36WBiUDutqUyO + 1vT0xtM5sI2GyF18wWJoCw+hKx72TyirOGztUgIQyJ0jqyE1Qv/QdaWmpzeSKbAnWvSxGNrCQ2hAQnJh + CUKJFGQfPVUMaiwUyyAn72Lz/G81Qj298XSehvtxetJ6n0fezmJoa1hOfHEGo9BsHIFoba3k4Vjv4YMH + WYSNhf98HzettQRBLJO11nVypkz9FSH0HdsLU8gVsNwDAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABGdBTUEAALGPC/xhBQAADlRJREFUeF7t + XOlzFMcV96dcH5L8BTm+53alkg+5/oNUkvJ3V0VoDyGMsGFXO7urlbQ6kXbn2FurvXQghGStThsMso2N + IWAS4jJg7LKNMT6CQRDQEYOh079mZMFs7zkzwgev6le1pZnu9/qpu9/Rr+eRh/SQvr5U74t/x+oM/sni + DFhtLjnU4A0dafAo521u+ZJVkFYszeJnAH7jb3hmp+/g3fpm0bKlOfBH9KF29/WgOqH/txZBbKeK+LfF + JX7a5I9f84gjK10DeSIOHyCxiRfJwNTLJD17jGQXjjPgN/6GZ3gH73rE4ZWm9vg19GHzKKfq3VIbVepv + VDZfLapzKz+2CHIrnUUfbmuNXm+LjN+UR58jmbl/kKFnXtUF9IG+2sLjNxt9kRt2t/KB1SX56Mz+kcr+ + y0t1TulRm0d+lipu1SvvWYuMP89VgpEIjy+SFnlszeqW1+weeaHeFfyVKs6Xh6A4q1t50e5Rlulyu23E + TKsW4NmTnL5D981V+g88bHX2/1IV74tLj/uC37e5pSQVeKV3cPZ2bv44d3CbCcjQm5q5Q/dJzMpEvaP7 + e6q4XyyyCeJjVHlXPeLoanrmGHcwDxKpmaPEHRyhs1G6ahXEv6liP3h63Of7lk2QB7Z6Q8vhvebvcXoR + HlskW73hFTudjY2N8jfVYTwYgnWly+INZ192OT33xZt1xZCibpGjN7NKjczZB2atLY7+n9sEaal7IP9Z + boEvKFDqmdkoJ1dXIn/L6pau1LnEn6nD2hxCBECVdyOQW7jDE24d0sh+8mRnnDnCvOdmAjzBOzj0LPf5 + OjAGui/esDjEP6jDM5egPLpsV+C88gQCBqePEG8wSzy7Q0ROREhnbB/3PTPRQXlKlLe3L8RkSeZf4b4H + YCwYk+lKrHcEfkqn/HV55ABXEACzrrFFJk9PJ8itT3Lk6oUs2eaTSw7AaIAXeII3ZJjMJ5hMUgm5lT0H + CWbiFlfwF+pwjSUYDOx5pZZtd3KK7OoMkXfPpAlZGvocGIBPGeG2MQPgNTmVuE+Gd8+kyK4OhfQM5rlt + AIwNe6LhhkV1Vc7BYPAYI+CH0L7+MLn2fvY+wYG1j3OkqU1hyQBeeyMBHuAFnlo5MCNb+kOkjcqamz/B + bQ/DYndLZwx1cRBdOHrSK3yrdoK0SDnSF4lwhV7HwecGiDuQ4rQ3Fu7+NDl08P7Zdy/+958cCcQjTGbI + rm2PMTp3Z1ZsHimuDl8fIcJo8IZWivl57eExEohFyGef8AVeB/YiZ1eI7TW8fowA+gYP8OLJsA7I2h+N + UNn3cPuBn9hAne0tzsBfVDXURmpse7VYhNERnyStgRD7r/IE1eLE0STZ1RWnbfnLRw8wcxzdcfLq0UEu + by2wWloCYdJFx8DrLzR2iBoVeUlX7Gx3K0mPNLrKYyAO76cGQyH/5ex5xXDnyhDxi2HSn10o6E8v0Gdb + MMJ48HjzgP16Jx1DMLef26cQHF21CUpUVUd1VOeUHqXxIjcxkJp+hWxvC5HzGmtbCd58LUWa2sMsS6Lt + t1bAiO3wh8kbpyqbfffivbNpOhaFjUnbLxIQyGXW5NpQ5b3Um5otcFmwVIT+DJmeLb5Rl4MYj5Z0J6pF + TzJPneYol1clyM8kiNCX4oZ+PcmZ2za38ryqlsoIyUe6fFeznFnSl56j+164rNEohQ/fypBtrQoxIgGB + PtAX+uTxqgQYC1ywvvR8Qf9YKXavsoIVqaqnPDV4lWe7B6ZvazuDQpvo0sW05wlSDTIjMeKPjd/Xfy3w + R8dJZjTG5VENsB1hW+JNmi7q/9o9yryqntLEIg667nlpeOpIk9Bg7UvlXmADZyHe1JECPpUCMTf6WHqv + ckNWCkoyhmOAAj7QBc5Y/i70/VBVU3HC6RkOgHidPNEaIu+fq32paDE1HSc+ufYQr0UaJlN0/+L1XQs+ + eDNDnvAp3NNC6MTqkjyqmooTnX0f8E7P8J+JZvQvlXuhJ8QrFbLpQSRFZ+Fg4SyEL0yNyUVVTXzCoTfO + bbWNgV1dsZrchHI4dJCGeDT84vEsBVjNxUMD3D714My/UsTZA2f/fn6w0Ftbwje2OMVfq+oqJKsr6G8L + 77upbRyfPEx2tCvk9mU+Uz2ABXR2KUQZrTzEQ8gGJ75cyFYL4Ig/6VfYmLV8W5XxT6mOfKq6CgnlFrxE + KZKTE5r0kJE4eSxJdlYc4p1gIdvJY8avhnWMT8ZZmKrljTyo3R06qarrfkKRDupMeBvoUx2Rghyfkbgb + 4kUqCvHwDt6tJmSrFu+cTtMxRwt4Qzesnqcp8G1VbRuEKikU+mgbDdIQp8Ej0eVr/HK5F2+/nmYhXpQa + sPbIGN1zo4wvgN/+8BiJTrxAl1eYvPWaef9MANuK3S2ysWv10dSeuMZN/aPEDFVS2gaB3DOkU4lwGRmJ + W5eGiNCrkO2tMpmbT5ALb6RZlge4QB13/O0J+sxN3zFj79OiQ44QkXMg5Q6OLG9pFreoatsgqyCFUTam + bdARmyBPU3+Nx8QoQHn9UTr70qWTsngWSYVJIFY+56cXk3m6D8YK90Gqozt2ISSpatsgFDfyDl1axCw5 + fiTJZWIUhvdGSYwqr5J9De9E02GyZ58xEVExHHs5SceeKdAH6hO3epXDqto2yOZV3uM5tA7qE507leIy + MQIXz9EN2y9V5RCvfpRlbRA58J4bgbPUH3T0JAr0Edv3AqHeyruq2jbIJsiXB/IvFzRArkxPpqMc9k7E + yDzd33jPSmF2Lk7GaVveMyOAMSO5oNXHAI3dabR2SVXbBqEOGWcB2gawgviP85gYgZY+mbxPDQbvWSnA + sPj6Ze4zI7DyUY6NXasPJFmtbvmGqrYNQjE3MrvaBtTvIfXNQdNgE4IVn6ncCyx5uBq8Po2CVRAL9IH8 + INXJLVVtG1RMgWajwVvd/rcOtOHNELNRVIHFlrDZ2NkZYT4fT0mlgKTuTupg8/o0E0WXcDEjYjYQYczW + cL4yMxMn7WH9Ge1qUdSI2D2h85tReqFFfOJw1Xk9GDVELLyMidko6sbAkYaTyGtkNlAhoCSjFTvS8kCU + xcu8vsyGOLSf70hTixPuTuZLFkyaBRgv1+5BpsRSLhOe4R0XjiCLFAeZjaKhXLFkwmYhQ63bU9SgNLWK + zEmGkYB7g6WN3/gbniG1lp17MMoDiiYTUHna5E8UpLM2Cz2DM+y8GQ4yIgw4yY1ekQG/xydjLOzzS2HS + myo8s9gsbPfHr9U1B36vqm2DSiVUzQYMCVJVH79dPmT85B2cnMlsM+f1ZSZKJlRBNq9yqlTtsxmAUE91 + RsnRlyrP+Bx/ZZDs8Ee4x49mAtkqaoFfVdVVSLiGipuUvMZmAZWtg0PVJwWStE1raPPKhgFfCIdKUouq + rkLCfVtcGeU1NgO4goCCyFpCORgYV0/IlFI5HtaPNcvWyODweDOupSbzR+i+p7Dib56CKgGsM/pAdMDj + YSTCexeJ3aNcUNVUnHBZmVfaYSRyCyeIs2eAHNiv/6j0wP4Blvg02y/0SqNrlmbRraqpOKHEv1hxkVHA + OUt/rLLIoxzQB+oNO+PmXeaBLqxuaa3eIf1AVVNpogp8pntgmnulQS9Qe7yjTa6qNLgcrl/MscoJswrY + uxJTKG+bU9VTnlDSWqzAUg+QCkKaHPUnPEXoAc5tcPwwOH2Uy7tWQAdUeStVfzqAKvBFGh0UFFnWClgx + TyBjaonIvqk4K1QCL54MtaA7OY0S30OqWionlPliL8Ss4XVcLVAyhlDNzPNcVE+wUI9TnlYLUHiOQvua + r8PaBCnuFod1JxiqCdX0wshQTwiOrFoFJayqo3rCJRN20WZskcugEtQSqumFEaHe3Ys20lKjT/6uqo7a + yNIc/CuuPdV6XtIq01Bt2NzSEB4QHrbWeEMUd2Nwvc3iCPxZVYM+srrlRPHLhsWhJ1TTi1pDPYzRsTu7 + TP2+iDp8/YSrn3aPdBZXQXlMeTAiVNOLWkK9zvjULWo4Xn/M5/uGOnxjCBGKVZAv0/9oWdfGyFBNL6oJ + 9QJZ9v2EyxVHHNUSjZN/YhWk61KZnKE/NkncvSFTaqqrBWSALJCJJ+s6UKNNlXcDXyNRh2sOoTqT7okl + PzqBT9U1706SDuqTIQ3PG9hmAHda4Be6qCyQiScrgNpnjInOvN+pwzSXcB0CM7EvM1fiFO8E2Z2eI9vp + HgQrfOW8eQVKWlw+n2FWGLwhQynj159ZuI2xcM85zCR455TxFRiWUgLi+y347AlzbjMxVsDNG7QRePt0 + il0GguHAzYJSfiBkhsHAnoetSR3W5tLd1Jd0xtGbWS7nJ2Iw3ck8c6qbe8JkZjbBTuD0pLTQFpYWV2+b + u0NkJ+0bN6rKOdDw8xy96VWbRz5tmsGolODiWF1yDB8fg/fOE1iLyN5FdssShUUI8YLxKJmeuXtdH7MI + X9dY+TDHFATgN/6GSn68k6fvBuMxss0nsQIj9IUPL/J4aQEZG7zKql1Qooa7KnoIH2iwueUlfGKumgQE + blyiXMIfmyA+KUtcvQmW8mpskYjFFWT1ifiNv+GZT86yd9Gmmo/5IDEgBBDbykuGRRhGE4udPVIUWRzc + 9DY6n1gLIANSUsiqILrQHdtuBiEhaxPkRSo0PgF6S09QXyvYnnv3ojRdrvLipn+hzQhSM9vz1Mda88h7 + 1sz+QCMsK07PcACEM4wGtzJrumO8GYSb3pZm0Ust9kWcrbYqe2/CeTViZqIPVAzg0Bt94+jR6gp6Hrh1 + NYtw3xan+zav8k9WZ9KeuCYER7DU736Ie98LLGqAW4SyNwC/2Ye46TMYD+p7EiE4vIxCH/SBG5R0y/DW + VfNhiK8CoUgHoaHFGaxHzV2DN/RSg0d5hxqhS1TJn38K3iKIy/gbnqG4Ee+iDaKHooU+D+khfQ3okUf+ + D1WHWk/swkxBAAAAAElFTkSuQmCC + + rell icon ( 80x80) + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABe5JREFUWEfd + mF1zE1UYxzOjd+r38AVH/TBcOIgX3sggQtJqgQIlpQn2vSSbwiabzW42zXvSNiUJjjJKodBC6oXjgKDA + ADpjWxTEGwWkx/Pf7gm7ydlkU+SGZ+Y3k9lznv95Nuftedb1wtqOfcH3uv3S8N4htXrwWGqpL5i5TLlp + cPngxNQS2tBnZ+/Eu4bb87WPeoZe8/ijg/snEstjavVBbG6RJE4ttwR9RtXqnwfGEsuegcjgTu/kq4bc + /2der/dlj0/y9wXTP0Vnz6/zAnGCNLuwTjWueXyRAWga8s9mu72BLXuHleVw8exj3qCbQSzMP+4ZVmvd + R8U3jWE2Z3v84of9ofxtrVrjDvQsQPNIKH+ryy99YAzXmXn8kT3Dcmm1Lli5RILxPBmX002DOQW+0IAW + ezYolVa7ByKfGsM6s939ke3D8txvTEQuLZCQqpK1Gyo5fVohkeKZ+gBOgQ98oRFSFF2TtQ1F59Yc/5NY + c5hW5ixR4VgqRh7f1Qi5lyBPftdIUNHq4k6BD3yhAS2ZakrF+Xp7fyh3yz0w+YYRBt+ws7Ah2JqLzi4Q + JRMj638kdGFGbVEhxzNf1cXbgb6XFlWLBjSVlKyPgT5apUawcVrubhwlbLdinUzSaf33rjU4xnE1ToWd + bJ6a3pengX8SSyde3ViTYn7+kXsgfMQIx2o4hHHOMeGAmiN3b/KFwfUfVCIky6ZA+AjJk+Rn2penAdZu + xEkgnq33p7fQVe5hjhuCHcLRmQUyV45xBc1Ek4plRzaCNvTh+ZoplRUc4rpPdOb8epc/ctQI66ntn5ha + ZsIBJUUervHFzKzQHRnUpi1BmUEb+vB8zfyzSjeemqr79Y5pNSOsDcPFj7sVjWr5IslMt39rxlReIbGT + S5bAgFJeIql8+1lgJGlfjA3fMbVyf9ch4W0jPExveJRd/MJUhdy52v6tGX/9qtF//OkaYuAZ2ng+PG5f + UYiQqui+sdIF0u2TvjDCc7n2jcQrTBh/deOx0o7sdJQE5Lh+XoKJaJz+ezK3rx0YUzBN894RtWyE53Id + HJ+6yBrklPO3BvduqyRXDJNHxkEO8DtbEPU2c992ROnYLA4a06IRnsvVF8hcYQ1arjPRwrRoCY6BZ8UZ + sel5KzA2iwNJrxEevUGE7HXW4Bckkp9RHaMm7YNQUyLXxw6/EKkH6BUy143wrAF2CtYcLzigpGNcHydY + AjRPcacEYhvT2RgcngnKFNfHCZYpNm+STpFmzpJYMmYJEr9lPRG4wPVxgmWT9JiOmc0wKqVIMnuC5It0 + zVHSOZGMRTef2ALLMdN1NDLipELjEc59Tc6dab55LiwoRMw6T8nM4KC23McfHwq+g9KQ17kVeCklbX8t + xlL0GqSD8XxbMaqU7+/oDWwxwtuwA+OJGq+zHVoVG0Qjf6/YH+xIAo7Jmt6Xp2FHU7IAQ1GNupXnwAOZ + Sqs8j3HzCs0bE/YZTyPSzPknbr/YnG4hSURRzXNqJFz4llROOc94ylWF+nzD1WqkL5C8uv2zkVeMsKzm + 8Yn9kcLZhzxHBlIiUVM6SijQFz4snbJDzJ951DUQ9hrhNBsKlp4htdaqUJ+QU+TBL/algB0badnTbKUR + FE2fDyqXtm7NvWSEwzd8jkDFzxOZpPnadxedT20j39cUqnGySRd4adm5yyu8boTR2ty+E9toMV0v3AFd + vDTr7SzH4wENaJm1h6TSqtsX2WYM78y6fOHdg9G5FSaCKQgliqRQotfamv3RYgdKzMqXKjmm5Ejc+ulj + xd3ppw9mbp+8DRW/eU1Ks+eIoGVIqqjqpUGrzYK2Oz+qet9QPE0rtnN1HbwwptXtE983htuc4XMEKn4U + 1UwcYEdOpqskSAeW0zTZzKokWVB08BuZOdqwbht3bzg//xAbwvGaa2cbHzAj/SiqUbeaB+sEHMI459x+ + 6XDb3boZw2GOU37/uFZDaejknpVLi/rd2juWqMH3uXwC5hkuc1yPPcNKBbkbEszDQuYGwG88Q5uHlo+f + HAq9Zbi9aOZy/Qe4xYHxvg6NpAAAAABJRU5ErkJggg== + + reel icon (40x40) + + + + iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAW9JREFUWEfl + 2E1qwlAUBeBndygvC9CdCHHcuIkWqp27DK3toLiIOrRkkno1B6TcJO/e95fSA2fiUfgwPogx/yLNYvGw + K4rqOJt9UPfWPtJr7Zw3BNlPpy+nsvw+V1VD/SrL+s3a1+zIxpjJBfJ8j0NPy2V9KIpNNmQfDs2GdMGh + yZESHJoMqcGh0ZE+ODQaMgQODY6U4BBuu28wpPSbQ7jtd72RmsuKcBtXNVL7m0O4ratipM+BQLitr85I + HxwV4bahDiJ9cVSE21zaiQyBoyLc5loWSTebdA/HfUBShNskJQuZWp4xx/n8nXujtAi3Sft5MbW8PwAc + 4yWm/zUt73ZIDtY+jeiQrNmTHALp004ckhM5iEPUyNWqqbfba9m9p844RIMkGCJBinGIFKkBqnGIBpkM + h8Q4OMFwSEhkcBwSAhkNh/ggo+MQDTIZDpEgk+MQF2Q2HNKHzI5DCDDaR8AIQeiml+6CqaN6iB43xvwA + iFk1KsvXeuAAAAAASUVORK5CYII= + + + \ No newline at end of file diff --git a/QRValidation/CapCleaningControl/Resources/air.png b/QRValidation/CapCleaningControl/Resources/air.png new file mode 100644 index 0000000..d897308 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/air.png differ diff --git a/QRValidation/CapCleaningControl/Resources/bcd.png b/QRValidation/CapCleaningControl/Resources/bcd.png new file mode 100644 index 0000000..fc99058 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/bcd.png differ diff --git a/QRValidation/CapCleaningControl/Resources/bg_blue.png b/QRValidation/CapCleaningControl/Resources/bg_blue.png new file mode 100644 index 0000000..2ae2259 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/bg_blue.png differ diff --git a/QRValidation/CapCleaningControl/Resources/bg_red.png b/QRValidation/CapCleaningControl/Resources/bg_red.png new file mode 100644 index 0000000..981e312 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/bg_red.png differ diff --git a/QRValidation/CapCleaningControl/Resources/emg.png b/QRValidation/CapCleaningControl/Resources/emg.png new file mode 100644 index 0000000..9e5daee Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/emg.png differ diff --git a/QRValidation/CapCleaningControl/Resources/erase.png b/QRValidation/CapCleaningControl/Resources/erase.png new file mode 100644 index 0000000..e6f0f75 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/erase.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-assembly-machine-40.png b/QRValidation/CapCleaningControl/Resources/icons8-assembly-machine-40.png new file mode 100644 index 0000000..8c48dfe Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-assembly-machine-40.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-automatic-gearbox-warning-80.png b/QRValidation/CapCleaningControl/Resources/icons8-automatic-gearbox-warning-80.png new file mode 100644 index 0000000..2bd7235 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-automatic-gearbox-warning-80.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-barcode-reader-40.png b/QRValidation/CapCleaningControl/Resources/icons8-barcode-reader-40.png new file mode 100644 index 0000000..e0ba761 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-barcode-reader-40.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-bug-40.png b/QRValidation/CapCleaningControl/Resources/icons8-bug-40.png new file mode 100644 index 0000000..9efaccf Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-bug-40.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-bug-80.png b/QRValidation/CapCleaningControl/Resources/icons8-bug-80.png new file mode 100644 index 0000000..1c529aa Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-bug-80.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-code-30.png b/QRValidation/CapCleaningControl/Resources/icons8-code-30.png new file mode 100644 index 0000000..95f99b8 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-code-30.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-deployment-40.png b/QRValidation/CapCleaningControl/Resources/icons8-deployment-40.png new file mode 100644 index 0000000..db1b184 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-deployment-40.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-emergency-stop-button-40.png b/QRValidation/CapCleaningControl/Resources/icons8-emergency-stop-button-40.png new file mode 100644 index 0000000..1ee1522 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-emergency-stop-button-40.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-erase-30.png b/QRValidation/CapCleaningControl/Resources/icons8-erase-30.png new file mode 100644 index 0000000..d2224c9 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-erase-30.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-hazard-warning-flasher-80.png b/QRValidation/CapCleaningControl/Resources/icons8-hazard-warning-flasher-80.png new file mode 100644 index 0000000..1ae1ccf Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-hazard-warning-flasher-80.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-help-80.png b/QRValidation/CapCleaningControl/Resources/icons8-help-80.png new file mode 100644 index 0000000..04d5900 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-help-80.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-high-priority-40.png b/QRValidation/CapCleaningControl/Resources/icons8-high-priority-40.png new file mode 100644 index 0000000..ddc9455 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-high-priority-40.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-info-80.png b/QRValidation/CapCleaningControl/Resources/icons8-info-80.png new file mode 100644 index 0000000..7f5bd87 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-info-80.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-pause-button-30.png b/QRValidation/CapCleaningControl/Resources/icons8-pause-button-30.png new file mode 100644 index 0000000..3fa608c Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-pause-button-30.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-rounded-square-80.png b/QRValidation/CapCleaningControl/Resources/icons8-rounded-square-80.png new file mode 100644 index 0000000..db2b607 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-rounded-square-80.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-rounded-square-80_blue.png b/QRValidation/CapCleaningControl/Resources/icons8-rounded-square-80_blue.png new file mode 100644 index 0000000..768e3c9 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-rounded-square-80_blue.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-rounded-square-80_red.png b/QRValidation/CapCleaningControl/Resources/icons8-rounded-square-80_red.png new file mode 100644 index 0000000..2e5a27e Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-rounded-square-80_red.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-settings-30.png b/QRValidation/CapCleaningControl/Resources/icons8-settings-30.png new file mode 100644 index 0000000..ddef91d Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-settings-30.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-start-30.png b/QRValidation/CapCleaningControl/Resources/icons8-start-30.png new file mode 100644 index 0000000..100219c Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-start-30.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8-stepper-motor-80.png b/QRValidation/CapCleaningControl/Resources/icons8-stepper-motor-80.png new file mode 100644 index 0000000..89c6ae7 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8-stepper-motor-80.png differ diff --git a/QRValidation/CapCleaningControl/Resources/icons8_pause_button_30.png b/QRValidation/CapCleaningControl/Resources/icons8_pause_button_30.png new file mode 100644 index 0000000..f6d30c6 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/icons8_pause_button_30.png differ diff --git a/QRValidation/CapCleaningControl/Resources/mot.png b/QRValidation/CapCleaningControl/Resources/mot.png new file mode 100644 index 0000000..3bb6ae9 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/mot.png differ diff --git a/QRValidation/CapCleaningControl/Resources/plc.png b/QRValidation/CapCleaningControl/Resources/plc.png new file mode 100644 index 0000000..1474662 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/plc.png differ diff --git a/QRValidation/CapCleaningControl/Resources/reel_big.png b/QRValidation/CapCleaningControl/Resources/reel_big.png new file mode 100644 index 0000000..2ddd859 Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/reel_big.png differ diff --git a/QRValidation/CapCleaningControl/Resources/reel_small.png b/QRValidation/CapCleaningControl/Resources/reel_small.png new file mode 100644 index 0000000..3049f6b Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/reel_small.png differ diff --git a/QRValidation/CapCleaningControl/Resources/safty.png b/QRValidation/CapCleaningControl/Resources/safty.png new file mode 100644 index 0000000..39b1abd Binary files /dev/null and b/QRValidation/CapCleaningControl/Resources/safty.png differ diff --git a/QRValidation/CapCleaningControl/UIControl.csproj b/QRValidation/CapCleaningControl/UIControl.csproj new file mode 100644 index 0000000..24bc9cf --- /dev/null +++ b/QRValidation/CapCleaningControl/UIControl.csproj @@ -0,0 +1,187 @@ + + + + + Debug + AnyCPU + {9264CD2E-7CF8-4237-A69F-DCDA984E0613} + Library + UIControl + UIControl + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + x86 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + UserControl + + + Loader.cs + + + True + True + Resources.resx + + + UserControl + + + Unloader.cs + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/QRValidation/CapCleaningControl/Unloader.Designer.cs b/QRValidation/CapCleaningControl/Unloader.Designer.cs new file mode 100644 index 0000000..480d8c8 --- /dev/null +++ b/QRValidation/CapCleaningControl/Unloader.Designer.cs @@ -0,0 +1,38 @@ +namespace UIControl +{ + partial class Unloader + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + } + + #endregion + } +} diff --git a/QRValidation/CapCleaningControl/Unloader.cs b/QRValidation/CapCleaningControl/Unloader.cs new file mode 100644 index 0000000..cba7d8a --- /dev/null +++ b/QRValidation/CapCleaningControl/Unloader.cs @@ -0,0 +1,343 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing.Drawing2D; + +namespace UIControl +{ + public partial class Unloader : UserControl + { + public Boolean bRemakeRect = true; + public CPort[] ports; + + public Font Font_Alert { get; set; } + public Font Font_SIDLIST { get; set; } + public Font Font_Sign { get; set; } + + private Color _portback = Color.FromArgb(32, 32, 32); + public Color arPortBack { get { return _portback; } set { _portback = value; this.Invalidate(); } } + + private Color _titleback = Color.DeepSkyBlue; + public Color arTitleBack { get { return _titleback; } set { _titleback = value; this.Invalidate(); } } + + public Boolean arStop { get; set; } + public Boolean arBusy { get; set; } + + public Boolean debugMode { get; set; } + double port_width, port_height, space_width; + + public Unloader() + { + InitializeComponent(); + + // Set Optimized Double Buffer to reduce flickering + this.SetStyle(ControlStyles.UserPaint, true); + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.ContainerControl, false); + this.SetStyle(ControlStyles.Selectable, true); + + // Redraw when resized + this.SetStyle(ControlStyles.ResizeRedraw, true); + Font_SIDLIST = new Font("Consolas", 30, FontStyle.Bold); + this.Padding = new Padding(5, 5, 5, 5); + this.Font_Sign = new Font("Consolas", 15, FontStyle.Bold); + this.Font_Alert = new Font("Consolas", 30, FontStyle.Bold); + } + + protected override void OnResize(EventArgs e) + { + bRemakeRect = true; + Invalidate(); + // base.OnResize(e); + } + + + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + + if (ports == null || ports.Length == 0) + { + this.ports = new CPort[] + { + new CPort(){ cartSize=7, cartState = 1, Mode="USER", portName="#11", portNo=1 }, + new CPort(){ cartSize=7, cartState = 1, Mode="USER", portName="#21", portNo=2 }, + new CPort(){ cartSize=13, cartState = 0, Mode="USER", portName="#12", portNo=3 }, + new CPort(){ cartSize=13, cartState = 2, Mode="USER", portName="#22", portNo=4 }, + }; + + this.ports[0].reelSID.Add(new CPortData("012345678",30,100,"릴#6")); + //e.Graphics.DrawString("PORT가 설정되지 않았습니다", this.Font, Brushes.White, DisplayRectangle, + // new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + //return; + } + + //Set Optimized Double Buffer to reduce flickering + e.Graphics.CompositingQuality = CompositingQuality.HighQuality; + e.Graphics.InterpolationMode = InterpolationMode.High; + e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; + + //e.Graphics.DrawString(DisplayRectangle.ToString(), this.Font, Brushes.White, 1, 1); + //포트영역생성 + if (bRemakeRect) + { + space_width = 10; + + int row = 2; + int col = 2; + port_width = (DisplayRectangle.Width - (col - 1) * space_width) / 2f; + port_height = (DisplayRectangle.Height - (row - 1) * space_width) / 2f; + //space_width = (DisplayRectangle.Width - (port_width * 2.0)) / 3.0; + //space_height = (DisplayRectangle.Height - (port_height * 2.0)) / 3.0; + + var signSize = e.Graphics.MeasureString("13\"", this.Font_Sign); + var titlesize = e.Graphics.MeasureString("1.01234567890", this.Font); + var idx = 0; + for (int c = 0; c < col; c++) + { + for (int r = 0; r < row; r++) + { + + ports[idx].rect = new Rectangle( + (int)(DisplayRectangle.Left + (c * space_width) + (c * port_width)), + (int)(DisplayRectangle.Top + (r * space_width) + (r * port_height)), + (int)port_width, + (int)port_height); + + ports[idx].rect_signL = new Rectangle( + (int)(DisplayRectangle.Left + (c * space_width) + (c * port_width)), + (int)(DisplayRectangle.Top + (r * space_width) + (r * port_height)), + (int)(signSize.Width * 1.05f), + (int)(signSize.Height * 1.05f)); + + ports[idx].rect_signR = new Rectangle( + (int)(ports[idx].rect.Right - ports[idx].rect_signL.Width), + ports[idx].rect_signL.Top, + ports[idx].rect_signL.Width, + ports[idx].rect_signL.Height); + + ports[idx].rect_title = new Rectangle( + (int)(ports[idx].rect.Left), + (int)(ports[idx].rect.Top), //Bottom - (titlesize.Height * 1.2f)), + ports[idx].rect.Width, + (int)(signSize.Height * 1.05f)); + + ports[idx].rect_count = new Rectangle( + ports[idx].rect.Left + 2, + ports[idx].rect_title.Bottom + 2, + ports[idx].rect.Width - 4, + ports[idx].rect.Height - ports[idx].rect_title.Height - 4 + ); + + idx += 1; + + } + } + bRemakeRect = false; + } + + + //포트그리기 (총 4개의 포트가 있다) + var sfCenter = new StringFormat + { + Alignment = StringAlignment.Center, + LineAlignment = StringAlignment.Center, + }; + var sfLeft = new StringFormat + { + Alignment = StringAlignment.Near, + LineAlignment = StringAlignment.Center, + }; + + foreach (var port in ports) + { + //배경영역 칠하기 + e.Graphics.FillRectangle(new SolidBrush(this._portback), port.rect); + + + if (port.Mode == "USER") + e.Graphics.FillRectangle(new SolidBrush(Color.SkyBlue), port.rect_title); + else + e.Graphics.FillRectangle(new SolidBrush(this._titleback), port.rect_title); + + //글자영역 칠하기 + if(port.cartSize ==13) + e.Graphics.FillRectangle(Brushes.Gold, port.rect_signL); + else + e.Graphics.FillRectangle(Brushes.WhiteSmoke, port.rect_signL); + + e.Graphics.FillRectangle(Brushes.WhiteSmoke, port.rect_signR); + + + var portSize = port.cartSize == 0 ? "--" : port.cartSize + "\""; + e.Graphics.DrawString(portSize, this.Font_Sign, Brushes.Black, port.rect_signL, sfCenter); + + //sign R 에는 카운트를 넣는다 + //var portStat = port.cartState == 0 ? "STP" : (port.cartState == 1 ? "RDY" : "MAX"); + var portStatBG = port.cartState == 0 ? Color.Gray : (port.cartState == 1 ? Color.Green : Color.Tomato); + e.Graphics.DrawString(port.reelCount.ToString(), this.Font_Sign, new SolidBrush(portStatBG), port.rect_signR, sfCenter); + + + //타이틀 글자 + var title = "[ " + port.portNo.ToString() + " ]"; + + if (string.IsNullOrEmpty(port.portName) == false && port.portName != port.portNo.ToString()) + { + title = "[" + port.portNo.ToString() + ":" + port.portName + "]"; + } + //if (port.Mode == "DISABLE") title += " (사용안함)"; + //else if (port.Mode == "EXIT") title += " (배출전용)"; + //if (port.Mode == "USER") title = "* " + port.portNo.ToString() + " *"; + //else if (port.Mode == "DISABLE") title = "# " + port.portNo.ToString() + " #"; + //else + //{ + //if (port.reelSID.Count == 0) title += " (할당안됨)"; + //else if (port.reelSID.Count == 1) title += " " + port.reelSID[0]; + //else title += " " + port.reelSID[0] + "(" + (port.reelSID.Count - 1).ToString() + ")"; + //} + + if (string.IsNullOrEmpty(title) == false) + { + + e.Graphics.DrawString(title, Font_Sign, new SolidBrush(Color.Black), port.rect_title, sfCenter); + } + + //SID목록 가져온다 + //port.reelSID.Clear(); + //port.reelSID.AddRange(new CPortData[] { + // new CPortData("0123456789A",1,10), + // new CPortData("0123456789B",2,10), + // new CPortData("0123456789C",3,10), + // new CPortData("0123456789D",4,10) + //}); + Color cntColor = ForeColor; + string SidList = string.Empty; + if (port.Mode == "USER") SidList = "";// cntColor = Color.FromArgb(50, 50, 50); + foreach (var sid in port.reelSID) + { + if (sid.Active == false) continue; //비활성화된것은 표시하지 않는다 + if (string.IsNullOrEmpty(SidList) == false) SidList += "\n"; + SidList += string.Format(" {0} ({1}/{2})→{3}", sid.sid, sid.qty, sid.kpc,sid.towername); + } + + e.Graphics.DrawString(SidList, + Font_SIDLIST, + new SolidBrush(cntColor), + port.rect_count, new StringFormat { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Near }); + + //e.Graphics.DrawRect(port.rect_count, Color.DarkBlue, 5); + + ///테두리 + e.Graphics.DrawRectangle(Pens.Gray, port.rect); + + using (Font fsta = new Font("맑은 고딕", 25f, FontStyle.Regular)) + { + //장비상태는 추가로 표시해준다. + //STOP혹은 MAX라면 별도 표기한다. //미사용도 마찬가지 + if (port.Mode == "DISABLE") + { + + using (var sb = new SolidBrush(Color.FromArgb(220, Color.White))) + { + e.Graphics.FillRectangle(sb, port.rect_count); + } + if (string.IsNullOrEmpty(port.portName) == false && port.portName != port.portNo.ToString()) + e.Graphics.DrawString(title + "\nDISABLE", fsta, new SolidBrush(Color.Black), port.rect_count, sfCenter); + else e.Graphics.DrawString(title + "\nDISABLE", fsta, new SolidBrush(Color.Black), port.rect_count, sfCenter); + } + else if (port.cartState == 0) + { + //stop + + using (var sb = new SolidBrush(Color.FromArgb(220, Color.Yellow))) + { + e.Graphics.FillRectangle(sb, port.rect_count); + } + if (string.IsNullOrEmpty(port.portName) == false && port.portName != port.portNo.ToString()) + e.Graphics.DrawString(title + "\nSTOP", fsta, new SolidBrush(Color.Black), port.rect_count, sfCenter); + else + e.Graphics.DrawString(title + "\nSTOP", fsta, new SolidBrush(Color.Black), port.rect_count, sfCenter); + } + else if (port.cartState == 2) + { + //max + using (var sb = new SolidBrush(Color.FromArgb(220, Color.Red))) + { + e.Graphics.FillRectangle(sb, port.rect_count); + } + + if (string.IsNullOrEmpty(port.portName) == false && port.portName != port.portNo.ToString()) + e.Graphics.DrawString(title + "\nFULL", fsta, new SolidBrush(Color.Black), port.rect_count, sfCenter); + else + e.Graphics.DrawString(title + "\nFULL", fsta, new SolidBrush(Color.White), port.rect_count, sfCenter); + + } + } + //var portStat = port.cartState == 0 ? "STP" : (port.cartState == 1 ? "RDY" : "MAX"); + //var portStatBG = port.cartState == 0 ? Color.Gray : (port.cartState == 1 ? Color.Green : Color.Tomato); + //e.Graphics.DrawString(portStat, this.Font_Sign, new SolidBrush(portStatBG), port.rect_signR, sfCenter); + } + + + if (this.arStop) + { + e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(240, Color.Black)), DisplayRectangle); + e.Graphics.DrawString("STOP", this.Font_Alert, Brushes.Orange, DisplayRectangle, sfCenter); + } + else if (this.arBusy) + { + e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(240, Color.Black)), DisplayRectangle); + e.Graphics.DrawString("BUSY", this.Font_Alert, Brushes.Aqua, DisplayRectangle, sfCenter); + } + + if (debugMode) + { + var sb = new System.Text.StringBuilder(); + sb.AppendLine("unloader ctonrol"); + sb.AppendLine(string.Format("port size {0}x{1}", port_width, port_height)); + sb.AppendLine(string.Format("space size {0}x{1}", space_width, space_width)); + sb.AppendLine(string.Format("display rect {0}", DisplayRectangle)); + e.Graphics.DrawString(sb.ToString(), this.Font, Brushes.White, 10, 10); + } + //e.Graphics.DrawRectangle(Pens.White, DisplayRectangle); + sfCenter.Dispose(); + sfLeft.Dispose(); + + } + + public class ClickEventArgs : EventArgs + { + public int idx { get; set; } + public ClickEventArgs(int idx_) + { + this.idx = idx_; + } + } + public event EventHandler ItemClick; + + protected override void OnMouseClick(MouseEventArgs e) + { + base.OnMouseClick(e); + + if (e.Button == System.Windows.Forms.MouseButtons.Left) + { + + var item = this.ports.Where(t => t.rect.Contains(e.Location)).FirstOrDefault(); + if (item != null) + { + //이 영역을 클릭한것으로 한다 + if (ItemClick != null) + ItemClick(this, new ClickEventArgs(item.idx)); + } + + } + } + } +} diff --git a/QRValidation/CapCleaningControl/Utility.cs b/QRValidation/CapCleaningControl/Utility.cs new file mode 100644 index 0000000..3764f23 --- /dev/null +++ b/QRValidation/CapCleaningControl/Utility.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace UIControl +{ + public static class Utility + { + + public static Rectangle OffsetRect(this Rectangle rect, int x,int y) + { + var retval = new Rectangle(rect.X + x, rect.Y + y, rect.Width, rect.Height); + return retval; + } + + public static void DrawString(this Graphics g, + string msg, + Font font, + Color fcolor, + RectangleF rect, + ContentAlignment textalign = ContentAlignment.MiddleCenter, + Color? ShadowColor = null, + Brush BackBrush = null, + Pen BorderPen = null) + { + DrawString(g, msg, font, fcolor, rect.toRect(), textalign, ShadowColor, BackBrush, BorderPen); + } + + public static void DrawRectangle(this Graphics g, Pen pen, RectangleF rect) + { + g.DrawRectangle(pen, rect.Left, rect.Top, rect.Width, rect.Height); + } + + public static void DrawString(this Graphics g, + string msg, + Font font, + Color fcolor, + Rectangle rect, + ContentAlignment textalign = ContentAlignment.MiddleCenter, + Color? ShadowColor = null, + Brush BackBrush = null, + Pen BorderPen = null) + { + //배경색 지정되어 있다면 + if (BackBrush != null) g.FillRectangle(BackBrush, rect); + + //테두리 지정되어 있다면 + if (BorderPen != null) g.DrawRectangle(BorderPen, rect); + + //그립자가 지정되있다면 별도 처리를 한다 + if (ShadowColor != null && ShadowColor != Color.Transparent) + { + SizeF fsize; + var drawPT = GetTextPosition(g, msg, font, rect, textalign, out fsize); + + //그림자를 먼저 그린다 + g.DrawString(msg, font, new SolidBrush((Color)ShadowColor), drawPT.X + 1, drawPT.Y + 1); + g.DrawString(msg, font, new SolidBrush(fcolor), drawPT.X, drawPT.Y); + } + else + { + var sf = new StringFormat(); + + if (textalign == ContentAlignment.BottomCenter) { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Near; } + else if (textalign == ContentAlignment.BottomLeft) { sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Near; } + else if (textalign == ContentAlignment.BottomRight) { sf.Alignment = StringAlignment.Far; sf.LineAlignment = StringAlignment.Near; } + else if (textalign == ContentAlignment.MiddleCenter) { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; } + else if (textalign == ContentAlignment.MiddleLeft) { sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Center; } + else if (textalign == ContentAlignment.MiddleRight) { sf.Alignment = StringAlignment.Far; sf.LineAlignment = StringAlignment.Center; } + else if (textalign == ContentAlignment.TopCenter) { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Far; } + else if (textalign == ContentAlignment.TopLeft) { sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Far; } + else if (textalign == ContentAlignment.TopRight) { sf.Alignment = StringAlignment.Far; sf.LineAlignment = StringAlignment.Far; } + else { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; } + + + g.DrawString(msg, font, new SolidBrush(fcolor), rect, sf); + + sf.Dispose(); + } + } + + public static void DrawRect(this Graphics g, Rectangle rect, Color color, Color shadowColor, int pensize = 1) + { + //우측하단에 선을 그려준다. 일단은 검은색 + g.DrawLine(new Pen(shadowColor, pensize), rect.Left + 1, rect.Bottom + 1, rect.Right - 1, rect.Bottom + 1); + g.DrawLine(new Pen(shadowColor, pensize), rect.Right + 1, rect.Top + 1, rect.Right + 1, rect.Bottom - 1); + DrawRect(g, rect, color, pensize); + } + public static void DrawRect(this Graphics g, Rectangle rect, Color color, int pensize = 1) + { + g.DrawRectangle(new Pen(color, pensize), rect); + } + + public static void DrawRect(this Graphics g, RectangleF rect, Color color, int pensize = 1, Boolean shadow = false) + { + g.DrawRectangle(new Pen(color, pensize), rect.Left, rect.Top, rect.Width, rect.Height); + } + + /// + /// Rectangle 개체를 반환 합니다. 단순 float -> int 로 값을 변환 합니다. + /// + /// + /// + public static Rectangle toRect(this RectangleF rect) + { + return new Rectangle((int)rect.Left, (int)rect.Top, (int)rect.Width, (int)rect.Height); ; + } + + static PointF GetTextPosition(Graphics g, string data, Font f, Rectangle rect, ContentAlignment align, System.Windows.Forms.Padding Padding, out SizeF fsize) + { + float x = 0; + float y = 0; + fsize = g.MeasureString(data, f); + if (align == ContentAlignment.MiddleCenter) + { + x = (rect.Width - fsize.Width) / 2 + Padding.Left - Padding.Right; + y = (rect.Height - fsize.Height) / 2 + Padding.Top - Padding.Bottom; + } + else if (align == ContentAlignment.MiddleLeft) + { + x = Padding.Left; + y = (rect.Height - fsize.Height) / 2; + } + else if (align == ContentAlignment.MiddleRight) + { + x = rect.Width - fsize.Width - Padding.Right; + y = (rect.Height - fsize.Height) / 2; + } + else if (align == ContentAlignment.BottomLeft) + { + x = Padding.Left; + y = rect.Height - fsize.Height - Padding.Bottom; + } + else if (align == ContentAlignment.BottomRight) + { + x = rect.Width - fsize.Width - Padding.Right; + y = rect.Height - fsize.Height - Padding.Bottom; + } + else if (align == ContentAlignment.BottomCenter) + { + x = (rect.Width - fsize.Width) / 2; + y = rect.Height - fsize.Height - Padding.Bottom; + } + else if (align == ContentAlignment.TopLeft) + { + x = Padding.Left; + y = Padding.Top; + } + else if (align == ContentAlignment.TopRight) + { + x = rect.Width - fsize.Width - Padding.Right; + y = Padding.Top; + } + else if (align == ContentAlignment.TopCenter) + { + x = (rect.Width - fsize.Width) / 2; + y = Padding.Top; + } + return new PointF(x + rect.Left, y + rect.Top); + } + static PointF GetTextPosition(Graphics g, string data, Font f, Rectangle rect, ContentAlignment align, out SizeF fsize) + { + return GetTextPosition(g, data, f, rect, align, new System.Windows.Forms.Padding(0), out fsize); + } + } +} diff --git a/QRValidation/DLL/AMM.dll b/QRValidation/DLL/AMM.dll new file mode 100644 index 0000000..985786a Binary files /dev/null and b/QRValidation/DLL/AMM.dll differ diff --git a/QRValidation/DLL/ArLog.Net4.dll b/QRValidation/DLL/ArLog.Net4.dll new file mode 100644 index 0000000..1f7c09a Binary files /dev/null and b/QRValidation/DLL/ArLog.Net4.dll differ diff --git a/QRValidation/DLL/ArSetting.Net4.dll b/QRValidation/DLL/ArSetting.Net4.dll new file mode 100644 index 0000000..941494f Binary files /dev/null and b/QRValidation/DLL/ArSetting.Net4.dll differ diff --git a/QRValidation/DLL/CarlosAg.ExcelXmlWriter.dll b/QRValidation/DLL/CarlosAg.ExcelXmlWriter.dll new file mode 100644 index 0000000..7760d6d Binary files /dev/null and b/QRValidation/DLL/CarlosAg.ExcelXmlWriter.dll differ diff --git a/QRValidation/DLL/ChilkatDotNet4.dll b/QRValidation/DLL/ChilkatDotNet4.dll new file mode 100644 index 0000000..134c43e Binary files /dev/null and b/QRValidation/DLL/ChilkatDotNet4.dll differ diff --git a/QRValidation/DLL/Communication.dll b/QRValidation/DLL/Communication.dll new file mode 100644 index 0000000..dc685d1 Binary files /dev/null and b/QRValidation/DLL/Communication.dll differ diff --git a/QRValidation/DLL/Emgu.CV.DebuggerVisualizers.VS2013.dll b/QRValidation/DLL/Emgu.CV.DebuggerVisualizers.VS2013.dll new file mode 100644 index 0000000..08134e2 Binary files /dev/null and b/QRValidation/DLL/Emgu.CV.DebuggerVisualizers.VS2013.dll differ diff --git a/QRValidation/DLL/Emgu.CV.UI.GL.dll b/QRValidation/DLL/Emgu.CV.UI.GL.dll new file mode 100644 index 0000000..0a9cc9e Binary files /dev/null and b/QRValidation/DLL/Emgu.CV.UI.GL.dll differ diff --git a/QRValidation/DLL/Emgu.CV.UI.dll b/QRValidation/DLL/Emgu.CV.UI.dll new file mode 100644 index 0000000..4410127 Binary files /dev/null and b/QRValidation/DLL/Emgu.CV.UI.dll differ diff --git a/QRValidation/DLL/Emgu.CV.World.dll b/QRValidation/DLL/Emgu.CV.World.dll new file mode 100644 index 0000000..3d5853b Binary files /dev/null and b/QRValidation/DLL/Emgu.CV.World.dll differ diff --git a/QRValidation/DLL/Newtonsoft.Json.dll b/QRValidation/DLL/Newtonsoft.Json.dll new file mode 100644 index 0000000..628aaf0 Binary files /dev/null and b/QRValidation/DLL/Newtonsoft.Json.dll differ diff --git a/QRValidation/DLL/SoftekBarcode64DLL.dll b/QRValidation/DLL/SoftekBarcode64DLL.dll new file mode 100644 index 0000000..c330de2 Binary files /dev/null and b/QRValidation/DLL/SoftekBarcode64DLL.dll differ diff --git a/QRValidation/DLL/SoftekBarcodeDLL.dll b/QRValidation/DLL/SoftekBarcodeDLL.dll new file mode 100644 index 0000000..9c44c7e Binary files /dev/null and b/QRValidation/DLL/SoftekBarcodeDLL.dll differ diff --git a/QRValidation/DLL/SoftekBarcodeNet.dll b/QRValidation/DLL/SoftekBarcodeNet.dll new file mode 100644 index 0000000..6947e4e Binary files /dev/null and b/QRValidation/DLL/SoftekBarcodeNet.dll differ diff --git a/QRValidation/DLL/WatsonWebsocket.dll b/QRValidation/DLL/WatsonWebsocket.dll new file mode 100644 index 0000000..ae762d9 Binary files /dev/null and b/QRValidation/DLL/WatsonWebsocket.dll differ diff --git a/QRValidation/DLL/Winsock Orcas.dll b/QRValidation/DLL/Winsock Orcas.dll new file mode 100644 index 0000000..3ac1126 Binary files /dev/null and b/QRValidation/DLL/Winsock Orcas.dll differ diff --git a/QRValidation/DLL/arCommUtil.dll b/QRValidation/DLL/arCommUtil.dll new file mode 100644 index 0000000..6209728 Binary files /dev/null and b/QRValidation/DLL/arCommUtil.dll differ diff --git a/QRValidation/DLL/arControl.Net4.dll b/QRValidation/DLL/arControl.Net4.dll new file mode 100644 index 0000000..96e6e07 Binary files /dev/null and b/QRValidation/DLL/arControl.Net4.dll differ diff --git a/QRValidation/DLL/arRS232.Net4.dll b/QRValidation/DLL/arRS232.Net4.dll new file mode 100644 index 0000000..c5d1765 Binary files /dev/null and b/QRValidation/DLL/arRS232.Net4.dll differ diff --git a/QRValidation/DLL/libxl.dll b/QRValidation/DLL/libxl.dll new file mode 100644 index 0000000..b3159fd Binary files /dev/null and b/QRValidation/DLL/libxl.dll differ diff --git a/QRValidation/DLL/libxl.net.dll b/QRValidation/DLL/libxl.net.dll new file mode 100644 index 0000000..b487ebc Binary files /dev/null and b/QRValidation/DLL/libxl.net.dll differ diff --git a/QRValidation/Project/Class/CAmkorSTDBarcode.cs b/QRValidation/Project/Class/CAmkorSTDBarcode.cs new file mode 100644 index 0000000..ea0f643 --- /dev/null +++ b/QRValidation/Project/Class/CAmkorSTDBarcode.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project.Class +{ + public class CAmkorSTDBarcode + { + public string Message { get; private set; } + public Boolean isValid = false; + public string SID { get; private set; } + public string VLOT { get; private set; } + public string RID { get; private set; } + public string MFGDate { get; set; } + public string SUPPLY { get; set; } + public int QTY { get; set; } + public string RAW { get; set; } + public Boolean DateError { get; set; } + public CAmkorSTDBarcode() + { + isValid = false; + } + public CAmkorSTDBarcode(string raw) + { + SetBarcode(raw); + } + public void SetBarcodeDemo() + { + SetBarcode("101410653;AG64B3W;SAMSUNG;20000;AG64B3W0031;19000101;"); + } + + /// + /// Returns barcode value with current property values. + /// To check the original barcode value, check the RAW property + /// + /// + public string GetBarcode() + { + return string.Format("{0};{1};{2};{3};{4};{5};", + SID, VLOT, SUPPLY, QTY, RID, MFGDate); + } + public void SetBarcode(string raw) + { + isValid = false; + this.Message = string.Empty; + + this.RAW = raw; + var buf = raw.Split(';'); + if (buf.Length < 5) + { + isValid = false; + Message = "buffer len error : " + raw; + return; + } + decimal vSID = 0; + double vQty = 0; + if (decimal.TryParse(buf[0], out vSID) == false) + { + Message = "SID value is not a number. Amkor STD barcode consists of numbers"; + return; + } + + this.SID = vSID.ToString(); + this.VLOT = buf[1]; + this.SUPPLY = buf[2]; + if (double.TryParse(buf[3], out vQty) == false) return; + this.QTY = (int)vQty; + + this.RID = buf[4]; + //DateTime vMFGDate; + + MFGDate = buf[5].Trim(); + DateError = false; + + //buf[5] = buf[5].Replace("-", ""); //날짜표식제거 + //if (this.SUPPLY.ToUpper() == "SAMSUNG" && buf[5].Length == 4) //삼성은 년도와 주차로 입력한다 210202 + //{ + // var y = "20" + buf[5].Substring(0, 2); + // MFGDate = new DateTime(int.Parse(y), 1, 1).ToString("yyyyMMdd"); //주차계산무시한다 + // DateError = true; + //} + //else if (this.SUPPLY.ToUpper() == "WT" && buf[5].Length == 4) //삼성은 년도와 주차로 입력한다 210202 + //{ + // var y = "20" + buf[5].Substring(0, 2); + // MFGDate = new DateTime(int.Parse(y), 1, 1).ToString("yyyyMMdd"); //주차계산무시한다 + // DateError = true; + //} + //else if (buf[5].Length == 8) //일반적인날짜데이터이며 YYYYMMDD 형태이다 + //{ + // buf[5] = buf[5].Substring(0, 4) + "-" + buf[5].Substring(4, 2) + "-" + buf[5].Substring(6, 2); + // if (DateTime.TryParse(buf[5], out vMFGDate) == false) return; + // MFGDate = vMFGDate.ToString("yyyyMMdd"); + // DateError = false; + //} + ////else if (buf[5].Equals("N/A")) //날짜값에 NA + ////{ + //// MFGDate = "N/A"; + //// DateError = false; + ////} + ////else if (buf[5].Equals("NA")) //날짜값에 NA + ////{ + //// MFGDate = "NA"; + //// DateError = false; + ////} + //else + //{ + // MFGDate = buf[5].Trim(); + // Message = "Date value Length Error : " + buf[5]; + // DateError = false; + // //return; + //} + + isValid = true; + } + } +} diff --git a/QRValidation/Project/Class/CInterLock.cs b/QRValidation/Project/Class/CInterLock.cs new file mode 100644 index 0000000..06a6ef9 --- /dev/null +++ b/QRValidation/Project/Class/CInterLock.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project +{ + public class CInterLock + { + UInt64 offsetValue = 0x01; + public object Tag { get; set; } + public string errorMessage; + protected UInt64 _value; + + public UInt64 Value { get { return _value; } set { _value = value; } } + + public event EventHandler ValueChanged; + public class ValueEventArgs : EventArgs + { + private int _arridx; + private Boolean _oldvalue; + private Boolean _newvalue; + private string _reason; + + public int ArrIDX { get { return _arridx; } } + public Boolean OldValue { get { return _oldvalue; } } + public Boolean NewValue { get { return _newvalue; } } + public string Reason { get { return _reason; } } + public Boolean NewOn { get; set; } + public Boolean NewOff { get; set; } + + public ValueEventArgs(int arridx, Boolean oldvalue, Boolean newvalue, string reason_, Boolean newon_, Boolean newof_) + { + _arridx = arridx; + _oldvalue = oldvalue; + _newvalue = newvalue; + _reason = reason_; + this.NewOn = newon_; + this.NewOff = newon_; + } + } + + public CInterLock(object tag = null) + { + errorMessage = string.Empty; + _value = 0; + this.Tag = tag; + } + + public Boolean get(int idx) + { + if (idx >= 64) + throw new Exception("flag는 최대 64개를 지원 합니다"); + + var offset = (UInt64)(offsetValue << idx); + return (_value & offset) != 0; + } + public void set(int idx, Boolean value, string reason) + { + if (idx >= 64) + throw new Exception("flag는 최대 64개를 지원 합니다"); + + var oldvalue = get(idx); + var raw_old = _value; + if (value) + { + var offset = (UInt64)(offsetValue << idx); + _value = _value | offset; + } + else + { + var shiftvalue = (UInt64)(offsetValue << idx); + UInt64 offset = ~shiftvalue; + _value = _value & offset; + } + + if (oldvalue != value) + { + Boolean NewOn = (raw_old == 0 && _value > 0); + Boolean NewOf = (raw_old != 0 && _value == 0); + if (ValueChanged != null) + ValueChanged(this, new ValueEventArgs(idx, oldvalue, value, reason, NewOn, NewOf)); + } + else + { + //Pub.log.Add(" >> SKIP"); + //if (string.IsNullOrEmpty(reason) == false) + //Pub.log.Add("#### FLAG변경(값이 같아서 처리 안함) : idx=" + idx.ToString() + ",값:" + value.ToString() + ",사유:" + reason); + } + } + public void Toggle(int idx, string reason = "") + { + var curValue = get(idx); + set(idx, !curValue, reason); + } + + } +} diff --git a/QRValidation/Project/Class/Flag.cs b/QRValidation/Project/Class/Flag.cs new file mode 100644 index 0000000..29df3dc --- /dev/null +++ b/QRValidation/Project/Class/Flag.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project +{ + public enum eFlag + { + CHECKLICENSE=0, + CHECKCAMERAL, + CHECKCAMERAR, + CAMERAINIT, + } + public class Flag : CInterLock + { + public Boolean IsInit; //H/W설정이 안된경우에만 FALSE로 한다 + public int PortCount; + public string[] Name; + + public Flag() + { + this.Tag = "MAIN"; + PortCount = 64; + IsInit = true; + errorMessage = string.Empty; + _value = 0; + Name = new string[PortCount]; + for (int i = 0; i < Name.Length; i++) + { + Name[i] = string.Empty; + } + } + + public bool get(eFlag flag) + { + return get((int)flag); + } + public void set(eFlag flag, bool value, string reason) + { + var idx = (int)flag; + set(idx, value, reason); + } + + public void Toggle(eFlag flag) + { + Toggle((int)flag); + } + + + } +} diff --git a/QRValidation/Project/Class/WebSocket.cs b/QRValidation/Project/Class/WebSocket.cs new file mode 100644 index 0000000..27a621a --- /dev/null +++ b/QRValidation/Project/Class/WebSocket.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project.Class +{ + public class WebSocket : WatsonWebsocket.WatsonWsServer + { + public eTarget Target { get; set; } + public int TargetIdx { get; set; } + public WebSocket(string host, int port) : base(host, port) { } + } +} diff --git a/QRValidation/Project/Class/Win32API.cs b/QRValidation/Project/Class/Win32API.cs new file mode 100644 index 0000000..b2c2ccb --- /dev/null +++ b/QRValidation/Project/Class/Win32API.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + + +namespace Project +{ + public static class Win32API + { + + + + + + [DllImport("user32.dll")] + private static extern bool SetForegroundWindow(IntPtr hWnd); + + [DllImport("user32.dll")] + private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); + [DllImport("user32.dll")] + private static extern int SetActiveWindow(int hwnd); + } +} diff --git a/QRValidation/Project/Dialog/fEmulator.Designer.cs b/QRValidation/Project/Dialog/fEmulator.Designer.cs new file mode 100644 index 0000000..b6ce2a1 --- /dev/null +++ b/QRValidation/Project/Dialog/fEmulator.Designer.cs @@ -0,0 +1,648 @@ +namespace Project.Dialog +{ + partial class fEmulator + { + /// + /// 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(); + arDev.AzinAxt.ColorListItem colorListItem5 = new arDev.AzinAxt.ColorListItem(); + arDev.AzinAxt.ColorListItem colorListItem6 = new arDev.AzinAxt.ColorListItem(); + arDev.AzinAxt.ColorListItem colorListItem7 = new arDev.AzinAxt.ColorListItem(); + arDev.AzinAxt.ColorListItem colorListItem8 = new arDev.AzinAxt.ColorListItem(); + this.panel1 = new System.Windows.Forms.Panel(); + this.jogController5 = new arDev.AzinAxt.JogController(); + this.jogController4 = new arDev.AzinAxt.JogController(); + this.jogController3 = new arDev.AzinAxt.JogController(); + this.jogController2 = new arDev.AzinAxt.JogController(); + this.jogController1 = new arDev.AzinAxt.JogController(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.tblDI = new arDev.AzinAxt.GridView(); + this.lbTitle1 = new System.Windows.Forms.Label(); + this.panel3 = new System.Windows.Forms.Panel(); + this.tblDO = new arDev.AzinAxt.GridView(); + this.lbtitle2 = new System.Windows.Forms.Label(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.button1 = new System.Windows.Forms.Button(); + this.ctlSensor1 = new UIControl.CtlSensor(); + this.m4 = new UIControl.CtlMotor(); + this.m3 = new UIControl.CtlMotor(); + this.m2 = new UIControl.CtlMotor(); + this.m1 = new UIControl.CtlMotor(); + this.mcv = new UIControl.CtlMotor(); + this.panel1.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panel3.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + this.panel1.Controls.Add(this.jogController5); + this.panel1.Controls.Add(this.jogController4); + this.panel1.Controls.Add(this.jogController3); + this.panel1.Controls.Add(this.jogController2); + this.panel1.Controls.Add(this.jogController1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Right; + this.panel1.Location = new System.Drawing.Point(574, 0); + this.panel1.Name = "panel1"; + this.panel1.Padding = new System.Windows.Forms.Padding(5); + this.panel1.Size = new System.Drawing.Size(226, 414); + this.panel1.TabIndex = 8; + // + // jogController5 + // + this.jogController5.arAutoUpdate = false; + this.jogController5.arAxis = 4; + this.jogController5.arAxisName = "Z-R"; + this.jogController5.arBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.jogController5.arBottomSensorCommand = new string[] { + "INP", + "ORG", + "LIM+", + "HOME", + "ALM", + "SVON", + "LIM-", + "POS"}; + this.jogController5.arBottomSensorFont = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold); + this.jogController5.arBottomSensorHeight = 30; + this.jogController5.arBottomSensorListCount = new System.Drawing.Point(4, 2); + this.jogController5.arBottomSensorTitle = new string[] { + "INP", + "ORG", + "LIM+", + "HOME", + "ALM", + "SVON", + "LIM-", + "--"}; + this.jogController5.arCellBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.jogController5.ardAct = 200D; + this.jogController5.arDebugMode = false; + this.jogController5.arIsAlm = false; + this.jogController5.arIsHSet = true; + this.jogController5.arIsInit = false; + this.jogController5.arIsInp = false; + this.jogController5.arIsLimM = false; + this.jogController5.arIsLimP = false; + this.jogController5.arIsOrg = false; + this.jogController5.arIsSvON = true; + this.jogController5.arMaxLength = 400; + this.jogController5.arMinLength = -10; + this.jogController5.arShowJogButton = true; + this.jogController5.arShowPositionBar = true; + this.jogController5.arShowSensor = true; + this.jogController5.arShowTitleBar = true; + this.jogController5.arTitlebarHeight = ((ushort)(20)); + this.jogController5.arUpdateInterval = ((ushort)(100)); + this.jogController5.arUsage = true; + this.jogController5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.jogController5.Dock = System.Windows.Forms.DockStyle.Top; + this.jogController5.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.jogController5.Location = new System.Drawing.Point(5, 293); + this.jogController5.Name = "jogController5"; + this.jogController5.Size = new System.Drawing.Size(216, 72); + this.jogController5.TabIndex = 11; + this.jogController5.Text = "156"; + // + // jogController4 + // + this.jogController4.arAutoUpdate = false; + this.jogController4.arAxis = 3; + this.jogController4.arAxisName = "Z-F"; + this.jogController4.arBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.jogController4.arBottomSensorCommand = new string[] { + "INP", + "ORG", + "LIM+", + "HOME", + "ALM", + "SVON", + "LIM-", + "POS"}; + this.jogController4.arBottomSensorFont = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold); + this.jogController4.arBottomSensorHeight = 30; + this.jogController4.arBottomSensorListCount = new System.Drawing.Point(4, 2); + this.jogController4.arBottomSensorTitle = new string[] { + "INP", + "ORG", + "LIM+", + "HOME", + "ALM", + "SVON", + "LIM-", + "--"}; + this.jogController4.arCellBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.jogController4.ardAct = 200D; + this.jogController4.arDebugMode = false; + this.jogController4.arIsAlm = false; + this.jogController4.arIsHSet = true; + this.jogController4.arIsInit = false; + this.jogController4.arIsInp = false; + this.jogController4.arIsLimM = false; + this.jogController4.arIsLimP = false; + this.jogController4.arIsOrg = false; + this.jogController4.arIsSvON = true; + this.jogController4.arMaxLength = 400; + this.jogController4.arMinLength = -10; + this.jogController4.arShowJogButton = true; + this.jogController4.arShowPositionBar = true; + this.jogController4.arShowSensor = true; + this.jogController4.arShowTitleBar = true; + this.jogController4.arTitlebarHeight = ((ushort)(20)); + this.jogController4.arUpdateInterval = ((ushort)(100)); + this.jogController4.arUsage = true; + this.jogController4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.jogController4.Dock = System.Windows.Forms.DockStyle.Top; + this.jogController4.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.jogController4.Location = new System.Drawing.Point(5, 221); + this.jogController4.Name = "jogController4"; + this.jogController4.Size = new System.Drawing.Size(216, 72); + this.jogController4.TabIndex = 10; + this.jogController4.Text = "156"; + // + // jogController3 + // + this.jogController3.arAutoUpdate = false; + this.jogController3.arAxis = 2; + this.jogController3.arAxisName = "Y-P"; + this.jogController3.arBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.jogController3.arBottomSensorCommand = new string[] { + "INP", + "ORG", + "LIM+", + "HOME", + "ALM", + "SVON", + "LIM-", + "POS"}; + this.jogController3.arBottomSensorFont = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold); + this.jogController3.arBottomSensorHeight = 30; + this.jogController3.arBottomSensorListCount = new System.Drawing.Point(4, 2); + this.jogController3.arBottomSensorTitle = new string[] { + "INP", + "ORG", + "LIM+", + "HOME", + "ALM", + "SVON", + "LIM-", + "--"}; + this.jogController3.arCellBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.jogController3.ardAct = 200D; + this.jogController3.arDebugMode = false; + this.jogController3.arIsAlm = false; + this.jogController3.arIsHSet = true; + this.jogController3.arIsInit = false; + this.jogController3.arIsInp = false; + this.jogController3.arIsLimM = false; + this.jogController3.arIsLimP = false; + this.jogController3.arIsOrg = false; + this.jogController3.arIsSvON = true; + this.jogController3.arMaxLength = 400; + this.jogController3.arMinLength = -10; + this.jogController3.arShowJogButton = true; + this.jogController3.arShowPositionBar = true; + this.jogController3.arShowSensor = true; + this.jogController3.arShowTitleBar = true; + this.jogController3.arTitlebarHeight = ((ushort)(20)); + this.jogController3.arUpdateInterval = ((ushort)(100)); + this.jogController3.arUsage = true; + this.jogController3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.jogController3.Dock = System.Windows.Forms.DockStyle.Top; + this.jogController3.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.jogController3.Location = new System.Drawing.Point(5, 149); + this.jogController3.Name = "jogController3"; + this.jogController3.Size = new System.Drawing.Size(216, 72); + this.jogController3.TabIndex = 9; + this.jogController3.Text = "156"; + // + // jogController2 + // + this.jogController2.arAutoUpdate = false; + this.jogController2.arAxis = 1; + this.jogController2.arAxisName = "X-R"; + this.jogController2.arBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.jogController2.arBottomSensorCommand = new string[] { + "INP", + "ORG", + "LIM+", + "HOME", + "ALM", + "SVON", + "LIM-", + "POS"}; + this.jogController2.arBottomSensorFont = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold); + this.jogController2.arBottomSensorHeight = 30; + this.jogController2.arBottomSensorListCount = new System.Drawing.Point(4, 2); + this.jogController2.arBottomSensorTitle = new string[] { + "INP", + "ORG", + "LIM+", + "HOME", + "ALM", + "SVON", + "LIM-", + "--"}; + this.jogController2.arCellBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.jogController2.ardAct = 200D; + this.jogController2.arDebugMode = false; + this.jogController2.arIsAlm = false; + this.jogController2.arIsHSet = true; + this.jogController2.arIsInit = false; + this.jogController2.arIsInp = false; + this.jogController2.arIsLimM = false; + this.jogController2.arIsLimP = false; + this.jogController2.arIsOrg = false; + this.jogController2.arIsSvON = true; + this.jogController2.arMaxLength = 400; + this.jogController2.arMinLength = -10; + this.jogController2.arShowJogButton = true; + this.jogController2.arShowPositionBar = true; + this.jogController2.arShowSensor = true; + this.jogController2.arShowTitleBar = true; + this.jogController2.arTitlebarHeight = ((ushort)(20)); + this.jogController2.arUpdateInterval = ((ushort)(100)); + this.jogController2.arUsage = true; + this.jogController2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.jogController2.Dock = System.Windows.Forms.DockStyle.Top; + this.jogController2.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.jogController2.Location = new System.Drawing.Point(5, 77); + this.jogController2.Name = "jogController2"; + this.jogController2.Size = new System.Drawing.Size(216, 72); + this.jogController2.TabIndex = 8; + this.jogController2.Text = "156"; + // + // jogController1 + // + this.jogController1.arAutoUpdate = false; + this.jogController1.arAxis = 0; + this.jogController1.arAxisName = "X-F"; + this.jogController1.arBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.jogController1.arBottomSensorCommand = new string[] { + "INP", + "ORG", + "LIM+", + "HOME", + "ALM", + "SVON", + "LIM-", + "POS"}; + this.jogController1.arBottomSensorFont = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold); + this.jogController1.arBottomSensorHeight = 30; + this.jogController1.arBottomSensorListCount = new System.Drawing.Point(4, 2); + this.jogController1.arBottomSensorTitle = new string[] { + "INP", + "ORG", + "LIM+", + "HOME", + "ALM", + "SVON", + "LIM-", + "--"}; + this.jogController1.arCellBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.jogController1.ardAct = 200D; + this.jogController1.arDebugMode = false; + this.jogController1.arIsAlm = false; + this.jogController1.arIsHSet = true; + this.jogController1.arIsInit = false; + this.jogController1.arIsInp = false; + this.jogController1.arIsLimM = false; + this.jogController1.arIsLimP = false; + this.jogController1.arIsOrg = false; + this.jogController1.arIsSvON = true; + this.jogController1.arMaxLength = 400; + this.jogController1.arMinLength = -10; + this.jogController1.arShowJogButton = true; + this.jogController1.arShowPositionBar = true; + this.jogController1.arShowSensor = true; + this.jogController1.arShowTitleBar = true; + this.jogController1.arTitlebarHeight = ((ushort)(20)); + this.jogController1.arUpdateInterval = ((ushort)(100)); + this.jogController1.arUsage = true; + this.jogController1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.jogController1.Dock = System.Windows.Forms.DockStyle.Top; + this.jogController1.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.jogController1.Location = new System.Drawing.Point(5, 5); + this.jogController1.Name = "jogController1"; + this.jogController1.Size = new System.Drawing.Size(216, 72); + this.jogController1.TabIndex = 7; + this.jogController1.Text = "156"; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.panel3, 0, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(574, 230); + this.tableLayoutPanel1.TabIndex = 137; + // + // panel2 + // + this.panel2.Controls.Add(this.tblDI); + this.panel2.Controls.Add(this.lbTitle1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(0, 0); + this.panel2.Margin = new System.Windows.Forms.Padding(0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(574, 115); + this.panel2.TabIndex = 0; + // + // tblDI + // + this.tblDI.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.tblDI.BorderSize = 1; + colorListItem5.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + colorListItem5.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + colorListItem5.Remark = ""; + colorListItem6.BackColor1 = System.Drawing.Color.Green; + colorListItem6.BackColor2 = System.Drawing.Color.Green; + colorListItem6.Remark = ""; + this.tblDI.ColorList = new arDev.AzinAxt.ColorListItem[] { + colorListItem5, + colorListItem6}; + this.tblDI.Cursor = System.Windows.Forms.Cursors.Arrow; + this.tblDI.Dock = System.Windows.Forms.DockStyle.Fill; + this.tblDI.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Bold); + this.tblDI.FontPin = new System.Drawing.Font("Consolas", 6.75F); + this.tblDI.ForeColor = System.Drawing.Color.WhiteSmoke; + this.tblDI.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.tblDI.Location = new System.Drawing.Point(0, 16); + this.tblDI.MatrixSize = new System.Drawing.Point(5, 4); + this.tblDI.MenuBorderSize = 1; + this.tblDI.MenuGap = 5; + this.tblDI.MinimumSize = new System.Drawing.Size(100, 50); + this.tblDI.Name = "tblDI"; + this.tblDI.Names = null; + this.tblDI.ShadowColor = System.Drawing.Color.Black; + this.tblDI.showDebugInfo = false; + this.tblDI.ShowIndexString = true; + this.tblDI.Size = new System.Drawing.Size(574, 99); + this.tblDI.TabIndex = 3; + this.tblDI.Tags = null; + this.tblDI.Text = "gridView2"; + this.tblDI.TextAttachToImage = true; + this.tblDI.Titles = null; + this.tblDI.Values = null; + // + // lbTitle1 + // + this.lbTitle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.lbTitle1.Cursor = System.Windows.Forms.Cursors.Arrow; + this.lbTitle1.Dock = System.Windows.Forms.DockStyle.Top; + this.lbTitle1.Font = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbTitle1.ForeColor = System.Drawing.Color.White; + this.lbTitle1.Location = new System.Drawing.Point(0, 0); + this.lbTitle1.Name = "lbTitle1"; + this.lbTitle1.Size = new System.Drawing.Size(574, 16); + this.lbTitle1.TabIndex = 0; + this.lbTitle1.Text = "INPUT"; + this.lbTitle1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel3 + // + this.panel3.Controls.Add(this.tblDO); + this.panel3.Controls.Add(this.lbtitle2); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(0, 115); + this.panel3.Margin = new System.Windows.Forms.Padding(0); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(574, 115); + this.panel3.TabIndex = 0; + // + // tblDO + // + this.tblDO.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.tblDO.BorderSize = 1; + colorListItem7.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + colorListItem7.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); + colorListItem7.Remark = ""; + colorListItem8.BackColor1 = System.Drawing.Color.Tomato; + colorListItem8.BackColor2 = System.Drawing.Color.Tomato; + colorListItem8.Remark = ""; + this.tblDO.ColorList = new arDev.AzinAxt.ColorListItem[] { + colorListItem7, + colorListItem8}; + this.tblDO.Cursor = System.Windows.Forms.Cursors.Arrow; + this.tblDO.Dock = System.Windows.Forms.DockStyle.Fill; + this.tblDO.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tblDO.FontPin = new System.Drawing.Font("Consolas", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tblDO.ForeColor = System.Drawing.Color.WhiteSmoke; + this.tblDO.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.tblDO.Location = new System.Drawing.Point(0, 16); + this.tblDO.MatrixSize = new System.Drawing.Point(5, 4); + this.tblDO.MenuBorderSize = 1; + this.tblDO.MenuGap = 5; + this.tblDO.MinimumSize = new System.Drawing.Size(100, 50); + this.tblDO.Name = "tblDO"; + this.tblDO.Names = null; + this.tblDO.ShadowColor = System.Drawing.Color.Black; + this.tblDO.showDebugInfo = false; + this.tblDO.ShowIndexString = true; + this.tblDO.Size = new System.Drawing.Size(574, 99); + this.tblDO.TabIndex = 3; + this.tblDO.Tags = null; + this.tblDO.Text = "gridView3"; + this.tblDO.TextAttachToImage = true; + this.tblDO.Titles = null; + this.tblDO.Values = null; + // + // lbtitle2 + // + this.lbtitle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.lbtitle2.Cursor = System.Windows.Forms.Cursors.Arrow; + this.lbtitle2.Dock = System.Windows.Forms.DockStyle.Top; + this.lbtitle2.Font = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbtitle2.ForeColor = System.Drawing.Color.White; + this.lbtitle2.Location = new System.Drawing.Point(0, 0); + this.lbtitle2.Name = "lbtitle2"; + this.lbtitle2.Size = new System.Drawing.Size(574, 16); + this.lbtitle2.TabIndex = 1; + this.lbtitle2.Text = "OUTPUT"; + this.lbtitle2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // timer1 + // + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // button1 + // + this.button1.Location = new System.Drawing.Point(11, 239); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(89, 28); + this.button1.TabIndex = 138; + this.button1.Text = "init IO/MOT"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // ctlSensor1 + // + this.ctlSensor1.ColorOff = System.Drawing.Color.DimGray; + this.ctlSensor1.ColorOn = System.Drawing.Color.Lime; + this.ctlSensor1.Location = new System.Drawing.Point(468, 293); + this.ctlSensor1.MaximumSize = new System.Drawing.Size(80, 80); + this.ctlSensor1.MinimumSize = new System.Drawing.Size(40, 40); + this.ctlSensor1.Name = "ctlSensor1"; + this.ctlSensor1.Size = new System.Drawing.Size(54, 48); + this.ctlSensor1.TabIndex = 142; + this.ctlSensor1.Value = true; + // + // m4 + // + this.m4.Length = 100; + this.m4.Location = new System.Drawing.Point(277, 285); + this.m4.MaximumSize = new System.Drawing.Size(80, 80); + this.m4.MinimumSize = new System.Drawing.Size(40, 40); + this.m4.Name = "m4"; + this.m4.Pin_DirCW = false; + this.m4.Pin_Max = false; + this.m4.Pin_Min = false; + this.m4.Pin_Run = false; + this.m4.Size = new System.Drawing.Size(80, 47); + this.m4.TabIndex = 141; + this.m4.TabStop = false; + // + // m3 + // + this.m3.Length = 100; + this.m3.Location = new System.Drawing.Point(191, 285); + this.m3.MaximumSize = new System.Drawing.Size(80, 80); + this.m3.MinimumSize = new System.Drawing.Size(40, 40); + this.m3.Name = "m3"; + this.m3.Pin_DirCW = false; + this.m3.Pin_Max = false; + this.m3.Pin_Min = false; + this.m3.Pin_Run = false; + this.m3.Size = new System.Drawing.Size(80, 47); + this.m3.TabIndex = 140; + this.m3.TabStop = false; + // + // m2 + // + this.m2.Length = 100; + this.m2.Location = new System.Drawing.Point(105, 285); + this.m2.MaximumSize = new System.Drawing.Size(80, 80); + this.m2.MinimumSize = new System.Drawing.Size(40, 40); + this.m2.Name = "m2"; + this.m2.Pin_DirCW = false; + this.m2.Pin_Max = false; + this.m2.Pin_Min = false; + this.m2.Pin_Run = false; + this.m2.Size = new System.Drawing.Size(80, 47); + this.m2.TabIndex = 140; + this.m2.TabStop = false; + // + // m1 + // + this.m1.Length = 100; + this.m1.Location = new System.Drawing.Point(19, 285); + this.m1.MaximumSize = new System.Drawing.Size(80, 80); + this.m1.MinimumSize = new System.Drawing.Size(40, 40); + this.m1.Name = "m1"; + this.m1.Pin_DirCW = false; + this.m1.Pin_Max = false; + this.m1.Pin_Min = false; + this.m1.Pin_Run = false; + this.m1.Size = new System.Drawing.Size(80, 47); + this.m1.TabIndex = 140; + this.m1.TabStop = false; + // + // mcv + // + this.mcv.Length = 100; + this.mcv.Location = new System.Drawing.Point(363, 285); + this.mcv.MaximumSize = new System.Drawing.Size(80, 80); + this.mcv.MinimumSize = new System.Drawing.Size(40, 40); + this.mcv.Name = "mcv"; + this.mcv.Pin_DirCW = false; + this.mcv.Pin_Max = false; + this.mcv.Pin_Min = false; + this.mcv.Pin_Run = false; + this.mcv.Size = new System.Drawing.Size(80, 47); + this.mcv.TabIndex = 139; + this.mcv.TabStop = false; + // + // fEmulator + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 414); + this.Controls.Add(this.ctlSensor1); + this.Controls.Add(this.m4); + this.Controls.Add(this.m3); + this.Controls.Add(this.m2); + this.Controls.Add(this.m1); + this.Controls.Add(this.mcv); + this.Controls.Add(this.button1); + this.Controls.Add(this.tableLayoutPanel1); + this.Controls.Add(this.panel1); + this.Name = "fEmulator"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "fEmulator"; + this.Load += new System.EventHandler(this.fEmulator_Load); + this.panel1.ResumeLayout(false); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private arDev.AzinAxt.JogController jogController1; + private System.Windows.Forms.Panel panel1; + private arDev.AzinAxt.JogController jogController3; + private arDev.AzinAxt.JogController jogController2; + private arDev.AzinAxt.JogController jogController5; + private arDev.AzinAxt.JogController jogController4; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel2; + private arDev.AzinAxt.GridView tblDI; + private System.Windows.Forms.Label lbTitle1; + private System.Windows.Forms.Panel panel3; + private arDev.AzinAxt.GridView tblDO; + private System.Windows.Forms.Label lbtitle2; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.Button button1; + private UIControl.CtlMotor mcv; + private UIControl.CtlMotor m1; + private UIControl.CtlMotor m2; + private UIControl.CtlMotor m3; + private UIControl.CtlMotor m4; + private UIControl.CtlSensor ctlSensor1; + } +} \ No newline at end of file diff --git a/QRValidation/Project/Dialog/fEmulator.cs b/QRValidation/Project/Dialog/fEmulator.cs new file mode 100644 index 0000000..a3dcb9a --- /dev/null +++ b/QRValidation/Project/Dialog/fEmulator.cs @@ -0,0 +1,278 @@ +using arDev.AzinAxt; +using arDev.AzinAxt.Emulator; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project.Dialog +{ + public partial class fEmulator : Form + { + public CEmuleDIO devIO { get; private set; } + public CEmulMOT devM { get; private set; } + + JogController[] jobCtl; + + public fEmulator(int pCnt,int aCnt, MOT mot) + { + InitializeComponent(); + + //motion + devM = new CEmulMOT(aCnt); + + this.jobCtl = new JogController[] { + jogController1,jogController2, + jogController3,jogController4, + jogController5 + }; + + foreach (var item in jobCtl) + { + item.arDebugMode = false; + item.ItemClick += Item_ItemClick; + } + + for (int i = 0; i < aCnt; i++) + { + Boolean enb = i < aCnt; + jobCtl[i].MotionObject = mot; + jobCtl[i].Enabled = enb; + jobCtl[i].arUsage = enb; + jobCtl[i].arAutoUpdate = false; + jobCtl[i].Invalidate(); + + if (enb) + { + devM.MaxPosition[i] = jobCtl[i].arMaxLength; + devM.MinPosition[i] = jobCtl[i].arMinLength; + } + + } + + //input + devIO = new CEmuleDIO(pCnt); + devIO.IOValueChagned += Dev_IOValueChagned; + + this.tblDI.SuspendLayout(); + this.tblDO.SuspendLayout(); + + var pinNameI = new string[pCnt]; + var pinNameO = new string[pCnt]; + var pinTitleI = new string[pCnt]; + var pinTitleO = new string[pCnt]; + + for (int i = 0; i < pinNameI.Length; i++) + { + pinNameI[i] = "X" + i.ToString("X2").PadLeft(3, '0');// Enum.GetName(typeof(ePLCIPin), i); //Enum.GetNames(typeof(eDIName))[i];// i.ToString(); + pinTitleI[i] = string.Empty;// i.ToString();// Enum.GetName(typeof(ePLCITitle), i); //Enum.GetNames(typeof(eDITitle))[i]; + + } + + for (int i = 0; i < pinNameO.Length; i++) + { + pinNameO[i] = "Y" + i.ToString("X2").PadLeft(3, '0');// Enum.GetName(typeof(ePLCOPin), i); // Enum.GetNames(typeof(eDOName))[i]; + pinTitleO[i] = string.Empty;//i.ToString();// Enum.GetName(typeof(ePLCOTitle), i); // Enum.GetNames(typeof(eDOTitle))[i]; + } + + tblDI.MatrixSize = new Point(8, 8); + tblDO.MatrixSize = new Point(8, 8); + + tblDI.setTitle(pinTitleI); + tblDO.setTitle(pinTitleO); + + tblDI.setNames(pinNameI); + tblDO.setNames(pinNameO); + + tblDI.setItemTextAlign(ContentAlignment.BottomLeft); + tblDO.setItemTextAlign(ContentAlignment.BottomLeft); + + + + tblDI.setValue(devIO.Input); + tblDO.setValue(devIO.Output); + + //dio.IOValueChanged += dio_IOValueChanged; + + this.tblDI.ItemClick += tblDI_ItemClick; + this.tblDO.ItemClick += tblDO_ItemClick; + + this.tblDI.Invalidate(); + this.tblDO.Invalidate(); + } + + private void fEmulator_Load(object sender, EventArgs e) + { + timer1.Start(); + } + + private void Item_ItemClick(object sender, JogController.ItemClickEventArgs e) + { + //조그컨트롤에서 버튼을 누르면 동작하는 기능 + JogController jog = sender as JogController; + arDev.AzinAxt.MOT mot = jog.MotionObject; + if (e.Button == MouseButtons.Left) + { + if (e.IsDown == false) + { + //마우스 업 + if (e.Command.StartsWith("JOG")) + { + devM.dCmd[jog.arAxis] = devM.dAct[jog.arAxis]; + mot.MoveStop("", (short)jog.arAxis); + } + } + else + { + //마우스 다운 + if (e.Command == "HSET") + { + mot.isHomeSet[jog.arAxis] = !mot.isHomeSet[jog.arAxis]; + Console.WriteLine("homse change : " + devM.isHSet[jog.arAxis].ToString()); + } + else if (e.Command == "ALM") + { + //알람상태를 직접 변경해야한다 + devM.SetMech(jog.arAxis, CEmulMOT.eMach.MotAlarm, !devM.isAlm(jog.arAxis)); + } + else if (e.Command == "SVON") + { + var cVal = mot.isSERVOON[jog.arAxis]; + mot.SetSVON((short)jog.arAxis, !cVal); + } + else if (e.Command == "ORG") + { + mot.Move((short)jog.arAxis, 0); + } + else if (e.Command == "JOGR") + { + mot.JOG((short)jog.arAxis, eMotionDirection.Positive); + } + else if (e.Command == "JOGL") + { + mot.JOG((short)jog.arAxis, eMotionDirection.Negative); + } + + } + } + } + + void tblDO_ItemClick(object sender, GridView.ItemClickEventArgs e) + { + var nVal = !devIO.Output[e.idx];//.Get(e.idx);// doValue[e.idx];// == 1 ? (ushort)0 : (ushort)1; + devIO.SetOutput(e.idx, nVal); + } + void tblDI_ItemClick(object sender, GridView.ItemClickEventArgs e) + { + var nVal = !devIO.Input[e.idx]; + devIO.SetInput(e.idx, nVal); + } + private void Dev_IOValueChagned(object sender, CEmuleDIO.IOValueChangedArgs e) + { + if (e.Dir == CEmuleDIO.eDirection.In) + { + //해당 아이템의 값을 변경하고 다시 그린다. + if (tblDI.setValue(e.ArrIDX, e.NewValue)) + tblDI.Invalidate();//.drawItem(e.ArrIDX); + Console.WriteLine(string.Format("di change {0}:{1}", e.ArrIDX, e.NewValue.ToString())); + } + else + { + //해당 아이템의 값을 변경하고 다시 그린다. + if (tblDO.setValue(e.ArrIDX, e.NewValue)) + tblDO.Invalidate();//.drawItem(e.ArrIDX); + + Console.WriteLine(string.Format("do change {0}:{1}", e.ArrIDX, e.NewValue.ToString())); + } + } + + private void timer1_Tick(object sender, EventArgs e) + { + for (int i = 0; i < this.devM.axisCount; i++) + { + //각 축별 데이터를 표시한다 + this.jobCtl[i].arIsOrg = devM.isOrg(i); + this.jobCtl[i].arIsInp = devM.isINp(i); + this.jobCtl[i].arIsAlm = devM.isAlm(i); + this.jobCtl[i].arIsLimM = devM.isLimM(i); + this.jobCtl[i].arIsLimP = devM.isLimP(i); + this.jobCtl[i].arIsSvON = devM.isSvOn(i); + + this.jobCtl[i].ardAct = devM.dAct[i]; + this.jobCtl[i].arIsInit = true;// MotionObject.IsInit; + this.jobCtl[i].arIsHSet = true; + + this.jobCtl[i].Invalidate(); + } + + //motor 표시 + mcv.Pin_Run = devIO.Output[(int)eDOName.CONV_RUN]; + mcv.Pin_DirCW = true; + mcv.Invalidate(); + + m1.Pin_Run = devIO.Output[(int)eDOName.PORT1_MOT_RUN]; + m1.Pin_DirCW = devIO.Output[(int)eDOName.PORT1_MOT_DIR]; + m1.Invalidate(); + + m2.Pin_Run = devIO.Output[(int)eDOName.PORT2_MOT_RUN]; + m2.Pin_DirCW = devIO.Output[(int)eDOName.PORT2_MOT_DIR]; + m2.Invalidate(); + + m3.Pin_Run = devIO.Output[(int)eDOName.PORT3_MOT_RUN]; + m3.Pin_DirCW = devIO.Output[(int)eDOName.PORT3_MOT_DIR]; + m3.Invalidate(); + + m4.Pin_Run = devIO.Output[(int)eDOName.PORT4_MOT_RUN]; + m4.Pin_DirCW = devIO.Output[(int)eDOName.PORT4_MOT_DIR]; + m4.Invalidate(); + } + + private void button1_Click(object sender, EventArgs e) + { + //모터 svon + Pub.mot.SetSVON(true); + + //emg on + devIO.SetInput((int)eDIName.BUT_EMGF, true); + devIO.SetInput((int)eDIName.BUT_EMGR, true); + + devIO.SetInput((int)eDIName.AREA_PORT11, true); + devIO.SetInput((int)eDIName.AREA_PORT12, true); + + devIO.SetInput((int)eDIName.AREA_PORT21, true); + devIO.SetInput((int)eDIName.AREA_PORT22, true); + + devIO.SetInput((int)eDIName.AREA_PORT31, true); + devIO.SetInput((int)eDIName.AREA_PORT32, true); + + devIO.SetInput((int)eDIName.AREA_PORT41, true); + devIO.SetInput((int)eDIName.AREA_PORT42, true); + + //각포트는 하단에 있는걸로 한다 + devIO.SetInput((int)eDIName.PORT1_LIM_UP, true); + devIO.SetInput((int)eDIName.PORT1_LIM_DN, false); //false가 감지 + devIO.SetInput((int)eDIName.PORT1_DET_UP, true); + devIO.SetInput((int)eDIName.PORT1_DET_DN, true); + + devIO.SetInput((int)eDIName.PORT2_LIM_UP, true); + devIO.SetInput((int)eDIName.PORT2_LIM_DN, false); //false가 감지 + devIO.SetInput((int)eDIName.PORT2_DET_UP, true); + devIO.SetInput((int)eDIName.PORT2_DET_DN, true); + + devIO.SetInput((int)eDIName.PORT3_LIM_UP, true); + devIO.SetInput((int)eDIName.PORT3_LIM_DN, false); //false가 감지 + devIO.SetInput((int)eDIName.PORT3_DET_UP, true); + devIO.SetInput((int)eDIName.PORT3_DET_DN, true); + + devIO.SetInput((int)eDIName.PORT4_LIM_UP, true); + devIO.SetInput((int)eDIName.PORT4_LIM_DN, false); //false가 감지 + devIO.SetInput((int)eDIName.PORT4_DET_UP, true); + devIO.SetInput((int)eDIName.PORT4_DET_DN, true); + } + } +} diff --git a/QRValidation/Project/Dialog/fEmulator.resx b/QRValidation/Project/Dialog/fEmulator.resx new file mode 100644 index 0000000..1f666f2 --- /dev/null +++ b/QRValidation/Project/Dialog/fEmulator.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + \ No newline at end of file diff --git a/QRValidation/Project/Dialog/fErrorException.Designer.cs b/QRValidation/Project/Dialog/fErrorException.Designer.cs new file mode 100644 index 0000000..a2977ef --- /dev/null +++ b/QRValidation/Project/Dialog/fErrorException.Designer.cs @@ -0,0 +1,205 @@ +namespace Project +{ + partial class fErrorException + { + /// + /// 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(fErrorException)); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.panTitleBar = new System.Windows.Forms.Panel(); + this.label3 = new System.Windows.Forms.Label(); + this.lbTitle = new System.Windows.Forms.Label(); + this.btTeach = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.panTitleBar.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // pictureBox1 + // + this.pictureBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.Location = new System.Drawing.Point(269, 19); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(80, 80); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + this.label1.Font = new System.Drawing.Font("맑은 고딕", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(10, 106); + this.label1.Name = "label1"; + this.label1.Padding = new System.Windows.Forms.Padding(10); + this.label1.Size = new System.Drawing.Size(598, 50); + this.label1.TabIndex = 3; + this.label1.Text = "The program was terminated due to an unhandled error"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + this.label2.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label2.ForeColor = System.Drawing.Color.DodgerBlue; + this.label2.Location = new System.Drawing.Point(17, 159); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(507, 45); + this.label2.TabIndex = 4; + this.label2.Text = "Information for error reporting has been collected.\r\nThe collected information is" + + " shown below.\r\nPlease send to \"Chikyun.kim@amkor.co.kr\" including the situation " + + "before the error occurred."; + // + // textBox1 + // + this.textBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); + this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.textBox1.ForeColor = System.Drawing.Color.LightCoral; + this.textBox1.Location = new System.Drawing.Point(10, 218); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.textBox1.Size = new System.Drawing.Size(598, 346); + this.textBox1.TabIndex = 5; + this.textBox1.Text = "test"; + // + // panTitleBar + // + this.panTitleBar.BackColor = System.Drawing.Color.Maroon; + this.panTitleBar.Controls.Add(this.label3); + this.panTitleBar.Controls.Add(this.lbTitle); + this.panTitleBar.Dock = System.Windows.Forms.DockStyle.Top; + this.panTitleBar.Location = new System.Drawing.Point(1, 1); + this.panTitleBar.Name = "panTitleBar"; + this.panTitleBar.Size = new System.Drawing.Size(617, 32); + this.panTitleBar.TabIndex = 133; + // + // label3 + // + this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label3.ForeColor = System.Drawing.Color.White; + this.label3.Location = new System.Drawing.Point(547, 6); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(61, 17); + this.label3.TabIndex = 61; + this.label3.Text = "[ Close ]"; + this.label3.Click += new System.EventHandler(this.label3_Click); + // + // lbTitle + // + this.lbTitle.BackColor = System.Drawing.Color.Transparent; + this.lbTitle.Cursor = System.Windows.Forms.Cursors.Arrow; + this.lbTitle.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbTitle.Font = new System.Drawing.Font("Cambria", 12F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbTitle.ForeColor = System.Drawing.Color.LightSkyBlue; + this.lbTitle.Location = new System.Drawing.Point(0, 0); + this.lbTitle.Name = "lbTitle"; + this.lbTitle.Padding = new System.Windows.Forms.Padding(10, 0, 0, 0); + this.lbTitle.Size = new System.Drawing.Size(617, 32); + this.lbTitle.TabIndex = 60; + this.lbTitle.Text = "UnhandledException"; + this.lbTitle.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // btTeach + // + this.btTeach.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.btTeach.Cursor = System.Windows.Forms.Cursors.Hand; + this.btTeach.Dock = System.Windows.Forms.DockStyle.Bottom; + this.btTeach.Font = new System.Drawing.Font("맑은 고딕", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.btTeach.ForeColor = System.Drawing.Color.DeepPink; + this.btTeach.Location = new System.Drawing.Point(1, 610); + this.btTeach.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0); + this.btTeach.Name = "btTeach"; + this.btTeach.Size = new System.Drawing.Size(617, 61); + this.btTeach.TabIndex = 134; + this.btTeach.Text = "Close"; + this.btTeach.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.btTeach.Click += new System.EventHandler(this.btTeach_Click); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40))))); + this.panel1.Controls.Add(this.pictureBox1); + this.panel1.Controls.Add(this.textBox1); + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.label2); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(1, 33); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(617, 577); + this.panel1.TabIndex = 135; + // + // fErrorException + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(15)))), ((int)(((byte)(15))))); + this.ClientSize = new System.Drawing.Size(619, 672); + this.Controls.Add(this.panel1); + this.Controls.Add(this.btTeach); + this.Controls.Add(this.panTitleBar); + this.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.KeyPreview = true; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fErrorException"; + this.Padding = new System.Windows.Forms.Padding(1); + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Error Report"; + this.TopMost = true; + this.Load += new System.EventHandler(this.fErrorException_Load); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.panTitleBar.ResumeLayout(false); + this.panTitleBar.PerformLayout(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox1; + public System.Windows.Forms.Panel panTitleBar; + private System.Windows.Forms.Label lbTitle; + private System.Windows.Forms.Label btTeach; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label3; + } +} \ No newline at end of file diff --git a/QRValidation/Project/Dialog/fErrorException.cs b/QRValidation/Project/Dialog/fErrorException.cs new file mode 100644 index 0000000..293f622 --- /dev/null +++ b/QRValidation/Project/Dialog/fErrorException.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Project +{ + public partial class fErrorException : Form + { + public fErrorException(string err) + { + InitializeComponent(); + System.Text.StringBuilder sb = new StringBuilder(); + sb.AppendLine("==============================="); + sb.AppendLine("Amkor Technology Korea"); + sb.AppendLine("K4 EEDP"); + sb.AppendLine("==============================="); + sb.AppendLine(); + sb.AppendLine(err); + this.textBox1.Text = sb.ToString(); + + this.lbTitle.MouseMove += LbTitle_MouseMove; + this.lbTitle.MouseUp += LbTitle_MouseUp; + this.lbTitle.MouseDown += LbTitle_MouseDown; + this.lbTitle.DoubleClick += LbTitle_DoubleClick; + } + + private void fErrorException_Load(object sender, EventArgs e) + { + + } + + #region "Mouse Form Move" + + private Boolean fMove = false; + private Point MDownPos; + + private void LbTitle_DoubleClick(object sender, EventArgs e) + { + if (this.WindowState == FormWindowState.Maximized) this.WindowState = FormWindowState.Normal; + else this.WindowState = FormWindowState.Maximized; + } + private void LbTitle_MouseMove(object sender, MouseEventArgs e) + { + if (fMove) + { + Point offset = new Point(e.X - MDownPos.X, e.Y - MDownPos.Y); + this.Left += offset.X; + this.Top += offset.Y; + offset = new Point(0, 0); + } + } + private void LbTitle_MouseUp(object sender, MouseEventArgs e) + { + fMove = false; + } + private void LbTitle_MouseDown(object sender, MouseEventArgs e) + { + MDownPos = new Point(e.X, e.Y); + fMove = true; + } + + #endregion + + private void btTeach_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void label3_Click(object sender, EventArgs e) + { + this.Close(); + } + } +} diff --git a/QRValidation/Project/Dialog/fErrorException.resx b/QRValidation/Project/Dialog/fErrorException.resx new file mode 100644 index 0000000..20babae --- /dev/null +++ b/QRValidation/Project/Dialog/fErrorException.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAb + rQAAG60BIeRSlQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAPnSURBVHhe7dzJ + TttQFAbgdNFKnZ6GFWKDfCNGsWRRddO+ATwBo5g2iNdopU7LqlXVFgUa2LDoE7TbQoEIFpVw72/5EOdw + INO919fx/aVfiuwTD58chcFyJSQkJJu4Urm3H0Uv95Wq7VWrx2jyOopeYF06FiLlcGbmkQZ7v6dULFav + w0w6HpINYGpKfQbUj/Hx+Pf8fHy2thafra8nr7EsQYyiT7Xh4Yfp20KQLF59cjI+XlqKL7e3W4plWBcQ + WXZHRp5qkF3AHE5NxScrKzfwqFiHmRRxF+9NN1POdINHDYhpesGjlh6xHzxqaRE53t/VVRGok5YO0SQe + tTSINvCoLYhKfR84RJt41IFFdIFHxbYHCtElHpUjfhkdfZIeTrGS4OkTcIlHLTxinnjUwiLiQPPGoxYO + 0Sc8amEQTePxSDOd1ntEG1cejzTTTb1FbMGbnjaCh/JIM93WO0RbeCiPNNNLs4g1pb7lhmgTD+WRZnpt + 7oi28VAeaaaf5oaIHWGHNvFQHmmm3yaI+hycIbrCQ3mkGRN1hugSD+WRZkzVOqJrPJRHmjFZa4h54KE8 + 0ozpGkfMCw/lkWZs1BhinngojzRjq30j5o2H8kgzNptF3Ffqa8eIPuChPNKM7XaN6AseyiPNuChHPBob + e5xytQZ3f2q81xg80L/inCwvixt0VR5pxlVhAZMEsVp9Jd4pq1c+xwBuZMwbD+WRZlwWJnSTZy2KnqVs + zegVyR8Hfs3NiRtwXR5pxnVhAyN8lFO2ZvSKc6w839gQ3+y6PNKM68IGRrpnKVszemEjAN5d3K99F2D4 + CLdpu49w+BK5o22/RMKPMbcXFm1/jEEOh4bu68vzLQbrExPx8eKiuEEX5ZFmXBQGsICJ7hsYpVxyfEHk + kWZst2s8ik9XYl7tGY9SZsQsHgy6xqOUEdEYHqVMiMbxKGVAtIZHcYq4sxP/q9fjq9PTpHiNZeKsgVrH + o/ycnX3gAhFgPAmiMNtv/ywsuMGjuEC8ajRStmawTJrtp87xKEDUv/a9s4XoAjA3PIpNRNsfYY6Hc0lP + y22sIdKXyMVF0gTP0JeIN3gUjogDlA7ch3qHRykCYhYPx+oNHsVnRO/xKD4iFgaPggOkpw/ljVg4PIoP + iIXFo+SJWHg8Ch7PpE/iI07kAI90cvCPKuwD+8I+se/CPyLK5ZWYvfKwz8JeeTwuEAcWj2ITceDxKDYQ + S4NHMYlYOjyKCcTS4lESRKU+9IKI2etHgpYRj9ILYsBj6QYx4N2S8BBaA5Eeg9zY3IwbW1vhMcidBoj0 + 7SxWr8NMOh4iBXd/Xj8KXqlLNHkdHgUfEnIjlcp/1rPAKpMPkMkAAAAASUVORK5CYII= + + + \ No newline at end of file diff --git a/QRValidation/Project/Dialog/fTeach.Designer.cs b/QRValidation/Project/Dialog/fTeach.Designer.cs new file mode 100644 index 0000000..12fa596 --- /dev/null +++ b/QRValidation/Project/Dialog/fTeach.Designer.cs @@ -0,0 +1,242 @@ +namespace Project +{ + partial class fTeach + { + /// + /// 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(fTeach)); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.btOpen = new System.Windows.Forms.ToolStripButton(); + this.btSave = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.btFindEvision = new System.Windows.Forms.ToolStripButton(); + this.btTestEvision = new System.Windows.Forms.ToolStripButton(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.panel1 = new System.Windows.Forms.Panel(); + this.button1 = new System.Windows.Forms.Button(); + this.tbGainOff = new System.Windows.Forms.TextBox(); + this.tbErode = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.tbBarcodeList = new System.Windows.Forms.TextBox(); + this.toolStripButton13 = new System.Windows.Forms.ToolStripButton(); + this.toolStrip1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // toolStrip1 + // + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btOpen, + this.btSave, + this.toolStripSeparator2, + this.btFindEvision, + this.btTestEvision, + this.toolStripButton13}); + this.toolStrip1.Location = new System.Drawing.Point(0, 0); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(688, 25); + this.toolStrip1.TabIndex = 3; + this.toolStrip1.Text = "toolStrip1"; + // + // btOpen + // + this.btOpen.Image = ((System.Drawing.Image)(resources.GetObject("btOpen.Image"))); + this.btOpen.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btOpen.Name = "btOpen"; + this.btOpen.Size = new System.Drawing.Size(56, 22); + this.btOpen.Text = "Open"; + this.btOpen.Click += new System.EventHandler(this.toolStripButton1_Click); + // + // btSave + // + this.btSave.Image = ((System.Drawing.Image)(resources.GetObject("btSave.Image"))); + this.btSave.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btSave.Name = "btSave"; + this.btSave.Size = new System.Drawing.Size(52, 22); + this.btSave.Text = "Save"; + this.btSave.Click += new System.EventHandler(this.toolStripButton4_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25); + // + // btFindEvision + // + this.btFindEvision.Image = ((System.Drawing.Image)(resources.GetObject("btFindEvision.Image"))); + this.btFindEvision.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btFindEvision.Name = "btFindEvision"; + this.btFindEvision.Size = new System.Drawing.Size(95, 22); + this.btFindEvision.Text = "Find(Evision)"; + this.btFindEvision.Click += new System.EventHandler(this.btFineEvision_Click); + // + // btTestEvision + // + this.btTestEvision.Image = ((System.Drawing.Image)(resources.GetObject("btTestEvision.Image"))); + this.btTestEvision.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btTestEvision.Name = "btTestEvision"; + this.btTestEvision.Size = new System.Drawing.Size(93, 22); + this.btTestEvision.Text = "Test(Evision)"; + this.btTestEvision.Click += new System.EventHandler(this.toolStripButton3_Click); + // + // statusStrip1 + // + this.statusStrip1.Location = new System.Drawing.Point(0, 606); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(688, 22); + this.statusStrip1.TabIndex = 4; + this.statusStrip1.Text = "statusStrip1"; + // + // panel1 + // + this.panel1.Controls.Add(this.button1); + this.panel1.Controls.Add(this.tbGainOff); + this.panel1.Controls.Add(this.tbErode); + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.label1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel1.Location = new System.Drawing.Point(0, 495); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(688, 111); + this.panel1.TabIndex = 5; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(112, 70); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(564, 29); + this.button1.TabIndex = 2; + this.button1.Text = "Save Setting"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // tbGainOff + // + this.tbGainOff.Location = new System.Drawing.Point(112, 42); + this.tbGainOff.Name = "tbGainOff"; + this.tbGainOff.Size = new System.Drawing.Size(564, 21); + this.tbGainOff.TabIndex = 1; + // + // tbErode + // + this.tbErode.Location = new System.Drawing.Point(112, 14); + this.tbErode.Name = "tbErode"; + this.tbErode.Size = new System.Drawing.Size(564, 21); + this.tbErode.TabIndex = 1; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(15, 45); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(91, 12); + this.label2.TabIndex = 0; + this.label2.Text = "Gain Offset List"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(44, 17); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(62, 12); + this.label1.TabIndex = 0; + this.label1.Text = "Erode List"; + // + // panel2 + // + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(0, 25); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(688, 405); + this.panel2.TabIndex = 6; + // + // tbBarcodeList + // + this.tbBarcodeList.Dock = System.Windows.Forms.DockStyle.Bottom; + this.tbBarcodeList.Location = new System.Drawing.Point(0, 430); + this.tbBarcodeList.Multiline = true; + this.tbBarcodeList.Name = "tbBarcodeList"; + this.tbBarcodeList.ReadOnly = true; + this.tbBarcodeList.Size = new System.Drawing.Size(688, 65); + this.tbBarcodeList.TabIndex = 7; + // + // toolStripButton13 + // + this.toolStripButton13.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton13.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton13.Image"))); + this.toolStripButton13.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton13.Name = "toolStripButton13"; + this.toolStripButton13.Size = new System.Drawing.Size(61, 22); + this.toolStripButton13.Text = "debug"; + this.toolStripButton13.Click += new System.EventHandler(this.toolStripButton13_Click); + // + // fTeach + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(688, 628); + this.Controls.Add(this.panel2); + this.Controls.Add(this.tbBarcodeList); + this.Controls.Add(this.panel1); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.toolStrip1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "fTeach"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Vision Teach"; + this.Load += new System.EventHandler(this.fTeach_Load); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripButton btOpen; + private System.Windows.Forms.ToolStripButton btFindEvision; + private System.Windows.Forms.ToolStripButton btTestEvision; + private System.Windows.Forms.ToolStripButton btSave; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox tbErode; + private System.Windows.Forms.TextBox tbGainOff; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.TextBox tbBarcodeList; + private System.Windows.Forms.ToolStripButton toolStripButton13; + } +} \ No newline at end of file diff --git a/QRValidation/Project/Dialog/fTeach.cs b/QRValidation/Project/Dialog/fTeach.cs new file mode 100644 index 0000000..aa47585 --- /dev/null +++ b/QRValidation/Project/Dialog/fTeach.cs @@ -0,0 +1,252 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using AR; + + +#if V22 +using Euresys.Open_eVision_22_12; +#else +using Euresys.Open_eVision_2_11; +#endif + +namespace Project +{ + public partial class fTeach : Form + { + + EImageBW8 img = null; + private arCtl.ImageBoxEvision iv1; + public fTeach(EBaseROI img_ = null) + { + InitializeComponent(); + + this.iv1 = new arCtl.ImageBoxEvision(); + this.iv1.BackColor = Color.Black; + this.iv1.Dock = DockStyle.Fill; + this.panel2.Controls.Add(iv1); + iv1.Dock = DockStyle.Fill; + if (img_ != null) + { + img = new EImageBW8(); + img.SetSize(img_); + img_.CopyTo(this.img); + //EasyImage.Copy(img_, img); + + this.iv1.Image = img; + this.iv1.Invalidate(); + this.iv1.ZoomFit(); + } + this.FormClosed += FTeach_FormClosed; + } + + private void FTeach_FormClosed(object sender, FormClosedEventArgs e) + { + if (this.img != null) img.Dispose(); + runtest = false; + } + + private void fTeach_Load(object sender, EventArgs e) + { + this.tbErode.Text = PUB.setting.erodevaluestr; + this.tbGainOff.Text = PUB.setting.GainOffsetListStr; + } + private void toolStripButton1_Click(object sender, EventArgs e) + { + //open file + OpenFileDialog od = new OpenFileDialog(); + if (od.ShowDialog() == DialogResult.OK) + { + if (this.img != null) this.img.Dispose(); + img = new EImageBW8(); + img.Load(od.FileName); + + this.iv1.Image = img; + this.iv1.Invalidate(); + this.iv1.ZoomFit(); + } + } + + private void btFineEvision_Click(object sender, EventArgs e) + { + string resultMessage; + iv1.Shapes.Clear(); + //using (EImageBW8 img = new EImageBW8(this.img.Width, this.img.Height)) + { + //img.SetImagePtr(this.img.Width, this.img.Height, this.img.MIplImage.ImageData); + var pccnt = 0; + var qrrlt = Util_Vision.DetectQR(img, this.iv1, pccnt++, + out resultMessage, + tbErode.Text, + tbGainOff.Text, + PUB.setting.blob_area_min, + PUB.setting.blob_area_max, + PUB.setting.blob_sigmaxy, + PUB.setting.blob_sigmayy, + PUB.setting.blob_sigmaxx, + PUB.setting.blob_minw, + PUB.setting.blob_maxw, + PUB.setting.blob_minh, + PUB.setting.blob_maxh); + + var list = qrrlt.Item1; + //PUB.ProcessTime[ECalibrationMode] + this.tbBarcodeList.Text = string.Join(",", list.Select(t => t.data).ToArray()); + // + foreach (var item in list.OrderByDescending(t => t.sid)) + { + Console.WriteLine("sid:" + item.sid); + } + + } + this.iv1.ZoomFit(); + } + + Boolean runtest = false; + int runcount = 0; + private void toolStripButton3_Click(object sender, EventArgs e) + { + if (runtest) + { + runtest = false; + PUB.log_[0].Add($"Test completed({runcount})"); + } + else + { + string resultMessage; + iv1.Shapes.Clear(); + runcount = 0; + runtest = true; + PUB.log_[0].Add("Test Evision Start"); + Task.Run(() => + { + while (runtest) + { + Util_Vision.DetectQR(img, this.iv1, runcount++, + out resultMessage, + tbErode.Text, + tbGainOff.Text, + PUB.setting.blob_area_min, + PUB.setting.blob_area_max, + PUB.setting.blob_sigmaxy, + PUB.setting.blob_sigmayy, + PUB.setting.blob_sigmaxx, + PUB.setting.blob_minw, + PUB.setting.blob_maxw, + PUB.setting.blob_minh, + PUB.setting.blob_maxh); + } + }); + } + } + + private void toolStripButton4_Click(object sender, EventArgs e) + { + if (this.iv1.Image == null) + { + UTIL.MsgE("No image"); + return; + } + var sd = new SaveFileDialog(); + sd.FileName = "saveimage.bmp"; + if (sd.ShowDialog() == DialogResult.OK) + this.iv1.Image.Save(sd.FileName); + } + + private void button1_Click(object sender, EventArgs e) + { + PUB.setting.erodevaluestr = tbErode.Text; + PUB.setting.GainOffsetListStr = tbGainOff.Text; + PUB.setting.Save(); + } + + private void toolStripButton13_Click(object sender, EventArgs e) + { + this.iv1.DebugMode = !this.iv1.DebugMode; + this.iv1.Invalidate(); + } + + //private void toolStripButton6_Click(object sender, EventArgs e) + //{ + // string resultMessage; + // iv1.ClearShape(); + // using (EImageBW8 img = new EImageBW8(this.img.Width, this.img.Height)) + // { + // img.SetImagePtr(this.img.Width, this.img.Height, this.img.MIplImage.ImageData); + // var pccnt = 0; + // var list = Util_Vision.DetectQR(img, this.iv1, pccnt++, + // out resultMessage, + // tbErode.Text, + // tbGainOff.Text, + // Pub.setting.blob_area_min, + // Pub.setting.blob_area_max, + // Pub.setting.blob_sigmaxy, + // Pub.setting.blob_sigmayy, + // Pub.setting.blob_sigmaxx, + // Pub.setting.blob_minw, + // Pub.setting.blob_maxw, + // Pub.setting.blob_minh, + // Pub.setting.blob_maxh, + // true); + + // // + // foreach (var item in list.OrderByDescending(t => t.sid)) + // { + // Console.WriteLine("sid:" + item.sid); + // } + + // } + // this.iv1.ZoomFit(); + //} + + //private void toolStripButton5_Click(object sender, EventArgs e) + //{ + // if (runtest) + // { + // runtest = false; + // Pub.log.Add($"테스트 종료({runcount})"); + // } + // else + // { + // Pub.log.Add("Test Evision+Softtek Start"); + // string resultMessage; + // iv1.ClearShape(); + // runcount = 0; + // runtest = true; + // Task.Run(() => + // { + // using (EImageBW8 img = new EImageBW8(this.img.Width, this.img.Height)) + // { + // img.SetImagePtr(this.img.Width, this.img.Height, this.img.MIplImage.ImageData); + // while (runtest) + // { + // Util_Vision.DetectQR(img, this.iv1, runcount++, + // out resultMessage, + // tbErode.Text, + // tbGainOff.Text, + // Pub.setting.blob_area_min, + // Pub.setting.blob_area_max, + // Pub.setting.blob_sigmaxy, + // Pub.setting.blob_sigmayy, + // Pub.setting.blob_sigmaxx, + // Pub.setting.blob_minw, + // Pub.setting.blob_maxw, + // Pub.setting.blob_minh, + // Pub.setting.blob_maxh, + // true); + // } + // } + + // }); + + // } + + //} + } +} diff --git a/QRValidation/Project/Dialog/fTeach.resx b/QRValidation/Project/Dialog/fTeach.resx new file mode 100644 index 0000000..375910e --- /dev/null +++ b/QRValidation/Project/Dialog/fTeach.resx @@ -0,0 +1,1890 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEfSURBVDhPYwCB/0QCsGJsACTZt3I3Bq6asAiM08o7iTPg + 0dsvcPzi4zcwBrFhBsAAVBsCgARhBvy/wfB/3s3//xfe+v9/ye3/cAOQXQIDcM2vL88GGwCycQFQ87I7 + //+vvf///8YH/8FiocmlKC55fcoCTKMYALIBpDhpuh4K3n75AYoBfz8fxWLAxR6wASDFMI2vjwRD8C4X + BN5sCcHrjdAMgClGwrgA2AXYDEAHv9+u/f/z5dL/35/N+//14RQ4/vXuEHYD/n69+P/3h80QDNSMbsCn + W61g/OPVTgIG4ND4/nIhGH97shqLAcAAAvkNl80wzQQNALkCjIFskF9BzgVhkCYYxu4F5KgCYVh0oWOg + RhhGMYBcADaAMsDAAAA9c9ORjmwOmQAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAALsSURBVDhPfZJtT1NnGIDPX9kf2AeT7cM++MlPy7JEh1Ni + wDljFIIowY03eRVXpRQq1ZQWaG1RhHaKsVCYqGgZQoWDZTARpUYEoXTWc0oLNbxde05lm0TcnVx57nNy + nut+zn0/kt0zYrBfl0MX3LJa07wNzq0YXbLacEOulf6JxltDC/Oh0EYsHie+lPhf3sQSLCiLmNseKZvb + JUmrvBiLc6ljBkNHgLLONhzDJlyjlbQEKrjo05Nhs5Lb1Ede0xP+WkxgdD9WN7dLUq04pmY3d86g6+rG + MWSi9Y9TNAwdxTx4mHp/JvqeM2RarlJon2BB3UawKASWrlnKvM1cE1Xr/Ue48DANvS8V3YP91PhyOFhX + TbFzkpC6LAQjWwWqEDR0v6bU4+CyXIyxPx3d/e8pv7eHkjt70N3NIt14nvIrz5hXlj4WKPEETb/NofN4 + MfnOUdt/mGzzOEW2cXLqA1RcecKxGpkMo8xP1gC5llF+1A/yWeqNL5OCt6K79p55TN5R8l12dLdOcMQw + zE05hhaegZnk+mE4esP8cN6PpM06IjrruBtKSuo8AX6uSOfALwPY7ivJj7NNw8lVi8QqRN9Bdfssh6oG + 3gveRBMUur4lr/UbTrV8jbXoC9LODYoqCitr66yubbC+vsGaYGVVe17nbGuQ70ofIBmcw2pECHxTvf/S + P9YufuERlu4wJVeDlLUEOd38nMLLkxQI8u1Pybc9Ja2yV5wgKVjeItA4pPdT1zlH+bVXgmmKm19Q5Jii + wP6cPNskudZx9pX0IF10y9MRJUpUNDIaf4eaJEFK+e+YvWHCsRhz0YhAYU5VeC3yyFKMgsY/2XXyJlJD + u1xl/XWkT5ut0fUfu0v7sHoVQrEwlb27xeU6gcWfI/IUFuKzFDUG+SrDxeZt+Dj2nnnI7RFtCkEG3uqY + iDuZWHaKvFq8e8lZZ5Cdme5PC3Ycvd2/v7KPY/oxTtZOk2WY4rj+GdlVE2TpZXYdd/P5wRb+BjBm1Kd4 + Pv2nAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKPSURBVDhPzZHdT1JxGMdPW1t32Xq5aK4/oP/BrZtuuuyi + dVGbXTRnm26la26pkZZetKWy1AxEPSZkEpu8iAjykiGIlAqIChIv53DO4QAesJHGaHyDE631H/jdnj0X + z+fz/H7bQ5ysJBKJhmR0d4HZXjlitpbBbpjAeg1gPVpwa/M/uaDbyTBMQw3/PxRFkWzYU0wFzBCCNvCb + RoRsSgRNk4hYJnG4Ngfh8zuw1okyH/Hratqf0DS9xAYcyAYs2FoioZ8ahJqUQzWrB6k0QE7qoFLI4VD0 + IGsehmCSIuO3+kU5Ho8PsDuryPoWYVe/wer6Dj44c5hx5KCwCBgxHmBAm0GfmofWnUPIPIPkx+fIa/tB + +d1TBL0XSDFeDXbWrSiVStB5DjFtz0FuFnDu0hXUXazHi7k0upSpSudFhvM7wag64ZO1l4h9l6acoiI4 + Pj4Wh2pnHmOmLKSGLOou1OPs+ct4MsOhXcGgu9KrTJXNRvz4MtgMIh4J/RIEAYVCAcViETZfvvJlHv1q + Dk9VDDqmkngop9E8msCEJSMyVbbqhDRDZYLesAl8fBf5fF4cRJLfIVvk0ElSlVcTaBmL4f7rKLqmKWzu + 50SmynJBL2KKx0UiFg6+Ta1pkK5c4YCNI5fLwRfmQS4l0DEexqOxEEbmY/Bsp0RR4FnwngVQo01wySQu + 8RJ7m24XvTyOrEOB1FeLkNn3sWmOimcymejfSqfTUcbnYjm9FImKbH7ZxoIgTokLqvF+MmlXlcOlb3N9 + 4A2vwFvk4BxKsHYlOCsJWjsEWtYCe++9smG0d90uuXa6pv6LUdp6RtffdFstaZydf9bIG3vu/DBJ7h7p + u28VNG03V5StN9reP7h+tYafiBDEbzX4GEGAI6bHAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAD7SURBVDhPY6AK+E8mgGqHGLDo7K//s0//+t915Of/il0/ + wDh98/f/UWu//Q9e9e2/59Kv/yPNJOEYwwCQ5qcf/8Hx5Rd/wXj5xV9gw0HYbv7R/xvLXLEbALIZpBFm + Iwj7roDY7LL463+HhV//W9UfAhuQZCWKaQDIySAbYZr9lkM0uy1BGGCROhW3ASD/7rj1G0Uzsu0EDQA5 + HeRfmLNhtsM0IxuANQxANoMCEt3Z2AwIMZbANACkERSQ2bu+g3Hqtm8YGOR0nAbYrn8LxjbrboKx1aqT + cAyKPsu5q8FOx2kAMQCnAcQAqhqAEQvEAJgBMEyWAeiAgYGBAQC5wBrpIuv80AAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + 123, 17 + + + + AAABAAYAAAAAAAEAIADXBQAAZgAAAICAAAABACAAKAgBAD0GAABAQAAAAQAgAChCAABlDgEAMDAAAAEA + IACoJQAAjVABACAgAAABACAAqBAAADV2AQAQEAAAAQAgAGgEAADdhgEAiVBORw0KGgoAAAANSUhEUgAA + AQAAAAEACAYAAABccqhmAAAFnklEQVR42u3cv45UZRzH4d8ZRnZd/olsVkOCiIYEiBVgQYGFDQ02tvR6 + C8QroOAGtNd7oLGQggQFGwVMDARUjOskgisrrruzFlrJWZPDDnPA7/OU+5v3vO+ZPfmEgTBVAAAAAAAA + AAAAAADAs6Tp+wCnzl061nHJ8oWzJ6533GO+qva3zS6cPXGl47XmqurwVN+kJ6jv+5/S/qMLZ0/c7rjP + /qqabxn1+vxN2rDPzf/xRcfXX6mq4x3XvFtVH24w6xrBw49x5qdZ3/c/jf0/qqr3O675oKrea/l538/f + RA363BzolwBAMAGAYAIAwQQAggkABBMACCYAEEwAIJgAQDABgGACAMEEAIIJAAQTAAgmABBMACCYAEAw + AYBgAgDBBACCCQAEEwAIJgAQTAAgmABAMAGAYAIAwQQAggkABBMACCYAEEwAIJgAQDABgGACAMEEAIIJ + AAQTAAgmABBMACCYAEAwAYBgAgDBBACCCQAEEwAIJgAQTAAgmABAMAGAYAIAwQQAggkABBMACCYAEEwA + IJgAQDABgGACAMEEAIIJAAQTAAgmABBMACCYAEAwAYBgAgDBBACCNafPX/6kbbC2Nn5pvL6+awpnONbx + 9ctVdb3jmvmq2r/B7ErHa81V1eEpvC/T0vf9T2P/UVXd7rhmf/393Pxb389fZ4OmuTfcMvipbdacPn/5 + y7bB2tp433h9fc+TPhzwZA2aZjTcMviuddb34YD+CAAEEwAIJgAQbDget/9F38G9O2YWds32fT5gkxbv + P5z99sff2v5Fo4Zr4/G+tsHx1/fUySMLfZ8d2KSL1xa3f/PDr9vbZj4CQDABgGACAMEEAIIJAAQTAAgm + ABBMACCYAEAwAYBgAgDBhpO82Gi56s9xtzWfXr3V6fU75mbqzUN7O625O1qqG3dGrbO3jx7odK2l5T/q + 8xt3N/9mPSX6vv9p7L93fkcdemW+05obd0Z1d7T0yM/7fv6eG1TNz3Va8p8mGoCllaqHq93WXLy22On1 + C7u31cFXu/0Cbi7+vuE+R490+wUs3l/tfOanWd/3P43933it6uWFbgH4+vul+urmo/v0/fzNDicbAB8B + IJgAQDABgGACAMEEAIIJAAQTAAgmABBMACCYAEAwAYBgAgDBBACCCQAEEwAIJgAQTAAgmABAMAGAYAIA + wQQAggkABBMACCYAEEwAIJgAQDABgGACAMEEAIIJAAQTAAgmABBMACCYAEAwAYBgAgDBBACCCQAEEwAI + JgAQTAAgmABAMAGAYAIAwQQAggkABBMACCYAEEwAIJgAQDABgGACAMEEAIIJAAQTAAgmABBMACCYAEAw + AYBgAgDBBACCCQAEEwAIJgAQTAAgmABAMAGAYAIAwQQAggkABBMACCYAEEwAIJgAQDABgGACAMEEAIIJ + AAQTAAgmABBMACCYAEAwAYBgAgDBBACCCQAEEwAIJgAQTAAgmABAMAGAYAIAwQQAggkABBMACCYAEEwA + IJgAQDABgGACAMGGfR9gYfe2Tq9/ccfznfeYnRl23mcjw+FgYtd6FvV9/4+z/865mc777Jybad2n7+dv + 0ppT5y6ttw3OvHWgTh5Z6HSxW/eqHq72fUvw/zU7rDrwQrc1F68t1sef3Wqd+QgAwQQAggkABBMACCYA + EEwAIJgAQDABgGACAMEEAIIJAAQTAAgmABBMACCYAEAwAYBgAgDBBACCTfQ7Abt+VRHQL38CgGACAMEE + AIIJAAQTAAgmABBMACCYAEAwAYBgAgDBBACCDZumWW4b/PJgZeudnx9M9P8KANN378HKatM0K22z5p3z + l6+2DVbXxvvG6+vzfR8e2JxB04yGg8Gd1lnfhwP6IwAQTAAgmABAMAGAYMOqOrPBbGtN+CvDgF6sVtXK + pq8CAAAAAAAAAAAAAAD07i/pV9fEC9LZ4gAAAABJRU5ErkJggigAAACAAAAAAAEAAAEAIAAAAAAAAAAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKjE18yoxNfMqMTXzIiUiTx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZyIlIk8qLTXvKi017yotN + e8qMTc7KjE3OyoxNzsiJSPXHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//IiUj1yotNzcqLTc3Ki03NyoxNzsqMTc7KjE3OyIlI9ceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8iJSPXKi03NyotN + zcqLTc3JikriyYpK4smKSuLZqnn53bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/2ap5+cmKSuHJikrhyYpK4ceIR//HiEf/x4hH//Pbwf/+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//z28H/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N//89vB + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf + //7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf + //7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf + //7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf + //7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf + //7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf + //7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf + //7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP + //7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf + //7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/ouor/6LqK/+i6iv/ouor/6LqK + /+i6iv/1z6T//ty2//7ctv/+3Lb//ty2//7ctv/61a3/6LqK/+i6iv/ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/8cib/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK + /+i6iv/ouor/6LqK/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK/+i6iv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/xyJv/6LqK/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK/+i6iv/ouor//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/8cib/+i6iv/ouor/6LqK/+i6iv/ouor/7MGS//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/+zBkv/ouor/6LqK//XPpP/+3Lb//ty2//7ctv/+3Lb//ty2//rVrf/ouor/6LqK + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2 + //PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK + //7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf + //7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB + //7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf + //Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2 + //7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2 + //PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf + //7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2 + //7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf + //7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf + //7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2 + //7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2 + //7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf + //7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf + //7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK + //7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2 + //7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf + //7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf + //7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2 + //7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP + //7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf + //7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2 + //PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK + //7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf + //7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB + //7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf + //Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2 + //7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2 + //PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf + //7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2 + //7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf + //7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf + //7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2 + //7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2 + //7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf + //7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf + //7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK + //7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2 + //7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf + //7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf + //7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2 + //7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP + //7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf + //7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2 + //PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK + //7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf + //7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB + //7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf + //Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2 + //7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2 + //PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf + //7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2 + //7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf + //7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf + //7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2 + //7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2 + //7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf + //7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf + //7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK + //7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2 + //7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf + //7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf + //7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2 + //7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP + //7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf + //7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2 + //PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK + //7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf + //7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB + //7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf + //Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2 + //7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //Pbwf/+8N///vDf//7w3//+8N///vDf//7q0v/+4L7//uC+//7gvv/+4L7//uC+//7gvv/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/sxZv//uC+//7gvv/+4L7//uC+//7gvv/106z/0p1l/9KdZf/SnWX//uC+ + //7gvv/+4L7//uC+//7gvv/+4L7/5LiJ/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/+4L7//uC+//7gvv/+4L7//uC+//7gvv/kuIn/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX//uC+//7gvv/+4L7//uC+//7gvv/+4L7/5LiJ/9KdZf/SnWX/0p1l/9KdZf/SnWX/26p3 + //7gvv/+4L7//uC+//7gvv/+4L7//uC+/9uqd//SnWX/0p1l/+zFm//+4L7//uC+//7gvv/+4L7//uC+ + //XTrP/SnWX/0p1l/9KdZf/+4L7//uC+//7gvv/+4L7//uC+//7gvv/+6tL//vDf//7w3//+8N///vDf + //7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/yYtL2cmLS9nJi0vZ0Jph99KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9CaYffJi0zYyYtM + 2MmLTNjKjEzPyoxMz8qMTM/IiUj1x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/yIlI9cqMTc7KjE3OyoxNzsqMTM/KjEzPyoxMz8iJSPXHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//IiUj1yoxN + zsqMTc7KjE3OyoxMU8qMTFPKjExTyIlIYseIR2bHiEdmx4hHZseIR2bHiEdmx4hHZseIR2bHiEdmx4hH + ZseIR2bHiEdmx4hHZseIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR6PHiEdmx4hHZseIR2bHiEdmx4hH + ZseIR4XHiEf/x4hH/8eIR//HiEdmx4hHZseIR2bHiEdmx4hHZseIR2bHiEfCx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2bHiEdmx4hHZseIR2bHiEdmx4hHZseIR8LHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmx4hHZseIR2bHiEdmx4hHZseIR2bHiEfCx4hH + /8eIR//HiEf/x4hH/8eIR//HiEfgx4hHZseIR2bHiEdmx4hHZseIR2bHiEdmx4hH4MeIR//HiEf/x4hH + o8eIR2bHiEdmx4hHZseIR2bHiEdmx4hHhceIR//HiEf/x4hH/8eIR2bHiEdmx4hHZseIR2bHiEdmx4hH + ZseIR2bHiEdmx4hHZseIR2bHiEdmx4hHZsiJSGLKjE1SyoxNUsqMTVIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH + /8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEfMAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + M8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hHZgAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH + /8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2YAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + zMeIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH + /8eIR//HiEfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + ZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEfMAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + M8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hHzAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + /8eIR//HiEf/x4hH/8eIR//HiEfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH + ZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH + /8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEfMAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + M8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hHZgAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH + /8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2YAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + zMeIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH + /8eIR//HiEfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + ZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEfMAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + M8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hHzAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + /8eIR//HiEf/x4hH/8eIR//HiEfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH + ZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH + /8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEfMAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + M8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hHZgAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH + /8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEc9AAAAAAAAAAAAAAAAAAAAAAAAAADHiEcfx4hHmceIR5nHiEeZAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHXMeIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEdcx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHXMeIR5nHiEeZx4hHmceIR5nHiEeZx4hH + egAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR3rHiEeZx4hHmceIRz0AAAAAAAAAAAAAAAAAAAAAAAAA + AMeIRx/HiEeZx4hHmceIR5kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8B8HwAAAB8AHwH4fB/ + ////AfB8AAAAfAB8B+Hwf////wHwfAAAAHwAfAfh8H////8B8HwAAAB8AHwH4fB/////AfB8AAAAfAB8 + B+Hwf////wHwfAAAAHwAfAfh8H////8B8HwAAAB8AHwH4fB/////AfB8AAAAfAB8B+Hwf////wHwfAAA + AHwAfAfh8H////8B8HwAAAB8AHwH4fB/////AfB8AAAAfAB8B+Hwf////wHwfAAAAHwAfAfh8H////8B + 8HwAAAB8AHwH4fB/////AfB8AAAAfAB8B+Hwf////wHwfAAAAHwAfAfh8H////8B8HwAAAB8AHwH4fB/ + ////AfB8AAAAfAB8B+Hwf////wHwfAAAAHwAfAfh8H////8B8HwAAAB8AHwH4fB/////AfB8AAAAfAB8 + B+Hwf////wHwfAAAAHwAfAfh8H////8B8HwAAAB8AHwH4fB/////AfB8AAAAfAB8B+Hwf////wHwfAAA + AHwAfAfh8H////8B8HwAAAB8AHwH4fB/////AfB8AAAAfAB8B+Hwf////wHwfAAAAHwAfAfh8H////8B + 8HwAAAB8AHwH4fB/////AfB8AAAAfAB8B+Hwf////wHwfAAAAHwAfAfh8H////8B8HwAAAB8AHwH4fB/ + ////AfB8AAAAfAB8B+Hwf////wHwfAAAAHwAfAfh8H////8B8HwAAAB8AHwH4fB/////AfB8AAAAfAB8 + B+Hwf/////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////8oAAAAQAAAAIAAAAABACAAAAAA + AABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAyoxNpcmKSrTHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hH + zMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hH + zMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hH + zMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hH + zMeIR8zHiEfMx4hHzMeIR8zJikq0yotNpMmLTNjNk1fn0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/zZJX58mKTNfHiEf/3bKE//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf/92yhP/HiEf/x4hH + /92yhP/+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//dsoT/x4hH/8eIR//dsoT//vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N//3bKE/8eIR//HiEf/3bKE//7w3//+8N///uzX//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7s1//+8N///vDf/92yhP/HiEf/x4hH/92yhP/+8N///vDf + //7s1//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+7Nf//vDf//7w3//dsoT/x4hH + /8eIR//dsoT//vDf//7w3//+7Nf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//uzX + //7w3//+8N//3bKE/8eIR//HiEf/3bKE//7w3//+8N///uzX//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7s1//+8N///vDf/92yhP/HiEf/x4hH/92yhP/+8N///vDf//7s1//+3Lb//ty2 + //7ctv/zy6D/88ug//PLoP/82bL//ty2//7ctv/30qn/88ug//7ctv/+3Lb//ty2//XPpP/zy6D/88ug + //PLoP/zy6D/88ug//PLoP/zy6D/88ug//PLoP/zy6D/88ug//PLoP/+3Lb//ty2//7ctv/1z6T/88ug + //PLoP/zy6D/88ug//7ctv/+3Lb//ty2//XPpP/zy6D/88ug//rVrf/+3Lb//ty2//rVrf/zy6D//Nmy + //7ctv/+3Lb/99Kp//PLoP/+3Lb//ty2//7ctv/+7Nf//vDf//7w3//dsoT/x4hH/8eIR//dsoT//vDf + //7w3//+7Nf//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2 + //7ctv/ouor/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb//uzX//7w3//+8N//3bKE + /8eIR//HiEf/3bKE//7w3//+8N///uzX//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH//PLoP/+3Lb//ty2 + /92qc//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/6LqK//7ctv/+3Lb/6LqK/8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2 + //7s1//+8N///vDf/92yhP/HiEf/x4hH/92yhP/+8N///vDf//7s1//+3Lb//ty2//7ctv/HiEf/x4hH + /8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2/+i6iv/HiEf/88ug//7ctv/+3Lb/3apz + /8eIR//+3Lb//ty2//7ctv/+7Nf//vDf//7w3//dsoT/x4hH/8eIR//dsoT//vDf//7w3//+7Nf//ty2 + //7ctv/+3Lb/x4hH/8eIR//HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/ouor/x4hH + //PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb//uzX//7w3//+8N//3bKE/8eIR//HiEf/3bKE + //7w3//+8N///uzX//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK + //7ctv/+3Lb/6LqK/8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2//7s1//+8N///vDf + /92yhP/HiEf/x4hH/92yhP/+8N///vDf//7s1//+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//zy6D//ty2 + //7ctv/dqnP/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2/+i6iv/HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2 + //7ctv/+7Nf//vDf//7w3//dsoT/x4hH/8eIR//dsoT//vDf//7w3//+7Nf//ty2//7ctv/+3Lb/x4hH + /8eIR//HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/ouor/x4hH//PLoP/+3Lb//ty2 + /92qc//HiEf//ty2//7ctv/+3Lb//uzX//7w3//+8N//3bKE/8eIR//HiEf/3bKE//7w3//+8N///uzX + //7ctv/+3Lb//ty2/8eIR//HiEf/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb/6LqK + /8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2//7s1//+8N///vDf/92yhP/HiEf/x4hH + /92yhP/+8N///vDf//7s1//+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//zy6D//ty2//7ctv/dqnP/x4hH + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /+i6iv/+3Lb//ty2/+i6iv/HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/+7Nf//vDf + //7w3//dsoT/x4hH/8eIR//dsoT//vDf//7w3//+7Nf//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/88ug + //7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/ouor/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2 + //7ctv/+3Lb//uzX//7w3//+8N//3bKE/8eIR//HiEf/3bKE//7w3//+8N///uzX//7ctv/+3Lb//ty2 + /8eIR//HiEf/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb/6LqK/8eIR//zy6D//ty2 + //7ctv/dqnP/x4hH//7ctv/+3Lb//ty2//7s1//+8N///vDf/92yhP/HiEf/x4hH/92yhP/+8N///vDf + //7s1//+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2 + /+i6iv/HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/+7Nf//vDf//7w3//dsoT/x4hH + /8eIR//dsoT//vDf//7w3//+7Nf//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/88ug//7ctv/+3Lb/3apz + /8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//ouor//ty2//7ctv/ouor/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb//uzX + //7w3//+8N//3bKE/8eIR//HiEf/3bKE//7w3//+8N///uzX//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH + //PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb/6LqK/8eIR//zy6D//ty2//7ctv/dqnP/x4hH + //7ctv/+3Lb//ty2//7s1//+8N///vDf/92yhP/HiEf/x4hH/92yhP/+8N///vDf//7s1//+3Lb//ty2 + //7ctv/HiEf/x4hH/8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2/+i6iv/HiEf/88ug + //7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/+7Nf//vDf//7w3//dsoT/x4hH/8eIR//dsoT//vDf + //7w3//+7Nf//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2 + //7ctv/ouor/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb//uzX//7w3//+8N//3bKE + /8eIR//HiEf/3bKE//7w3//+8N///uzX//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH//PLoP/+3Lb//ty2 + /92qc//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/6LqK//7ctv/+3Lb/6LqK/8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2 + //7s1//+8N///vDf/92yhP/HiEf/x4hH/92yhP/+8N///vDf//7s1//+3Lb//ty2//7ctv/HiEf/x4hH + /8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2/+i6iv/HiEf/88ug//7ctv/+3Lb/3apz + /8eIR//+3Lb//ty2//7ctv/+7Nf//vDf//7w3//dsoT/x4hH/8eIR//dsoT//vDf//7w3//+7Nf//ty2 + //7ctv/+3Lb/x4hH/8eIR//HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/ouor/x4hH + //PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb//uzX//7w3//+8N//3bKE/8eIR//HiEf/3bKE + //7w3//+8N///uzX//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK + //7ctv/+3Lb/6LqK/8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2//7s1//+8N///vDf + /92yhP/HiEf/x4hH/92yhP/+8N///vDf//7s1//+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//zy6D//ty2 + //7ctv/dqnP/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2/+i6iv/HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2 + //7ctv/+7Nf//vDf//7w3//dsoT/x4hH/8eIR//dsoT//vDf//7w3//+7Nf//ty2//7ctv/+3Lb/x4hH + /8eIR//HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/ouor/x4hH//PLoP/+3Lb//ty2 + /92qc//HiEf//ty2//7ctv/+3Lb//uzX//7w3//+8N//3bKE/8eIR//HiEf/3bKE//7w3//+8N///uzX + //7ctv/+3Lb//ty2/8eIR//HiEf/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb/6LqK + /8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2//7s1//+8N///vDf/92yhP/HiEf/x4hH + /92yhP/+8N///vDf//7s1//+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//zy6D//ty2//7ctv/dqnP/x4hH + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /+i6iv/+3Lb//ty2/+i6iv/HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/+7Nf//vDf + //7w3//dsoT/x4hH/8eIR//dsoT//vDf//7w3//+7Nf//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/88ug + //7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/ouor/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2 + //7ctv/+3Lb//uzX//7w3//+8N//3bKE/8eIR//HiEf/3bKE//7w3//+8N///u7c//7oz//+6M///ujP + /+jGov/oxqL/6Mai//rhxv/+6M///ujP//HUtP/oxqL//ujP//7oz//+6M//7M2r/+jGov/oxqL/6Mai + /+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai//7oz//+6M///ujP/+zNq//oxqL/6Mai + /+jGov/oxqL//ujP//7oz//+6M//7M2r/+jGov/oxqL/9du9//7oz//+6M//9du9/+jGov/64cb//ujP + //7oz//x1LT/6Mai//7oz//+6M///ujP//7u3P/+8N///vDf/92yhP/HiEf/x4hH/92yhP/+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//dsoT/x4hH + /8eIR//dsoT//vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N//3bKE/8eIR//IiUns1aNu8+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai + /+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai + /+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai + /+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai + /+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/9WjbvPIiUnryoxMz8mKSuLHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//JikriyoxNzsqMTCnJikotx4hH + M8eIRzPHiEczx4hHM8eIRzPHiEczx4hH/8eIR//HiEf/x4hHXMeIRzPHiEczx4hHrceIR//HiEczx4hH + M8eIRzPHiEfWx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + M8eIRzPHiEczx4hH1seIR//HiEf/x4hH/8eIR//HiEczx4hHM8eIRzPHiEfWx4hH/8eIR//HiEeFx4hH + M8eIRzPHiEeFx4hH/8eIR1zHiEczx4hHM8eIR63HiEf/x4hHM8eIRzPHiEczx4hHM8eIRzPHiEczyYpK + LcqMTSkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIRzMAAAAAAAAA + AMeIR5nHiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAx4hH + zMeIR//HiEf/x4hHZgAAAAAAAAAAx4hHZseIR//HiEczAAAAAAAAAADHiEeZx4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH + /8eIR//HiEczAAAAAAAAAADHiEeZx4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAMeIR2bHiEf/x4hHMwAAAAAAAAAAx4hH + mceIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hH/8eIR//HiEf/x4hHMwAAAAAAAAAAx4hHmceIR/8AAAAAAAAAAAAAAADHiEfMx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAx4hH + zMeIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAADHiEdmx4hH + /8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAA + AAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH + ZgAAAAAAAAAAx4hHZseIR//HiEczAAAAAAAAAADHiEeZx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEczAAAA + AAAAAADHiEeZx4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAMeIR2bHiEf/x4hHMwAAAAAAAAAAx4hHmceIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + /8eIR//HiEf/x4hHMwAAAAAAAAAAx4hHmceIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAADHiEdmx4hH/8eIRzMAAAAAAAAA + AMeIR5nHiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAAAAAAAAAAAAAAx4hH + zMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AMeIR8zHiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAx4hH + ZseIR//HiEczAAAAAAAAAADHiEeZx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEczAAAAAAAAAADHiEeZx4hH + /wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH + /8eIR2YAAAAAAAAAAMeIR2bHiEf/x4hHMwAAAAAAAAAAx4hHmceIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH + MwAAAAAAAAAAx4hHmceIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAADHiEdmx4hH/8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR//HiEf/x4hH/8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAx4hHZseIR//HiEczAAAA + AAAAAADHiEeZx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEczAAAAAAAAAADHiEeZx4hH/wAAAAAAAAAAAAAA + AMeIR8zHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAADHiEfMx4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAA + AMeIR2bHiEf/x4hHMwAAAAAAAAAAx4hHmceIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hHMwAAAAAAAAAAx4hH + mceIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH + /8eIR//HiEdmAAAAAAAAAADHiEdmx4hH/8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH + /8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAx4hHZseIR//HiEczAAAAAAAAAADHiEeZx4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEf/x4hH/8eIR//HiEczAAAAAAAAAADHiEeZx4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAMeIR2bHiEf/x4hH + MwAAAAAAAAAAx4hHmceIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hHMwAAAAAAAAAAx4hHmceIR/8AAAAAAAAA + AAAAAADHiEfMx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAA + AAAAAADHiEdmx4hH/8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIRzMAAAAAAAAA + AMeIR5nHiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAx4hH + zMeIR//HiEf/x4hHZgAAAAAAAAAAx4hHZseIR//HiEczAAAAAAAAAADHiEeZx4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH + zMeIR8zHiEcpAAAAAAAAAADHiEd6x4hHzAAAAAAAAAAAAAAAAMeIR6PHiEfMx4hHzMeIR8zHiEfMx4hH + zMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8wAAAAAAAAAAAAAAADHiEejx4hHzMeIR8zHiEfMx4hH + zAAAAAAAAAAAAAAAAMeIR6PHiEfMx4hHzMeIR1IAAAAAAAAAAMeIR1LHiEfMx4hHKQAAAAAAAAAAx4hH + eseIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////////////////////wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD/DGAAYGGMf/8MYABgYYx//wxgAGBhjH//DGAAYGGMf/8MYABgYYx//wxg + AGBhjH//DGAAYGGMf/8MYABgYYx//wxgAGBhjH//DGAAYGGMf/8MYABgYYx//wxgAGBhjH//DGAAYGGM + f/8MYABgYYx//wxgAGBhjH//DGAAYGGMf/8MYABgYYx/////////////////////////////////KAAA + ADAAAABgAAAAAQAgAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMqMTXzIiUiTx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nIiUiTyotNe8mKSuLZqnn53bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/Zqnn5yYpK4ceIR//z28H//vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//z28H//vDf + //7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//z28H/x4hH + /8eIR//z28H//vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP + //7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2/+i6iv/ouor/9c+k + //7ctv/61a3/6LqK//7ctv/+3Lb/8cib/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK + //7ctv/+3Lb/8cib/+i6iv/ouor/6LqK//7ctv/+3Lb/8cib/+i6iv/swZL//ty2//7ctv/swZL/9c+k + //7ctv/61a3/6LqK//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2 + /8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2 + //7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf + //7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz + /8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH + /8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + //7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP + //7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH + //7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK + //7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK + //7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2 + /8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2 + //7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf + //7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz + /8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH + /8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + //7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP + //7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH + //7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK + //7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK + //7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2 + /8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2 + //7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf + //7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz + /8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH + /8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + //7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP + //7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH + //7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK + //7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK + //7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2 + /8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2 + //7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf + //7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz + /8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH + /8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + //7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP + //7w3//z28H/x4hH/8eIR//z28H//vDf//7q0v/+4L7//uC+/9KdZf/SnWX/7MWb//7gvv/106z/0p1l + //7gvv/+4L7/5LiJ/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l//7gvv/+4L7/5LiJ + /9KdZf/SnWX/0p1l//7gvv/+4L7/5LiJ/9KdZf/bqnf//uC+//7gvv/bqnf/7MWb//7gvv/106z/0p1l + //7gvv/+4L7//urS//7w3//z28H/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8mLS9nQmmH30p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/QmmH3yYtM + 2MqMTFPIiUhix4hHZseIR2bHiEdmx4hHZseIR//HiEf/x4hHo8eIR2bHiEeFx4hH/8eIR2bHiEdmx4hH + wseIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2bHiEdmx4hHwseIR//HiEf/x4hH + /8eIR2bHiEdmx4hHwseIR//HiEfgx4hHZseIR2bHiEfgx4hHo8eIR2bHiEeFx4hH/8eIR2bHiEdmx4hH + ZseIR2bIiUhiyoxNUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hHZgAAAADHiEczx4hH + /wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hHZgAAAADHiEczx4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH + ZgAAAADHiEczx4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hH + ZgAAAADHiEczx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR//HiEf/x4hHZgAAAADHiEczx4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAA + AAAAAADHiEfMx4hHZgAAAADHiEczx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR//HiEf/x4hHZgAAAADHiEczx4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/wAAAAAAAAAAx4hH + mceIR//HiEfMAAAAAAAAAADHiEfMx4hHZgAAAADHiEczx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hHZgAAAADHiEczx4hH/wAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hHZgAAAADHiEczx4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hHZgAAAADHiEczx4hH + /wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hHZgAAAADHiEczx4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH + ZgAAAADHiEczx4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hH + ZgAAAADHiEczx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR//HiEf/x4hHZgAAAADHiEczx4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAA + AAAAAADHiEfMx4hHZgAAAADHiEczx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR//HiEf/x4hHZgAAAADHiEczx4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/wAAAAAAAAAAx4hH + mceIR//HiEfMAAAAAAAAAADHiEfMx4hHZgAAAADHiEczx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hHZgAAAADHiEczx4hH/wAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hHZgAAAADHiEczx4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hHZgAAAADHiEczx4hH + /wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hHZgAAAADHiEczx4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH + ZgAAAADHiEczx4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hH + ZgAAAADHiEczx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEeZx4hHPQAAAADHiEcfx4hHmQAAAAAAAAAAx4hHXMeIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmQAAAAAAAAAAx4hHXMeIR5nHiEeZx4hHmQAAAAAAAAAAx4hHXMeIR5nHiEd6AAAA + AAAAAADHiEd6x4hHPQAAAADHiEcfx4hHmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP///////wAA////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPxEAEEZHwAA/EQAQRkfAAD8RABBGR8A + APxEAEEZHwAA/EQAQRkfAAD8RABBGR8AAPxEAEEZHwAA/EQAQRkfAAD8RABBGR8AAPxEAEEZHwAA/EQA + QRkfAAD8RABBGR8AAPxEAEEZHwAA////////AAD///////8AACgAAAAgAAAAQAAAAAEAIAAAAAAAABAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMmLTFbHiEdmx4hHZseIR2bHiEdmx4hHZseIR2bHiEdmx4hH + ZseIR2bHiEdmx4hHZseIR2bHiEdmx4hHZseIR2bHiEdmx4hHZseIR2bHiEdmx4hHZseIR2bHiEdmx4hH + ZseIR2bHiEdmx4hHZseIR2bHiEdmx4hHZseIR2bJikxWz5Zc7+jGov/oxqL/6Mai/+jGov/oxqL/6Mai + /+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai + /+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/8+WXO/SnWX//vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N//0p1l/9KdZf/+8N///uTG + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//uTG//7w3//SnWX/0p1l + //7w3//+5Mb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+5Mb//vDf + /9KdZf/SnWX//vDf//7kxv/+3Lb/3apz/+q+jv/+3Lb/5LSB//7ctv/xyJv/3apz/92qc//dqnP/3apz + /92qc//dqnP//ty2//HIm//dqnP/3apz//7ctv/xyJv/3apz//fSqf/30qn/6r6O//7ctv/ktIH//ty2 + //7kxv/+8N//0p1l/9KdZf/+8N///uTG//7ctv/HiEf/3apz//7ctv/SmV3//ty2/+i6iv/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb/6LqK/8eIR//HiEf//ty2/+i6iv/HiEf/88ug//PLoP/dqnP//ty2 + /9KZXf/+3Lb//uTG//7w3//SnWX/0p1l//7w3//+5Mb//ty2/8eIR//dqnP//ty2/9KZXf/+3Lb/6LqK + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/ouor/x4hH/8eIR//+3Lb/6LqK/8eIR//zy6D/88ug + /92qc//+3Lb/0pld//7ctv/+5Mb//vDf/9KdZf/SnWX//vDf//7kxv/+3Lb/x4hH/92qc//+3Lb/0pld + //7ctv/ouor/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2/+i6iv/HiEf/x4hH//7ctv/ouor/x4hH + //PLoP/zy6D/3apz//7ctv/SmV3//ty2//7kxv/+8N//0p1l/9KdZf/+8N///uTG//7ctv/HiEf/3apz + //7ctv/SmV3//ty2/+i6iv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb/6LqK/8eIR//HiEf//ty2 + /+i6iv/HiEf/88ug//PLoP/dqnP//ty2/9KZXf/+3Lb//uTG//7w3//SnWX/0p1l//7w3//+5Mb//ty2 + /8eIR//dqnP//ty2/9KZXf/+3Lb/6LqK/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/ouor/x4hH + /8eIR//+3Lb/6LqK/8eIR//zy6D/88ug/92qc//+3Lb/0pld//7ctv/+5Mb//vDf/9KdZf/SnWX//vDf + //7kxv/+3Lb/x4hH/92qc//+3Lb/0pld//7ctv/ouor/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + /+i6iv/HiEf/x4hH//7ctv/ouor/x4hH//PLoP/zy6D/3apz//7ctv/SmV3//ty2//7kxv/+8N//0p1l + /9KdZf/+8N///uTG//7ctv/HiEf/3apz//7ctv/SmV3//ty2/+i6iv/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb/6LqK/8eIR//HiEf//ty2/+i6iv/HiEf/88ug//PLoP/dqnP//ty2/9KZXf/+3Lb//uTG + //7w3//SnWX/0p1l//7w3//+5Mb//ty2/8eIR//dqnP//ty2/9KZXf/+3Lb/6LqK/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/ouor/x4hH/8eIR//+3Lb/6LqK/8eIR//zy6D/88ug/92qc//+3Lb/0pld + //7ctv/+5Mb//vDf/9KdZf/SnWX//vDf//7kxv/+3Lb/x4hH/92qc//+3Lb/0pld//7ctv/ouor/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2/+i6iv/HiEf/x4hH//7ctv/ouor/x4hH//PLoP/zy6D/3apz + //7ctv/SmV3//ty2//7kxv/+8N//0p1l/9KdZf/+8N///uTG//7ctv/HiEf/3apz//7ctv/SmV3//ty2 + /+i6iv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb/6LqK/8eIR//HiEf//ty2/+i6iv/HiEf/88ug + //PLoP/dqnP//ty2/9KZXf/+3Lb//uTG//7w3//SnWX/0p1l//7w3//+5Mb//ty2/8eIR//dqnP//ty2 + /9KZXf/+3Lb/6LqK/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/ouor/x4hH/8eIR//+3Lb/6LqK + /8eIR//zy6D/88ug/92qc//+3Lb/0pld//7ctv/+5Mb//vDf/9KdZf/SnWX//vDf//7kxv/+3Lb/x4hH + /92qc//+3Lb/0pld//7ctv/ouor/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2/+i6iv/HiEf/x4hH + //7ctv/ouor/x4hH//PLoP/zy6D/3apz//7ctv/SmV3//ty2//7kxv/+8N//0p1l/9KdZf/+8N///u7a + //7s1//z28H/9+LJ//7s1//138X//uzX//rlzv/z28H/89vB//Pbwf/z28H/89vB//Pbwf/+7Nf/+uXO + //Pbwf/z28H//uzX//rlzv/z28H//OnS//zp0v/34sn//uzX//Xfxf/+7Nf//u7a//7w3//SnWX/0Jph + 9/Pbwf/z28H/89vB//Pbwf/z28H/89vB//Pbwf/z28H/89vB//Pbwf/z28H/89vB//Pbwf/z28H/89vB + //Pbwf/z28H/89vB//Pbwf/z28H/89vB//Pbwf/z28H/89vB//Pbwf/z28H/89vB//Pbwf/z28H/89vB + /9CaYffJi0uCx4hHmceIR5nHiEeZx4hH/8eIR9bHiEeZx4hH68eIR5nHiEfCx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hHmceIR8LHiEf/x4hH/8eIR5nHiEfCx4hH/8eIR63HiEetx4hH1seIR5nHiEfrx4hH + mceIR5nHiEeZyYtMgQAAAAAAAAAAAAAAAAAAAADHiEf/x4hHmQAAAADHiEfMAAAAAMeIR2bHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR/8AAAAAx4hHZseIR//HiEf/AAAAAMeIR2bHiEf/x4hHM8eIRzPHiEeZAAAA + AMeIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEeZAAAAAMeIR8wAAAAAx4hH + ZseIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAADHiEdmx4hH/8eIR/8AAAAAx4hHZseIR//HiEczx4hH + M8eIR5kAAAAAx4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR5kAAAAAx4hH + zAAAAADHiEdmx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAMeIR2bHiEf/x4hH/wAAAADHiEdmx4hH + /8eIRzPHiEczx4hHmQAAAADHiEfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH + mQAAAADHiEfMAAAAAMeIR2bHiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAx4hHZseIR//HiEf/AAAA + AMeIR2bHiEf/x4hHM8eIRzPHiEeZAAAAAMeIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR//HiEeZAAAAAMeIR8wAAAAAx4hHZseIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAADHiEdmx4hH + /8eIR/8AAAAAx4hHZseIR//HiEczx4hHM8eIR5kAAAAAx4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hH/8eIR5kAAAAAx4hHzAAAAADHiEdmx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAA + AMeIR2bHiEf/x4hH/wAAAADHiEdmx4hH/8eIRzPHiEczx4hHmQAAAADHiEfMAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEf/x4hHmQAAAADHiEfMAAAAAMeIR2bHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR/8AAAAAx4hHZseIR//HiEf/AAAAAMeIR2bHiEf/x4hHM8eIRzPHiEeZAAAAAMeIR8wAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEeZAAAAAMeIR8wAAAAAx4hHZseIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAADHiEdmx4hH/8eIR/8AAAAAx4hHZseIR//HiEczx4hHM8eIR5kAAAAAx4hH + zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHZseIRz0AAAAAx4hHUgAAAADHiEcpx4hH + ZseIR2bHiEdmx4hHZseIR2bHiEdmAAAAAMeIRynHiEdmx4hHZgAAAADHiEcpx4hHZseIRxTHiEcUx4hH + PQAAAADHiEdSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + APIAACfyAAAn8gAAJ/IAACfyAAAn8gAAJ/IAACfyAAAn8gAAJ/////8oAAAAEAAAACAAAAABACAAAAAA + AAAEAAAAAAAAAAAAAAAAAAAAAAAAyIlJL8eIRzPHiEczx4hHM8eIRzPHiEczx4hHM8eIRzPHiEczx4hH + M8eIRzPHiEczx4hHM8eIRzPHiEczyIlJL+K7kfvz28H/89vB//Pbwf/z28H/89vB//Pbwf/z28H/89vB + //Pbwf/z28H/89vB//Pbwf/z28H/89vB/+K7kvvoxqL//uC+//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7gvv/oxqL/6Mai//7gvv/bpm//7MGS//XPpP/SmV3/0pld + /9KZXf/1z6T/0pld//XPpP/ktIH/7MGS/+zBkv/+4L7/6Mai/+jGov/+4L7/0pld/+i6iv/zy6D/x4hH + /8eIR//HiEf/88ug/8eIR//zy6D/3apz/+i6iv/ouor//uC+/+jGov/oxqL//uC+/9KZXf/ouor/88ug + /8eIR//HiEf/x4hH//PLoP/HiEf/88ug/92qc//ouor/6LqK//7gvv/oxqL/6Mai//7gvv/SmV3/6LqK + //PLoP/HiEf/x4hH/8eIR//zy6D/x4hH//PLoP/dqnP/6LqK/+i6iv/+4L7/6Mai/+jGov/+4L7/0pld + /+i6iv/zy6D/x4hH/8eIR//HiEf/88ug/8eIR//zy6D/3apz/+i6iv/ouor//uC+/+jGov/oxqL//uC+ + /9KZXf/ouor/88ug/8eIR//HiEf/x4hH//PLoP/HiEf/88ug/92qc//ouor/6LqK//7gvv/oxqL/6Mai + //7my//kvJH/8dCs//fauf/dsoT/3bKE/92yhP/32rn/3bKE//fauf/qxp7/8dCs//HQrP/+5sv/6Mai + /9mpd8TjvJPM3rOG9eC3jODhuo/W3bKE/92yhP/dsoT/4bqP1t2yhP/huo/W37WJ6+C3jODgt4zg47yT + zNmpd8QAAAAAAAAAAMeIR8zHiEdmx4hHM8eIR//HiEf/x4hH/8eIRzPHiEf/x4hHM8eIR5nHiEdmx4hH + ZgAAAAAAAAAAAAAAAAAAAADHiEfMx4hHZseIRzPHiEf/x4hH/8eIR//HiEczx4hH/8eIRzPHiEeZx4hH + ZseIR2YAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR2bHiEczx4hH/8eIR//HiEf/x4hHM8eIR//HiEczx4hH + mceIR2bHiEdmAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEdmx4hHM8eIR//HiEf/x4hH/8eIRzPHiEf/x4hH + M8eIR5nHiEdmx4hHZgAAAAAAAAAAAAAAAAAAAADHiEcpx4hHFMeIRwrHiEczx4hHM8eIRzPHiEcKx4hH + M8eIRwrHiEcfx4hHFMeIRxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAwAEAAMABAADAAQAAwAEAAMABAAA= + + + \ No newline at end of file diff --git a/QRValidation/Project/Dialog/fviewer.Designer.cs b/QRValidation/Project/Dialog/fviewer.Designer.cs new file mode 100644 index 0000000..2d4b5d1 --- /dev/null +++ b/QRValidation/Project/Dialog/fviewer.Designer.cs @@ -0,0 +1,97 @@ +namespace Project +{ + partial class fviewer + { + /// + /// 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(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fviewer)); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.sbConnState = new System.Windows.Forms.ToolStripStatusLabel(); + this.piv = new System.Windows.Forms.Panel(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.sbConnState}); + this.statusStrip1.Location = new System.Drawing.Point(0, 625); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 12, 0); + this.statusStrip1.Size = new System.Drawing.Size(854, 24); + this.statusStrip1.TabIndex = 4; + this.statusStrip1.Text = "statusStrip1"; + // + // sbConnState + // + this.sbConnState.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbConnState.Name = "sbConnState"; + this.sbConnState.Size = new System.Drawing.Size(23, 19); + this.sbConnState.Text = "●"; + // + // piv + // + this.piv.Dock = System.Windows.Forms.DockStyle.Fill; + this.piv.Location = new System.Drawing.Point(0, 0); + this.piv.Name = "piv"; + this.piv.Size = new System.Drawing.Size(854, 625); + this.piv.TabIndex = 6; + this.piv.MouseClick += new System.Windows.Forms.MouseEventHandler(this.piv_MouseClick); + // + // timer1 + // + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // fviewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(854, 649); + this.Controls.Add(this.piv); + this.Controls.Add(this.statusStrip1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.KeyPreview = true; + this.Name = "fviewer"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Image viewer"; + this.Load += new System.EventHandler(this.fTeach_Load); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.Panel piv; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.ToolStripStatusLabel sbConnState; + } +} \ No newline at end of file diff --git a/QRValidation/Project/Dialog/fviewer.cs b/QRValidation/Project/Dialog/fviewer.cs new file mode 100644 index 0000000..78dd53f --- /dev/null +++ b/QRValidation/Project/Dialog/fviewer.cs @@ -0,0 +1,150 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using AR; + + +#if V22 +using Euresys.Open_eVision_22_12; +#else +using Euresys.Open_eVision_2_11; +#endif + +namespace Project +{ + public partial class fviewer : Form + { + + int Camidx = 0; + EImageBW8 img = null; + private arCtl.ImageBoxEvision iv1; + public fviewer(int camidx) + { + InitializeComponent(); + + + PUB.imgque.Push(this.Name); + this.Camidx = camidx; + + //this.iv1 = new arCtl.ImageBoxEvision(); + //this.iv1.BackColor = Color.Black; + //this.iv1.Dock = DockStyle.Fill; + //this.piv.Controls.Add(iv1); + //iv1.Dock = DockStyle.Fill; + //if (img_ != null) + //{ + // img = new EImageBW8(); + // img.SetSize(img_); + // img_.CopyTo(this.img); + // EasyImage.Copy(img_, img); + + // this.iv1.Image = img; + // this.iv1.Invalidate(); + // this.iv1.ZoomFit(); + //} + this.KeyDown += (s1, e1) => { + if (e1.KeyCode == Keys.Escape) this.Close(); + }; + this.FormClosed += FTeach_FormClosed; + this.WindowState = FormWindowState.Maximized; + } + + private void FTeach_FormClosed(object sender, FormClosedEventArgs e) + { + this.timer1.Stop(); + PUB.imgque.Pop(); + if (this.img != null) img.Dispose(); + runtest = false; + } + + private void fTeach_Load(object sender, EventArgs e) + { + + this.timer1.Start(); + } + private void toolStripButton1_Click(object sender, EventArgs e) + { + //open file + OpenFileDialog od = new OpenFileDialog(); + if (od.ShowDialog() == DialogResult.OK) + { + if (this.img != null) this.img.Dispose(); + img = new EImageBW8(); + img.Load(od.FileName); + + this.iv1.Image = img; + this.iv1.Invalidate(); + this.iv1.ZoomFit(); + } + } + + + Boolean runtest = false; + int runcount = 0; + + + private void toolStripButton4_Click(object sender, EventArgs e) + { + if (this.iv1.Image == null) + { + UTIL.MsgE("No image"); + return; + } + var sd = new SaveFileDialog(); + sd.FileName = "saveimage.bmp"; + if (sd.ShowDialog() == DialogResult.OK) + this.iv1.Image.Save(sd.FileName); + } + + + + private void toolStripButton13_Click(object sender, EventArgs e) + { + this.iv1.DebugMode = !this.iv1.DebugMode; + this.iv1.Invalidate(); + } + + private void timer1_Tick(object sender, EventArgs e) + { + if (this.IsDisposed == true || this.Disposing == true) return; + if (PUB.imgque.Peek().Equals(this.Name) == false) return; + + //카메라가 연결되지 않았따면 처리하지 않는다. + if (PUB._isCrevisOpen[Camidx] == false || PUB.flag.get(eFlag.CAMERAINIT) == false) + { + + } + else + { + //이미지수집후 데이터 처리 + if (PUB.CrevisGrab(this.Camidx, true,this.piv)) + { + //if (IsProcess[Camidx] || IsTrigger[Camidx]) + PUB.CreavisProcess(Camidx, true, this.piv);// IsTrigger[Camidx]); + } + + } + + //heart beat + //this.BeginInvoke(new Action(() => + //{ + if (sbConnState.ForeColor == Color.Green) + sbConnState.ForeColor = Color.LimeGreen; + else + sbConnState.ForeColor = Color.Green; + //})); + + } + + private void piv_MouseClick(object sender, MouseEventArgs e) + { + this.Close(); + } + } +} diff --git a/QRValidation/Project/Dialog/fviewer.resx b/QRValidation/Project/Dialog/fviewer.resx new file mode 100644 index 0000000..0c087c5 --- /dev/null +++ b/QRValidation/Project/Dialog/fviewer.resx @@ -0,0 +1,1818 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 123, 17 + + + 240, 17 + + + + + AAABAAYAAAAAAAEAIADXBQAAZgAAAICAAAABACAAKAgBAD0GAABAQAAAAQAgAChCAABlDgEAMDAAAAEA + IACoJQAAjVABACAgAAABACAAqBAAADV2AQAQEAAAAQAgAGgEAADdhgEAiVBORw0KGgoAAAANSUhEUgAA + AQAAAAEACAYAAABccqhmAAAFnklEQVR42u3cv45UZRzH4d8ZRnZd/olsVkOCiIYEiBVgQYGFDQ02tvR6 + C8QroOAGtNd7oLGQggQFGwVMDARUjOskgisrrruzFlrJWZPDDnPA7/OU+5v3vO+ZPfmEgTBVAAAAAAAA + AAAAAADAs6Tp+wCnzl061nHJ8oWzJ6533GO+qva3zS6cPXGl47XmqurwVN+kJ6jv+5/S/qMLZ0/c7rjP + /qqabxn1+vxN2rDPzf/xRcfXX6mq4x3XvFtVH24w6xrBw49x5qdZ3/c/jf0/qqr3O675oKrea/l538/f + RA363BzolwBAMAGAYAIAwQQAggkABBMACCYAEEwAIJgAQDABgGACAMEEAIIJAAQTAAgmABBMACCYAEAw + AYBgAgDBBACCCQAEEwAIJgAQTAAgmABAMAGAYAIAwQQAggkABBMACCYAEEwAIJgAQDABgGACAMEEAIIJ + AAQTAAgmABBMACCYAEAwAYBgAgDBBACCCQAEEwAIJgAQTAAgmABAMAGAYAIAwQQAggkABBMACCYAEEwA + IJgAQDABgGACAMEEAIIJAAQTAAgmABBMACCYAEAwAYBgAgDBBACCNafPX/6kbbC2Nn5pvL6+awpnONbx + 9ctVdb3jmvmq2r/B7ErHa81V1eEpvC/T0vf9T2P/UVXd7rhmf/393Pxb389fZ4OmuTfcMvipbdacPn/5 + y7bB2tp433h9fc+TPhzwZA2aZjTcMviuddb34YD+CAAEEwAIJgAQbDget/9F38G9O2YWds32fT5gkxbv + P5z99sff2v5Fo4Zr4/G+tsHx1/fUySMLfZ8d2KSL1xa3f/PDr9vbZj4CQDABgGACAMEEAIIJAAQTAAgm + ABBMACCYAEAwAYBgAgDBhpO82Gi56s9xtzWfXr3V6fU75mbqzUN7O625O1qqG3dGrbO3jx7odK2l5T/q + 8xt3N/9mPSX6vv9p7L93fkcdemW+05obd0Z1d7T0yM/7fv6eG1TNz3Va8p8mGoCllaqHq93WXLy22On1 + C7u31cFXu/0Cbi7+vuE+R490+wUs3l/tfOanWd/3P43933it6uWFbgH4+vul+urmo/v0/fzNDicbAB8B + IJgAQDABgGACAMEEAIIJAAQTAAgmABBMACCYAEAwAYBgAgDBBACCCQAEEwAIJgAQTAAgmABAMAGAYAIA + wQQAggkABBMACCYAEEwAIJgAQDABgGACAMEEAIIJAAQTAAgmABBMACCYAEAwAYBgAgDBBACCCQAEEwAI + JgAQTAAgmABAMAGAYAIAwQQAggkABBMACCYAEEwAIJgAQDABgGACAMEEAIIJAAQTAAgmABBMACCYAEAw + AYBgAgDBBACCCQAEEwAIJgAQTAAgmABAMAGAYAIAwQQAggkABBMACCYAEEwAIJgAQDABgGACAMEEAIIJ + AAQTAAgmABBMACCYAEAwAYBgAgDBBACCCQAEEwAIJgAQTAAgmABAMAGAYAIAwQQAggkABBMACCYAEEwA + IJgAQDABgGACAMGGfR9gYfe2Tq9/ccfznfeYnRl23mcjw+FgYtd6FvV9/4+z/865mc777Jybad2n7+dv + 0ppT5y6ttw3OvHWgTh5Z6HSxW/eqHq72fUvw/zU7rDrwQrc1F68t1sef3Wqd+QgAwQQAggkABBMACCYA + EEwAIJgAQDABgGACAMEEAIIJAAQTAAgmABBMACCYAEAwAYBgAgDBBACCTfQ7Abt+VRHQL38CgGACAMEE + AIIJAAQTAAgmABBMACCYAEAwAYBgAgDBBACCDZumWW4b/PJgZeudnx9M9P8KANN378HKatM0K22z5p3z + l6+2DVbXxvvG6+vzfR8e2JxB04yGg8Gd1lnfhwP6IwAQTAAgmABAMAGAYMOqOrPBbGtN+CvDgF6sVtXK + pq8CAAAAAAAAAAAAAAD07i/pV9fEC9LZ4gAAAABJRU5ErkJggigAAACAAAAAAAEAAAEAIAAAAAAAAAAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKjE18yoxNfMqMTXzIiUiTx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZyIlIk8qLTXvKi017yotN + e8qMTc7KjE3OyoxNzsiJSPXHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//IiUj1yotNzcqLTc3Ki03NyoxNzsqMTc7KjE3OyIlI9ceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8iJSPXKi03NyotN + zcqLTc3JikriyYpK4smKSuLZqnn53bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/2ap5+cmKSuHJikrhyYpK4ceIR//HiEf/x4hH//Pbwf/+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//z28H/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N//89vB + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf + //7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf + //7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf + //7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf + //7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf + //7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf + //7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf + //7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP + //7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf + //7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/ouor/6LqK/+i6iv/ouor/6LqK + /+i6iv/1z6T//ty2//7ctv/+3Lb//ty2//7ctv/61a3/6LqK/+i6iv/ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/8cib/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK + /+i6iv/ouor/6LqK/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK/+i6iv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/xyJv/6LqK/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK/+i6iv/ouor//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/8cib/+i6iv/ouor/6LqK/+i6iv/ouor/7MGS//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/+zBkv/ouor/6LqK//XPpP/+3Lb//ty2//7ctv/+3Lb//ty2//rVrf/ouor/6LqK + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2 + //PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK + //7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf + //7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB + //7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf + //Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2 + //7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2 + //PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf + //7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2 + //7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf + //7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf + //7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2 + //7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2 + //7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf + //7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf + //7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK + //7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2 + //7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf + //7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf + //7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2 + //7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP + //7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf + //7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2 + //PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK + //7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf + //7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB + //7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf + //Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2 + //7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2 + //PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf + //7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2 + //7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf + //7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf + //7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2 + //7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2 + //7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf + //7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf + //7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK + //7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2 + //7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf + //7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf + //7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2 + //7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP + //7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf + //7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2 + //PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK + //7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf + //7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB + //7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf + //Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2 + //7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2 + //PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf + //7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2 + //7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf + //7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf + //7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2 + //7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2 + //7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf + //7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf + //7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK + //7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2 + //7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf + //7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf + //7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2 + //7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP + //7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf + //7w3//+8N///vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2 + //PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//SmV3//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK + //7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7oz//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf + //7w3//+8N///vDf//7w3//+6M///ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7oz//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//ouor//ty2//7ctv/+3Lb//ty2 + //7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/0pld//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+6M///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB + //7w3//+8N///vDf//7w3//+8N///ujP//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/+i6iv/+3Lb//ty2//7ctv/+3Lb//ty2//PLoP/HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/dqnP/x4hH/8eIR//HiEf/x4hH/8eIR//SmV3//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2//7ctv/+3Lb/88ug + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7oz//+8N///vDf//7w3//+8N///vDf + //Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+6M///ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/6LqK//7ctv/+3Lb//ty2 + //7ctv/+3Lb/88ug/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2/92qc//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + /92qc//HiEf/x4hH/8eIR//HiEf/x4hH/9KZXf/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//ouor//ty2//7ctv/+3Lb//ty2//7ctv/zy6D/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ujP//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //Pbwf/+8N///vDf//7w3//+8N///vDf//7q0v/+4L7//uC+//7gvv/+4L7//uC+//7gvv/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/sxZv//uC+//7gvv/+4L7//uC+//7gvv/106z/0p1l/9KdZf/SnWX//uC+ + //7gvv/+4L7//uC+//7gvv/+4L7/5LiJ/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/+4L7//uC+//7gvv/+4L7//uC+//7gvv/kuIn/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX//uC+//7gvv/+4L7//uC+//7gvv/+4L7/5LiJ/9KdZf/SnWX/0p1l/9KdZf/SnWX/26p3 + //7gvv/+4L7//uC+//7gvv/+4L7//uC+/9uqd//SnWX/0p1l/+zFm//+4L7//uC+//7gvv/+4L7//uC+ + //XTrP/SnWX/0p1l/9KdZf/+4L7//uC+//7gvv/+4L7//uC+//7gvv/+6tL//vDf//7w3//+8N///vDf + //7w3//z28H/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N//89vB/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/89vB//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//Pbwf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N//89vB/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//Pbwf/+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//HiEf/yYtL2cmLS9nJi0vZ0Jph99KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9CaYffJi0zYyYtM + 2MmLTNjKjEzPyoxMz8qMTM/IiUj1x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/yIlI9cqMTc7KjE3OyoxNzsqMTM/KjEzPyoxMz8iJSPXHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//IiUj1yoxN + zsqMTc7KjE3OyoxMU8qMTFPKjExTyIlIYseIR2bHiEdmx4hHZseIR2bHiEdmx4hHZseIR2bHiEdmx4hH + ZseIR2bHiEdmx4hHZseIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR6PHiEdmx4hHZseIR2bHiEdmx4hH + ZseIR4XHiEf/x4hH/8eIR//HiEdmx4hHZseIR2bHiEdmx4hHZseIR2bHiEfCx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2bHiEdmx4hHZseIR2bHiEdmx4hHZseIR8LHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmx4hHZseIR2bHiEdmx4hHZseIR2bHiEfCx4hH + /8eIR//HiEf/x4hH/8eIR//HiEfgx4hHZseIR2bHiEdmx4hHZseIR2bHiEdmx4hH4MeIR//HiEf/x4hH + o8eIR2bHiEdmx4hHZseIR2bHiEdmx4hHhceIR//HiEf/x4hH/8eIR2bHiEdmx4hHZseIR2bHiEdmx4hH + ZseIR2bHiEdmx4hHZseIR2bHiEdmx4hHZsiJSGLKjE1SyoxNUsqMTVIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH + /8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEfMAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + M8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hHZgAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH + /8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2YAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + zMeIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH + /8eIR//HiEfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + ZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEfMAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + M8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hHzAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + /8eIR//HiEf/x4hH/8eIR//HiEfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH + ZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH + /8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEfMAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + M8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hHZgAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH + /8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2YAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + zMeIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH + /8eIR//HiEfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + ZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEfMAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + M8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hHzAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + /8eIR//HiEf/x4hH/8eIR//HiEfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH + ZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEdmAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH + /8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR2YAAAAAAAAAAAAAAAAAAAAAAAAAAMeIRzPHiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH/8eIR//HiEf/x4hH/8eIR//HiEfMAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + M8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hHZgAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hHM8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR5nHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEf/x4hH/8eIR//HiEf/x4hH/8eIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH + /8eIR//HiEdmAAAAAAAAAAAAAAAAAAAAAAAAAADHiEczx4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEc9AAAAAAAAAAAAAAAAAAAAAAAAAADHiEcfx4hHmceIR5nHiEeZAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHXMeIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEdcx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHXMeIR5nHiEeZx4hHmceIR5nHiEeZx4hH + egAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR3rHiEeZx4hHmceIRz0AAAAAAAAAAAAAAAAAAAAAAAAA + AMeIRx/HiEeZx4hHmceIR5kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8B8HwAAAB8AHwH4fB/ + ////AfB8AAAAfAB8B+Hwf////wHwfAAAAHwAfAfh8H////8B8HwAAAB8AHwH4fB/////AfB8AAAAfAB8 + B+Hwf////wHwfAAAAHwAfAfh8H////8B8HwAAAB8AHwH4fB/////AfB8AAAAfAB8B+Hwf////wHwfAAA + AHwAfAfh8H////8B8HwAAAB8AHwH4fB/////AfB8AAAAfAB8B+Hwf////wHwfAAAAHwAfAfh8H////8B + 8HwAAAB8AHwH4fB/////AfB8AAAAfAB8B+Hwf////wHwfAAAAHwAfAfh8H////8B8HwAAAB8AHwH4fB/ + ////AfB8AAAAfAB8B+Hwf////wHwfAAAAHwAfAfh8H////8B8HwAAAB8AHwH4fB/////AfB8AAAAfAB8 + B+Hwf////wHwfAAAAHwAfAfh8H////8B8HwAAAB8AHwH4fB/////AfB8AAAAfAB8B+Hwf////wHwfAAA + AHwAfAfh8H////8B8HwAAAB8AHwH4fB/////AfB8AAAAfAB8B+Hwf////wHwfAAAAHwAfAfh8H////8B + 8HwAAAB8AHwH4fB/////AfB8AAAAfAB8B+Hwf////wHwfAAAAHwAfAfh8H////8B8HwAAAB8AHwH4fB/ + ////AfB8AAAAfAB8B+Hwf////wHwfAAAAHwAfAfh8H////8B8HwAAAB8AHwH4fB/////AfB8AAAAfAB8 + B+Hwf/////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////8oAAAAQAAAAIAAAAABACAAAAAA + AABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAyoxNpcmKSrTHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hH + zMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hH + zMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hH + zMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hH + zMeIR8zHiEfMx4hHzMeIR8zJikq0yotNpMmLTNjNk1fn0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/zZJX58mKTNfHiEf/3bKE//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf/92yhP/HiEf/x4hH + /92yhP/+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//dsoT/x4hH/8eIR//dsoT//vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N//3bKE/8eIR//HiEf/3bKE//7w3//+8N///uzX//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7s1//+8N///vDf/92yhP/HiEf/x4hH/92yhP/+8N///vDf + //7s1//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+7Nf//vDf//7w3//dsoT/x4hH + /8eIR//dsoT//vDf//7w3//+7Nf//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//uzX + //7w3//+8N//3bKE/8eIR//HiEf/3bKE//7w3//+8N///uzX//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7s1//+8N///vDf/92yhP/HiEf/x4hH/92yhP/+8N///vDf//7s1//+3Lb//ty2 + //7ctv/zy6D/88ug//PLoP/82bL//ty2//7ctv/30qn/88ug//7ctv/+3Lb//ty2//XPpP/zy6D/88ug + //PLoP/zy6D/88ug//PLoP/zy6D/88ug//PLoP/zy6D/88ug//PLoP/+3Lb//ty2//7ctv/1z6T/88ug + //PLoP/zy6D/88ug//7ctv/+3Lb//ty2//XPpP/zy6D/88ug//rVrf/+3Lb//ty2//rVrf/zy6D//Nmy + //7ctv/+3Lb/99Kp//PLoP/+3Lb//ty2//7ctv/+7Nf//vDf//7w3//dsoT/x4hH/8eIR//dsoT//vDf + //7w3//+7Nf//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2 + //7ctv/ouor/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb//uzX//7w3//+8N//3bKE + /8eIR//HiEf/3bKE//7w3//+8N///uzX//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH//PLoP/+3Lb//ty2 + /92qc//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/6LqK//7ctv/+3Lb/6LqK/8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2 + //7s1//+8N///vDf/92yhP/HiEf/x4hH/92yhP/+8N///vDf//7s1//+3Lb//ty2//7ctv/HiEf/x4hH + /8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2/+i6iv/HiEf/88ug//7ctv/+3Lb/3apz + /8eIR//+3Lb//ty2//7ctv/+7Nf//vDf//7w3//dsoT/x4hH/8eIR//dsoT//vDf//7w3//+7Nf//ty2 + //7ctv/+3Lb/x4hH/8eIR//HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/ouor/x4hH + //PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb//uzX//7w3//+8N//3bKE/8eIR//HiEf/3bKE + //7w3//+8N///uzX//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK + //7ctv/+3Lb/6LqK/8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2//7s1//+8N///vDf + /92yhP/HiEf/x4hH/92yhP/+8N///vDf//7s1//+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//zy6D//ty2 + //7ctv/dqnP/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2/+i6iv/HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2 + //7ctv/+7Nf//vDf//7w3//dsoT/x4hH/8eIR//dsoT//vDf//7w3//+7Nf//ty2//7ctv/+3Lb/x4hH + /8eIR//HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/ouor/x4hH//PLoP/+3Lb//ty2 + /92qc//HiEf//ty2//7ctv/+3Lb//uzX//7w3//+8N//3bKE/8eIR//HiEf/3bKE//7w3//+8N///uzX + //7ctv/+3Lb//ty2/8eIR//HiEf/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb/6LqK + /8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2//7s1//+8N///vDf/92yhP/HiEf/x4hH + /92yhP/+8N///vDf//7s1//+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//zy6D//ty2//7ctv/dqnP/x4hH + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /+i6iv/+3Lb//ty2/+i6iv/HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/+7Nf//vDf + //7w3//dsoT/x4hH/8eIR//dsoT//vDf//7w3//+7Nf//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/88ug + //7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/ouor/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2 + //7ctv/+3Lb//uzX//7w3//+8N//3bKE/8eIR//HiEf/3bKE//7w3//+8N///uzX//7ctv/+3Lb//ty2 + /8eIR//HiEf/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb/6LqK/8eIR//zy6D//ty2 + //7ctv/dqnP/x4hH//7ctv/+3Lb//ty2//7s1//+8N///vDf/92yhP/HiEf/x4hH/92yhP/+8N///vDf + //7s1//+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2 + /+i6iv/HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/+7Nf//vDf//7w3//dsoT/x4hH + /8eIR//dsoT//vDf//7w3//+7Nf//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/88ug//7ctv/+3Lb/3apz + /8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//ouor//ty2//7ctv/ouor/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb//uzX + //7w3//+8N//3bKE/8eIR//HiEf/3bKE//7w3//+8N///uzX//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH + //PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb/6LqK/8eIR//zy6D//ty2//7ctv/dqnP/x4hH + //7ctv/+3Lb//ty2//7s1//+8N///vDf/92yhP/HiEf/x4hH/92yhP/+8N///vDf//7s1//+3Lb//ty2 + //7ctv/HiEf/x4hH/8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2/+i6iv/HiEf/88ug + //7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/+7Nf//vDf//7w3//dsoT/x4hH/8eIR//dsoT//vDf + //7w3//+7Nf//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2 + //7ctv/ouor/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb//uzX//7w3//+8N//3bKE + /8eIR//HiEf/3bKE//7w3//+8N///uzX//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH//PLoP/+3Lb//ty2 + /92qc//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/6LqK//7ctv/+3Lb/6LqK/8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2 + //7s1//+8N///vDf/92yhP/HiEf/x4hH/92yhP/+8N///vDf//7s1//+3Lb//ty2//7ctv/HiEf/x4hH + /8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2/+i6iv/HiEf/88ug//7ctv/+3Lb/3apz + /8eIR//+3Lb//ty2//7ctv/+7Nf//vDf//7w3//dsoT/x4hH/8eIR//dsoT//vDf//7w3//+7Nf//ty2 + //7ctv/+3Lb/x4hH/8eIR//HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/ouor/x4hH + //PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb//uzX//7w3//+8N//3bKE/8eIR//HiEf/3bKE + //7w3//+8N///uzX//7ctv/+3Lb//ty2/8eIR//HiEf/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2 + //7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK + //7ctv/+3Lb/6LqK/8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2//7s1//+8N///vDf + /92yhP/HiEf/x4hH/92yhP/+8N///vDf//7s1//+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//zy6D//ty2 + //7ctv/dqnP/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/+i6iv/+3Lb//ty2/+i6iv/HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2 + //7ctv/+7Nf//vDf//7w3//dsoT/x4hH/8eIR//dsoT//vDf//7w3//+7Nf//ty2//7ctv/+3Lb/x4hH + /8eIR//HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/ouor/x4hH//PLoP/+3Lb//ty2 + /92qc//HiEf//ty2//7ctv/+3Lb//uzX//7w3//+8N//3bKE/8eIR//HiEf/3bKE//7w3//+8N///uzX + //7ctv/+3Lb//ty2/8eIR//HiEf/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2//7ctv/+3Lb/0pld + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2 + /9KZXf/HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/6LqK//7ctv/+3Lb/6LqK + /8eIR//zy6D//ty2//7ctv/dqnP/x4hH//7ctv/+3Lb//ty2//7s1//+8N///vDf/92yhP/HiEf/x4hH + /92yhP/+8N///vDf//7s1//+3Lb//ty2//7ctv/HiEf/x4hH/8eIR//zy6D//ty2//7ctv/dqnP/x4hH + //7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb//ty2/9KZXf/HiEf/x4hH + /+i6iv/+3Lb//ty2/+i6iv/HiEf/88ug//7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/+7Nf//vDf + //7w3//dsoT/x4hH/8eIR//dsoT//vDf//7w3//+7Nf//ty2//7ctv/+3Lb/x4hH/8eIR//HiEf/88ug + //7ctv/+3Lb/3apz/8eIR//+3Lb//ty2//7ctv/SmV3/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2//7ctv/+3Lb/0pld/8eIR//HiEf/x4hH/8eIR//+3Lb//ty2 + //7ctv/SmV3/x4hH/8eIR//ouor//ty2//7ctv/ouor/x4hH//PLoP/+3Lb//ty2/92qc//HiEf//ty2 + //7ctv/+3Lb//uzX//7w3//+8N//3bKE/8eIR//HiEf/3bKE//7w3//+8N///u7c//7oz//+6M///ujP + /+jGov/oxqL/6Mai//rhxv/+6M///ujP//HUtP/oxqL//ujP//7oz//+6M//7M2r/+jGov/oxqL/6Mai + /+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai//7oz//+6M///ujP/+zNq//oxqL/6Mai + /+jGov/oxqL//ujP//7oz//+6M//7M2r/+jGov/oxqL/9du9//7oz//+6M//9du9/+jGov/64cb//ujP + //7oz//x1LT/6Mai//7oz//+6M///ujP//7u3P/+8N///vDf/92yhP/HiEf/x4hH/92yhP/+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//dsoT/x4hH + /8eIR//dsoT//vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N//3bKE/8eIR//IiUns1aNu8+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai + /+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai + /+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai + /+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai + /+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/9WjbvPIiUnryoxMz8mKSuLHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//JikriyoxNzsqMTCnJikotx4hH + M8eIRzPHiEczx4hHM8eIRzPHiEczx4hH/8eIR//HiEf/x4hHXMeIRzPHiEczx4hHrceIR//HiEczx4hH + M8eIRzPHiEfWx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + M8eIRzPHiEczx4hH1seIR//HiEf/x4hH/8eIR//HiEczx4hHM8eIRzPHiEfWx4hH/8eIR//HiEeFx4hH + M8eIRzPHiEeFx4hH/8eIR1zHiEczx4hHM8eIR63HiEf/x4hHM8eIRzPHiEczx4hHM8eIRzPHiEczyYpK + LcqMTSkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIRzMAAAAAAAAA + AMeIR5nHiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAx4hH + zMeIR//HiEf/x4hHZgAAAAAAAAAAx4hHZseIR//HiEczAAAAAAAAAADHiEeZx4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH + /8eIR//HiEczAAAAAAAAAADHiEeZx4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAMeIR2bHiEf/x4hHMwAAAAAAAAAAx4hH + mceIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hH/8eIR//HiEf/x4hHMwAAAAAAAAAAx4hHmceIR/8AAAAAAAAAAAAAAADHiEfMx4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAx4hH + zMeIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAADHiEdmx4hH + /8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAA + AAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH + ZgAAAAAAAAAAx4hHZseIR//HiEczAAAAAAAAAADHiEeZx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEczAAAA + AAAAAADHiEeZx4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAMeIR2bHiEf/x4hHMwAAAAAAAAAAx4hHmceIR/8AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH + /8eIR//HiEf/x4hHMwAAAAAAAAAAx4hHmceIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAADHiEdmx4hH/8eIRzMAAAAAAAAA + AMeIR5nHiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAAAAAAAAAAAAAAx4hH + zMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAA + AMeIR8zHiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAx4hH + ZseIR//HiEczAAAAAAAAAADHiEeZx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEczAAAAAAAAAADHiEeZx4hH + /wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH + /8eIR2YAAAAAAAAAAMeIR2bHiEf/x4hHMwAAAAAAAAAAx4hHmceIR/8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hH + MwAAAAAAAAAAx4hHmceIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAADHiEfMx4hH/8eIR//HiEdmAAAAAAAAAADHiEdmx4hH/8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR//HiEf/x4hH/8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAx4hHZseIR//HiEczAAAA + AAAAAADHiEeZx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH/8eIR//HiEczAAAAAAAAAADHiEeZx4hH/wAAAAAAAAAAAAAA + AMeIR8zHiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAA + AAAAAADHiEfMx4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAA + AMeIR2bHiEf/x4hHMwAAAAAAAAAAx4hHmceIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hHMwAAAAAAAAAAx4hH + mceIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH + /8eIR//HiEdmAAAAAAAAAADHiEdmx4hH/8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH + /8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAx4hHzMeIR//HiEf/x4hHZgAAAAAAAAAAx4hHZseIR//HiEczAAAAAAAAAADHiEeZx4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADHiEf/x4hH/8eIR//HiEczAAAAAAAAAADHiEeZx4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR2YAAAAAAAAAAMeIR2bHiEf/x4hH + MwAAAAAAAAAAx4hHmceIR/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR//HiEf/x4hHMwAAAAAAAAAAx4hHmceIR/8AAAAAAAAA + AAAAAADHiEfMx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAA + AAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH/8eIR/8AAAAAAAAAAAAAAADHiEfMx4hH/8eIR//HiEdmAAAA + AAAAAADHiEdmx4hH/8eIRzMAAAAAAAAAAMeIR5nHiEf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH/8eIRzMAAAAAAAAA + AMeIR5nHiEf/AAAAAAAAAAAAAAAAx4hHzMeIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAAAAAAMeIR8zHiEf/x4hH/8eIR//HiEf/AAAAAAAAAAAAAAAAx4hH + zMeIR//HiEf/x4hHZgAAAAAAAAAAx4hHZseIR//HiEczAAAAAAAAAADHiEeZx4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEfMx4hH + zMeIR8zHiEcpAAAAAAAAAADHiEd6x4hHzAAAAAAAAAAAAAAAAMeIR6PHiEfMx4hHzMeIR8zHiEfMx4hH + zMeIR8zHiEfMx4hHzMeIR8zHiEfMx4hHzMeIR8wAAAAAAAAAAAAAAADHiEejx4hHzMeIR8zHiEfMx4hH + zAAAAAAAAAAAAAAAAMeIR6PHiEfMx4hHzMeIR1IAAAAAAAAAAMeIR1LHiEfMx4hHKQAAAAAAAAAAx4hH + eseIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////////////////////wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD/DGAAYGGMf/8MYABgYYx//wxgAGBhjH//DGAAYGGMf/8MYABgYYx//wxg + AGBhjH//DGAAYGGMf/8MYABgYYx//wxgAGBhjH//DGAAYGGMf/8MYABgYYx//wxgAGBhjH//DGAAYGGM + f/8MYABgYYx//wxgAGBhjH//DGAAYGGMf/8MYABgYYx/////////////////////////////////KAAA + ADAAAABgAAAAAQAgAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMqMTXzIiUiTx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nIiUiTyotNe8mKSuLZqnn53bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE/92yhP/dsoT/3bKE + /92yhP/dsoT/3bKE/92yhP/Zqnn5yYpK4ceIR//z28H//vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//z28H//vDf + //7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP//7w3//z28H/x4hH + /8eIR//z28H//vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ujP + //7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2/+i6iv/ouor/9c+k + //7ctv/61a3/6LqK//7ctv/+3Lb/8cib/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK/+i6iv/ouor/6LqK + //7ctv/+3Lb/8cib/+i6iv/ouor/6LqK//7ctv/+3Lb/8cib/+i6iv/swZL//ty2//7ctv/swZL/9c+k + //7ctv/61a3/6LqK//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2 + /8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2 + //7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf + //7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz + /8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH + /8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + //7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP + //7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH + //7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK + //7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK + //7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2 + /8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2 + //7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf + //7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz + /8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH + /8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + //7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP + //7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH + //7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK + //7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK + //7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2 + /8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2 + //7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf + //7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz + /8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH + /8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + //7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP + //7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH + //7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK + //7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + //7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK + //7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf//7oz//+3Lb//ty2 + /8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//SmV3//ty2 + //7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH/8eIR//z28H//vDf + //7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz + /8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP//7w3//z28H/x4hH + /8eIR//z28H//vDf//7oz//+3Lb//ty2/8eIR//HiEf/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb/3apz + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/+3Lb/3apz/8eIR//HiEf/x4hH + //7ctv/+3Lb/3apz/8eIR//SmV3//ty2//7ctv/SmV3/6LqK//7ctv/zy6D/x4hH//7ctv/+3Lb//ujP + //7w3//z28H/x4hH/8eIR//z28H//vDf//7q0v/+4L7//uC+/9KdZf/SnWX/7MWb//7gvv/106z/0p1l + //7gvv/+4L7/5LiJ/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l//7gvv/+4L7/5LiJ + /9KdZf/SnWX/0p1l//7gvv/+4L7/5LiJ/9KdZf/bqnf//uC+//7gvv/bqnf/7MWb//7gvv/106z/0p1l + //7gvv/+4L7//urS//7w3//z28H/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8eIR//z28H//vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//z28H/x4hH/8mLS9nQmmH30p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l + /9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/SnWX/0p1l/9KdZf/QmmH3yYtM + 2MqMTFPIiUhix4hHZseIR2bHiEdmx4hHZseIR//HiEf/x4hHo8eIR2bHiEeFx4hH/8eIR2bHiEdmx4hH + wseIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR2bHiEdmx4hHwseIR//HiEf/x4hH + /8eIR2bHiEdmx4hHwseIR//HiEfgx4hHZseIR2bHiEfgx4hHo8eIR2bHiEeFx4hH/8eIR2bHiEdmx4hH + ZseIR2bIiUhiyoxNUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hHZgAAAADHiEczx4hH + /wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hHZgAAAADHiEczx4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH + ZgAAAADHiEczx4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hH + ZgAAAADHiEczx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR//HiEf/x4hHZgAAAADHiEczx4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAA + AAAAAADHiEfMx4hHZgAAAADHiEczx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR//HiEf/x4hHZgAAAADHiEczx4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/wAAAAAAAAAAx4hH + mceIR//HiEfMAAAAAAAAAADHiEfMx4hHZgAAAADHiEczx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hHZgAAAADHiEczx4hH/wAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hHZgAAAADHiEczx4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hHZgAAAADHiEczx4hH + /wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hHZgAAAADHiEczx4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH + ZgAAAADHiEczx4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hH + ZgAAAADHiEczx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR//HiEf/x4hHZgAAAADHiEczx4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAA + AAAAAADHiEfMx4hHZgAAAADHiEczx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMeIR//HiEf/x4hHZgAAAADHiEczx4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/wAAAAAAAAAAx4hH + mceIR//HiEfMAAAAAAAAAADHiEfMx4hHZgAAAADHiEczx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hHZgAAAADHiEczx4hH/wAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH + /wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hHZgAAAADHiEczx4hH/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hHZgAAAADHiEczx4hH + /wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAAAAAAAAx4hH + mceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hHZgAAAADHiEczx4hH + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEf/x4hH + ZgAAAADHiEczx4hH/wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH + /wAAAAAAAAAAx4hHmceIR//HiEf/x4hH/wAAAAAAAAAAx4hHmceIR//HiEfMAAAAAAAAAADHiEfMx4hH + ZgAAAADHiEczx4hH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR5nHiEeZx4hHPQAAAADHiEcfx4hHmQAAAAAAAAAAx4hHXMeIR5nHiEeZx4hHmceIR5nHiEeZx4hH + mceIR5nHiEeZx4hHmQAAAAAAAAAAx4hHXMeIR5nHiEeZx4hHmQAAAAAAAAAAx4hHXMeIR5nHiEd6AAAA + AAAAAADHiEd6x4hHPQAAAADHiEcfx4hHmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP///////wAA////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPxEAEEZHwAA/EQAQRkfAAD8RABBGR8A + APxEAEEZHwAA/EQAQRkfAAD8RABBGR8AAPxEAEEZHwAA/EQAQRkfAAD8RABBGR8AAPxEAEEZHwAA/EQA + QRkfAAD8RABBGR8AAPxEAEEZHwAA////////AAD///////8AACgAAAAgAAAAQAAAAAEAIAAAAAAAABAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMmLTFbHiEdmx4hHZseIR2bHiEdmx4hHZseIR2bHiEdmx4hH + ZseIR2bHiEdmx4hHZseIR2bHiEdmx4hHZseIR2bHiEdmx4hHZseIR2bHiEdmx4hHZseIR2bHiEdmx4hH + ZseIR2bHiEdmx4hHZseIR2bHiEdmx4hHZseIR2bJikxWz5Zc7+jGov/oxqL/6Mai/+jGov/oxqL/6Mai + /+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai + /+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/+jGov/oxqL/6Mai/8+WXO/SnWX//vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf + //7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N///vDf//7w3//+8N//0p1l/9KdZf/+8N///uTG + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//uTG//7w3//SnWX/0p1l + //7w3//+5Mb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7ctv/+5Mb//vDf + /9KdZf/SnWX//vDf//7kxv/+3Lb/3apz/+q+jv/+3Lb/5LSB//7ctv/xyJv/3apz/92qc//dqnP/3apz + /92qc//dqnP//ty2//HIm//dqnP/3apz//7ctv/xyJv/3apz//fSqf/30qn/6r6O//7ctv/ktIH//ty2 + //7kxv/+8N//0p1l/9KdZf/+8N///uTG//7ctv/HiEf/3apz//7ctv/SmV3//ty2/+i6iv/HiEf/x4hH + /8eIR//HiEf/x4hH/8eIR//+3Lb/6LqK/8eIR//HiEf//ty2/+i6iv/HiEf/88ug//PLoP/dqnP//ty2 + /9KZXf/+3Lb//uTG//7w3//SnWX/0p1l//7w3//+5Mb//ty2/8eIR//dqnP//ty2/9KZXf/+3Lb/6LqK + /8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/ouor/x4hH/8eIR//+3Lb/6LqK/8eIR//zy6D/88ug + /92qc//+3Lb/0pld//7ctv/+5Mb//vDf/9KdZf/SnWX//vDf//7kxv/+3Lb/x4hH/92qc//+3Lb/0pld + //7ctv/ouor/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2/+i6iv/HiEf/x4hH//7ctv/ouor/x4hH + //PLoP/zy6D/3apz//7ctv/SmV3//ty2//7kxv/+8N//0p1l/9KdZf/+8N///uTG//7ctv/HiEf/3apz + //7ctv/SmV3//ty2/+i6iv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb/6LqK/8eIR//HiEf//ty2 + /+i6iv/HiEf/88ug//PLoP/dqnP//ty2/9KZXf/+3Lb//uTG//7w3//SnWX/0p1l//7w3//+5Mb//ty2 + /8eIR//dqnP//ty2/9KZXf/+3Lb/6LqK/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/ouor/x4hH + /8eIR//+3Lb/6LqK/8eIR//zy6D/88ug/92qc//+3Lb/0pld//7ctv/+5Mb//vDf/9KdZf/SnWX//vDf + //7kxv/+3Lb/x4hH/92qc//+3Lb/0pld//7ctv/ouor/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2 + /+i6iv/HiEf/x4hH//7ctv/ouor/x4hH//PLoP/zy6D/3apz//7ctv/SmV3//ty2//7kxv/+8N//0p1l + /9KdZf/+8N///uTG//7ctv/HiEf/3apz//7ctv/SmV3//ty2/+i6iv/HiEf/x4hH/8eIR//HiEf/x4hH + /8eIR//+3Lb/6LqK/8eIR//HiEf//ty2/+i6iv/HiEf/88ug//PLoP/dqnP//ty2/9KZXf/+3Lb//uTG + //7w3//SnWX/0p1l//7w3//+5Mb//ty2/8eIR//dqnP//ty2/9KZXf/+3Lb/6LqK/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hH//7ctv/ouor/x4hH/8eIR//+3Lb/6LqK/8eIR//zy6D/88ug/92qc//+3Lb/0pld + //7ctv/+5Mb//vDf/9KdZf/SnWX//vDf//7kxv/+3Lb/x4hH/92qc//+3Lb/0pld//7ctv/ouor/x4hH + /8eIR//HiEf/x4hH/8eIR//HiEf//ty2/+i6iv/HiEf/x4hH//7ctv/ouor/x4hH//PLoP/zy6D/3apz + //7ctv/SmV3//ty2//7kxv/+8N//0p1l/9KdZf/+8N///uTG//7ctv/HiEf/3apz//7ctv/SmV3//ty2 + /+i6iv/HiEf/x4hH/8eIR//HiEf/x4hH/8eIR//+3Lb/6LqK/8eIR//HiEf//ty2/+i6iv/HiEf/88ug + //PLoP/dqnP//ty2/9KZXf/+3Lb//uTG//7w3//SnWX/0p1l//7w3//+5Mb//ty2/8eIR//dqnP//ty2 + /9KZXf/+3Lb/6LqK/8eIR//HiEf/x4hH/8eIR//HiEf/x4hH//7ctv/ouor/x4hH/8eIR//+3Lb/6LqK + /8eIR//zy6D/88ug/92qc//+3Lb/0pld//7ctv/+5Mb//vDf/9KdZf/SnWX//vDf//7kxv/+3Lb/x4hH + /92qc//+3Lb/0pld//7ctv/ouor/x4hH/8eIR//HiEf/x4hH/8eIR//HiEf//ty2/+i6iv/HiEf/x4hH + //7ctv/ouor/x4hH//PLoP/zy6D/3apz//7ctv/SmV3//ty2//7kxv/+8N//0p1l/9KdZf/+8N///u7a + //7s1//z28H/9+LJ//7s1//138X//uzX//rlzv/z28H/89vB//Pbwf/z28H/89vB//Pbwf/+7Nf/+uXO + //Pbwf/z28H//uzX//rlzv/z28H//OnS//zp0v/34sn//uzX//Xfxf/+7Nf//u7a//7w3//SnWX/0Jph + 9/Pbwf/z28H/89vB//Pbwf/z28H/89vB//Pbwf/z28H/89vB//Pbwf/z28H/89vB//Pbwf/z28H/89vB + //Pbwf/z28H/89vB//Pbwf/z28H/89vB//Pbwf/z28H/89vB//Pbwf/z28H/89vB//Pbwf/z28H/89vB + /9CaYffJi0uCx4hHmceIR5nHiEeZx4hH/8eIR9bHiEeZx4hH68eIR5nHiEfCx4hH/8eIR//HiEf/x4hH + /8eIR//HiEf/x4hHmceIR8LHiEf/x4hH/8eIR5nHiEfCx4hH/8eIR63HiEetx4hH1seIR5nHiEfrx4hH + mceIR5nHiEeZyYtMgQAAAAAAAAAAAAAAAAAAAADHiEf/x4hHmQAAAADHiEfMAAAAAMeIR2bHiEf/x4hH + /8eIR//HiEf/x4hH/8eIR/8AAAAAx4hHZseIR//HiEf/AAAAAMeIR2bHiEf/x4hHM8eIRzPHiEeZAAAA + AMeIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEeZAAAAAMeIR8wAAAAAx4hH + ZseIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAADHiEdmx4hH/8eIR/8AAAAAx4hHZseIR//HiEczx4hH + M8eIR5kAAAAAx4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hH/8eIR5kAAAAAx4hH + zAAAAADHiEdmx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAAAMeIR2bHiEf/x4hH/wAAAADHiEdmx4hH + /8eIRzPHiEczx4hHmQAAAADHiEfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHiEf/x4hH + mQAAAADHiEfMAAAAAMeIR2bHiEf/x4hH/8eIR//HiEf/x4hH/8eIR/8AAAAAx4hHZseIR//HiEf/AAAA + AMeIR2bHiEf/x4hHM8eIRzPHiEeZAAAAAMeIR8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMeIR//HiEeZAAAAAMeIR8wAAAAAx4hHZseIR//HiEf/x4hH/8eIR//HiEf/x4hH/wAAAADHiEdmx4hH + /8eIR/8AAAAAx4hHZseIR//HiEczx4hHM8eIR5kAAAAAx4hHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAx4hH/8eIR5kAAAAAx4hHzAAAAADHiEdmx4hH/8eIR//HiEf/x4hH/8eIR//HiEf/AAAA + AMeIR2bHiEf/x4hH/wAAAADHiEdmx4hH/8eIRzPHiEczx4hHmQAAAADHiEfMAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADHiEf/x4hHmQAAAADHiEfMAAAAAMeIR2bHiEf/x4hH/8eIR//HiEf/x4hH + /8eIR/8AAAAAx4hHZseIR//HiEf/AAAAAMeIR2bHiEf/x4hHM8eIRzPHiEeZAAAAAMeIR8wAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeIR//HiEeZAAAAAMeIR8wAAAAAx4hHZseIR//HiEf/x4hH + /8eIR//HiEf/x4hH/wAAAADHiEdmx4hH/8eIR/8AAAAAx4hHZseIR//HiEczx4hHM8eIR5kAAAAAx4hH + zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4hHZseIRz0AAAAAx4hHUgAAAADHiEcpx4hH + ZseIR2bHiEdmx4hHZseIR2bHiEdmAAAAAMeIRynHiEdmx4hHZgAAAADHiEcpx4hHZseIRxTHiEcUx4hH + PQAAAADHiEdSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + APIAACfyAAAn8gAAJ/IAACfyAAAn8gAAJ/IAACfyAAAn8gAAJ/////8oAAAAEAAAACAAAAABACAAAAAA + AAAEAAAAAAAAAAAAAAAAAAAAAAAAyIlJL8eIRzPHiEczx4hHM8eIRzPHiEczx4hHM8eIRzPHiEczx4hH + M8eIRzPHiEczx4hHM8eIRzPHiEczyIlJL+K7kfvz28H/89vB//Pbwf/z28H/89vB//Pbwf/z28H/89vB + //Pbwf/z28H/89vB//Pbwf/z28H/89vB/+K7kvvoxqL//uC+//7ctv/+3Lb//ty2//7ctv/+3Lb//ty2 + //7ctv/+3Lb//ty2//7ctv/+3Lb//ty2//7gvv/oxqL/6Mai//7gvv/bpm//7MGS//XPpP/SmV3/0pld + /9KZXf/1z6T/0pld//XPpP/ktIH/7MGS/+zBkv/+4L7/6Mai/+jGov/+4L7/0pld/+i6iv/zy6D/x4hH + /8eIR//HiEf/88ug/8eIR//zy6D/3apz/+i6iv/ouor//uC+/+jGov/oxqL//uC+/9KZXf/ouor/88ug + /8eIR//HiEf/x4hH//PLoP/HiEf/88ug/92qc//ouor/6LqK//7gvv/oxqL/6Mai//7gvv/SmV3/6LqK + //PLoP/HiEf/x4hH/8eIR//zy6D/x4hH//PLoP/dqnP/6LqK/+i6iv/+4L7/6Mai/+jGov/+4L7/0pld + /+i6iv/zy6D/x4hH/8eIR//HiEf/88ug/8eIR//zy6D/3apz/+i6iv/ouor//uC+/+jGov/oxqL//uC+ + /9KZXf/ouor/88ug/8eIR//HiEf/x4hH//PLoP/HiEf/88ug/92qc//ouor/6LqK//7gvv/oxqL/6Mai + //7my//kvJH/8dCs//fauf/dsoT/3bKE/92yhP/32rn/3bKE//fauf/qxp7/8dCs//HQrP/+5sv/6Mai + /9mpd8TjvJPM3rOG9eC3jODhuo/W3bKE/92yhP/dsoT/4bqP1t2yhP/huo/W37WJ6+C3jODgt4zg47yT + zNmpd8QAAAAAAAAAAMeIR8zHiEdmx4hHM8eIR//HiEf/x4hH/8eIRzPHiEf/x4hHM8eIR5nHiEdmx4hH + ZgAAAAAAAAAAAAAAAAAAAADHiEfMx4hHZseIRzPHiEf/x4hH/8eIR//HiEczx4hH/8eIRzPHiEeZx4hH + ZseIR2YAAAAAAAAAAAAAAAAAAAAAx4hHzMeIR2bHiEczx4hH/8eIR//HiEf/x4hHM8eIR//HiEczx4hH + mceIR2bHiEdmAAAAAAAAAAAAAAAAAAAAAMeIR8zHiEdmx4hHM8eIR//HiEf/x4hH/8eIRzPHiEf/x4hH + M8eIR5nHiEdmx4hHZgAAAAAAAAAAAAAAAAAAAADHiEcpx4hHFMeIRwrHiEczx4hHM8eIRzPHiEcKx4hH + M8eIRwrHiEcfx4hHFMeIRxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAwAEAAMABAADAAQAAwAEAAMABAAA= + + + \ No newline at end of file diff --git a/QRValidation/Project/LogTextBox.Designer.cs b/QRValidation/Project/LogTextBox.Designer.cs new file mode 100644 index 0000000..1b87d20 --- /dev/null +++ b/QRValidation/Project/LogTextBox.Designer.cs @@ -0,0 +1,36 @@ +namespace arCtl +{ + partial class LogTextBox + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/QRValidation/Project/LogTextBox.cs b/QRValidation/Project/LogTextBox.cs new file mode 100644 index 0000000..d180f5a --- /dev/null +++ b/QRValidation/Project/LogTextBox.cs @@ -0,0 +1,347 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Threading; + +namespace arCtl +{ + public partial class LogTextBox : RichTextBox + { + delegate void AddMsgHandler(DateTime tm, string Gubun, string Msg, Color fColor); + + /// + /// 타이머를 이용하여 로그를 표시할 것인가를 설정합니다. (데이터량이 너무 많다면 이기능을사용하세요. 버퍼오버가 되면 프로그램이 멈출수 있습니다) + /// + public Boolean EnableDisplayTimer + { + get + { + return tm.Enabled; + } + set + { + tm.Enabled = value; + if (value) tm.Start(); + else tm.Stop(); + } + } + + /// + /// 날짜의 포맷방식 기본 (yy-MM-dd HH:mm:ss) + /// + public string DateFormat { get; set; } + + /// + /// 데이터의 String.Format 기본값([{0}] {1}), 0번은 시간, 1번은 메세지 , 2번은 구분 + /// + public string ListFormat { get; set; } + + /// + /// 최대 데이터의 줄수 , 지정값을 넘어서면 초기화 됩니다. + /// + public UInt16 MaxListCount { get; set; } + public UInt32 MaxTextLength { get; set; } + private sLogMessageColor[] _ColorList = new sLogMessageColor[] { }; + + /// + /// 메세지버퍼동기화를 위해서 추가함 + /// + private System.Threading.AutoResetEvent ar = new System.Threading.AutoResetEvent(true); + + + ManualResetEvent mre = new ManualResetEvent(true); + + object lock_work = new object(); + + + + /// + /// 메세지를 표시하는 내부 타이머의 간격입니다. 기본값 100 + /// + public int MessageInterval + { + get + { + + return tm.Interval; + } + set + { + tm.Interval = value; + //tm.Change(1000, value); + } + } + + /// + /// 각 데이터라인을 컬러로 구분짓습니다. + /// + public Boolean EnableGubunColor { get; set; } + + public System.Windows.Forms.Timer tm; + + public new void Dispose() + { + + + this.tm.Stop(); + tm.Tick -= tm_Tick; + base.Dispose(); + } + + /// + /// 구분별로 색상을 입력합니다. 이 색상은 EnableGUbunColor 가 활성하되어야합니다. 비활성화시에는 DefaultColor를 사용합니다. + /// + public sLogMessageColor[] ColorList + { + get + { + return _ColorList; + } + set + { + _ColorList = value; + } + } + + public LogTextBox() + { + InitializeComponent(); + EnableGubunColor = true; + DateFormat = "yy-MM-dd HH:mm:ss"; + ListFormat = "[{0}] {1}"; + MaxListCount = 200; + MaxTextLength = 4000; + this.DefaultColor = Color.LightGray; + this.BackColor = Color.FromArgb(24, 24, 24); + this.Font = new Font("Consolas", 9, FontStyle.Regular); + // this.waitsEvent = new EventWaitHandle[] { waitEvent, closeAllEvent }; + + tm = new System.Windows.Forms.Timer(); // System.Threading.Timer(tm_Tick, ar, 1000, 3000); + // tm = new Timer(); + tm.Interval = 50; + tm.Tick += tm_Tick; + this.EnableDisplayTimer = true; + tm.Start(); + } + + [Description("기본 글자 색상")] + [Browsable(true)] + public Color DefaultColor { get; set; } + + public void AddMsg(DateTime tm, string Gubun, string Msg) + { + Boolean useColor = false; + Color fcolor = DefaultColor; + + if (EnableGubunColor) + { + if (ColorList != null && ColorList.Length > 0) + { + foreach (var cdata in ColorList) + { + if (Gubun.StartsWith(cdata.gubun)) + { + useColor = true; + fcolor = cdata.color; + break; + } + } + } + + //사용자 컬러리스트를 조회해서 없다면 시스템으로 한다. + if (!useColor) + { + var sColorList = new sLogMessageColor[] { + new sLogMessageColor("ERR",Color.Red) , + new sLogMessageColor("ATT",Color.Orange) , + new sLogMessageColor("INFO",Color.DeepSkyBlue) , + new sLogMessageColor("NET",Color.Magenta) + }; + + foreach (var cdata in sColorList) + { + if (Gubun.StartsWith(cdata.gubun)) + { + fcolor = cdata.color; + break; + } + } + } + + } + AddMsg(tm, Gubun, Msg, fcolor); + } + + struct sMessageData + { + public DateTime date; + public string msg; + public Color fcolor; + } + + public int BufferCount { get { return messagebuffer.Count; } } + + void tm_Tick(object sender, EventArgs e) + { + //ar.WaitOne(); + //ar.Reset(); + + if (!mre.WaitOne(2000)) return; + mre.Reset(); + + lock (lock_work) + { + if (messagebuffer.Count > 0) + { + var data = (sMessageData)messagebuffer.Dequeue(); + //messagebuffer.RemoveAt(0); + + AppendMessge(data.msg, data.fcolor); + + //if (!this.IsDisposed && !this.Disposing) + //{ + // //색상변경 + // int StartIndex = this.TextLength; + // this.AppendText(data.msg + "\r\n"); + // this.Select(StartIndex, data.msg.Length); + // this.SelectionColor = data.fcolor; + // this.ScrollToCaret(); + //} + } + } + + mre.Set(); + // AppendMessge(DateTime.Now.ToString("HH:mm:ss.fff"),Color.White); + + + // ar.Set(); + } + + delegate void AppedMessageHandler(string msg, Color fColor); + void AppendMessge(string ListStr, Color fColor) + { + if (!this.Disposing && !this.IsDisposed) + { + if (this.InvokeRequired) + { + this.BeginInvoke(new AppedMessageHandler(AppendMessge), new object[] { ListStr, fColor }); + } + else + { + if (this.TextLength > MaxTextLength) this.Clear(); + + int StartIndex = this.TextLength; + this.AppendText(ListStr + "\r\n"); + this.Select(StartIndex, ListStr.Length); + this.SelectionColor = fColor; + this.ScrollToCaret(); + } + } + } + + System.Collections.Queue messagebuffer = new System.Collections.Queue(); + public void AddMsg(DateTime tm, string Gubun, string Msg, Color fColor) + { + //시간포맷 + string _TimeFormat = this.DateFormat; + if (string.IsNullOrEmpty(_TimeFormat)) _TimeFormat = "yy-MM-dd HH:mm:ss"; + + //데이터포맷 + string _ListFormat = this.ListFormat; + if (string.IsNullOrEmpty(_ListFormat)) _ListFormat = "[{0}] {1}"; + + string TimeStr = tm.ToString(_TimeFormat); + string ListStr = string.Format(_ListFormat, TimeStr, Msg); + + //ar.WaitOne(); + //ar.Reset(); + + if (!mre.WaitOne(2000)) return; + mre.Reset(); + + lock (lock_work) + { + + ///최대줄수를 넘어서면 오류 + if (this.messagebuffer.Count > MaxListCount) + { + messagebuffer.Clear(); + //this.Clear(); + } + + if (!EnableDisplayTimer) + { + AppendMessge(ListStr, fColor); + } + else + { + sMessageData newmsg = new sMessageData(); + newmsg.msg = ListStr; + newmsg.date = tm; + newmsg.fcolor = fColor; + messagebuffer.Enqueue(newmsg); + } + + mre.Set(); + } + + + //ar.Set(); + + ////색상변경 + //int StartIndex = this.TextLength; + //this.AppendText(ListStr + "\r\n"); + //this.Select(StartIndex, ListStr.Length); + //this.SelectionColor = fColor; + //this.ScrollToCaret(); + } + + public void AddMsg(DateTime tm, string Gubun, string[] Msg) + { + foreach (string m in Msg) + AddMsg(tm, Gubun, m); + + } + public void AddMsg(string Gubun, string Msg) + { + AddMsg(DateTime.Now, Gubun, Msg); + } + public void AddMsg(string Gubun, string[] Msg) + { + foreach (string m in Msg) + AddMsg(DateTime.Now, Gubun, m); + } + public void AddMsg(string Msg) + { + AddMsg(DateTime.Now, "NORMAL", Msg); + } + public void AddMsg(string[] Msg) + { + foreach (string m in Msg) + AddMsg(DateTime.Now, "NORMAL", m); + } + } + + [TypeConverterAttribute(typeof(ExpandableObjectConverter))] + public class sLogMessageColor + { + public string gubun { get; set; } + public Color color { get; set; } + public sLogMessageColor() + { + this.gubun = "NOR"; + this.color = Color.White; + } + public sLogMessageColor(string g, Color c) + { + this.gubun = g; + this.color = c; + } + } + +} diff --git a/QRValidation/Project/PUB.cs b/QRValidation/Project/PUB.cs new file mode 100644 index 0000000..121a366 --- /dev/null +++ b/QRValidation/Project/PUB.cs @@ -0,0 +1,1142 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.IO; +using System.Runtime.Serialization.Formatters.Binary; +using System.Text; +using System.Management; +using System.Data.SqlClient; +using System.Data; +using System.Threading.Tasks; +using System.Net.NetworkInformation; +using System.Windows.Forms; +using System.Net; +using WatsonWebsocket; +using System.Runtime.CompilerServices; +using System.Threading; +using Euresys.Open_eVision_22_12; +using Crevis.VirtualFG40Library; +using AR; + +namespace Project +{ + + public enum eTarget + { + Left = 0, + Right, + None = 9, + } + public enum remotelist + { + barcodeupdate, + } + public class remoteargs : EventArgs + { + public string strdata { get; set; } + public int CamIdx { get; set; } + public remotelist Command { get; set; } + public remoteargs(remotelist _cmd, int _camidx, string _strdata) + { + this.strdata = _strdata; + this.CamIdx = _camidx; + this.Command = _cmd; + } + } + + public static class PUB + { + public static Class.WebSocket[] wsock_ = new Class.WebSocket[2]; + public static AR.Log[] log_ = new AR.Log[2]; + + public static DateTime LastInputTime = DateTime.Now; + public static CSetting setting; + public static Boolean VisionLicense; + public static DateTime parsetime = DateTime.Now; + public static Flag flag; + + public static bool[] DetectReel = new bool[] { false, false }; + public static bool[] DetectConv = new bool[] { false, false }; + public static int[] DetectReelValue = new int[] { 0, 0 }; + public static int[] DetectConvValue = new int[] { 0, 0 }; + public static double[] ProcessTime = new double[] { 0, 0 }; + + public static string[] lastguid = new string[] { string.Empty, string.Empty }; + public static string[] lastdata = new string[] { string.Empty, string.Empty }; + public static string[] lastcmd = new string[] { string.Empty, string.Empty }; + public static string[] lastip = new string[] { string.Empty, string.Empty }; + + public static DateTime[] lastsend = new DateTime[] { DateTime.Now, DateTime.Now }; + public static DateTime[] lastsendStatus = new DateTime[] { DateTime.Now, DateTime.Now }; + public static Stack imgque = new Stack(); + public static Boolean[] _isCrevisOpen = new bool[] { false, false, false }; + public static Boolean[] _isCrevisACQ = new bool[] { false, false, false }; + public static bool[] IsLive = new bool[] { false, false }; + + public static eTarget GetTarget(int camidx) + { + if (camidx < 0 || camidx > 900) return eTarget.None; + if (camidx == PUB.setting.CameraIndexL) return eTarget.Left; + else if (camidx == PUB.setting.CameraIndexR && camidx != PUB.setting.CameraIndexL) return eTarget.Right; + else return eTarget.None; + } + // public static System.Windows.Forms.Panel pIvLeft, pIvRight; + public static event EventHandler RemoteCommand; + public static void RaiseRemoteCommand(remotelist cmd, int camidx, string data) + { + RemoteCommand?.Invoke(null, new remoteargs(cmd, camidx, data)); + } + + + public static void initCore() + { + //setting + setting = new CSetting(); + setting.Load(); + + //log + log_[0] = new AR.Log(); + log_[0].FileNameFormat = "{yyyyMMdd}_L"; + log_[0].TimeFormat = "yyyy-MM-dd HH:mm:ss.fff"; + + log_[1] = new AR.Log(); + log_[1].FileNameFormat = "{yyyyMMdd}_R"; + log_[1].TimeFormat = "yyyy-MM-dd HH:mm:ss.fff"; + + flag = new Flag(); + } + + + public static void LogFlush() + { + PUB.log_[0].Flush(); + PUB.log_[1].Flush(); + } + + public static string GetStackTraceInfo( + [CallerFilePath] string filenpath = null, + [CallerLineNumber] int linenumer = -1, + [CallerMemberName] string callMember = null) + { + + + var stackFrame = new System.Diagnostics.StackTrace(1).GetFrame(1); + string fileName = stackFrame.GetFileName(); + if (fileName.isEmpty()) fileName = filenpath; + + string methodName = stackFrame.GetMethod().ToString(); + if (methodName.isEmpty()) methodName = callMember; + + int lineNumber = stackFrame.GetFileLineNumber(); + if (linenumer != -1) lineNumber = linenumer; + + var TraceInfo = stackFrame.ToString(); + + return $"File:{fileName},Line:{lineNumber}\nMethod:{methodName}\n{TraceInfo}"; + + } + + public static Dictionary ComputerInfo() + { + string ip = ""; + string mac = ""; + // string prgmName = Application.ProductName; + + var nif = NetworkInterface.GetAllNetworkInterfaces(); + var host = Dns.GetHostEntry(Dns.GetHostName()); + string fullname = System.Net.Dns.GetHostEntry("").HostName; + foreach (IPAddress r in host.AddressList) + { + string str = r.ToString(); + + if (str != "" && str.Substring(0, 3) == "10.") + { + ip = str; + break; + } + } + + string rtn = string.Empty; + ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled='TRUE'"); + ManagementObjectSearcher query1 = new ManagementObjectSearcher(oq); + foreach (ManagementObject mo in query1.Get()) + { + string[] address = (string[])mo["IPAddress"]; + if (address[0] == ip && mo["MACAddress"] != null) + { + mac = mo["MACAddress"].ToString(); + break; + } + } + + var username = System.Environment.UserName; + var retval = new Dictionary(); + retval.Add("IP", ip); + retval.Add("MAC", mac); + retval.Add("USER", username); + retval.Add("HOST", fullname); + return retval; + + + + } + + public static Rectangle GetVisionOrientSearchArea( + Rectangle baserect, + int offsetX, + int offsetY, + out string VisionOrientMessage) + { + VisionOrientMessage = ""; + var newORectW = baserect.Width + offsetX; + var newORectH = baserect.Height + offsetY; + + var newORectX = baserect.X - ((newORectW - baserect.Width) / 2.0); + var newORectY = baserect.Y - ((newORectH - baserect.Height) / 2.0); + if (newORectX < 1) + { + newORectW += (int)newORectY; + newORectX = 1; + } + if (newORectY < 1) + { + newORectH += (int)newORectY; + newORectY = 1; + } + if (newORectW < 4) newORectW = 0; + if (newORectH < 4) newORectH = 0; + var newORect = new Rectangle((int)newORectX, (int)newORectY, (int)newORectW, (int)newORectH); + if (newORect.Width < 1 || newORect.Height < 1) + { + VisionOrientMessage = string.Format("Reference area size error({0},{1},{2},{3})", newORect.Left, newORect.Top, newORect.Width, newORect.Height); + return Rectangle.Empty; + } + else return newORect; + } + public static double GetFreeSpace(string driveletter) + { + try + { + var di = new System.IO.DriveInfo(driveletter); + var freespace = di.TotalFreeSpace; + var totalspace = di.TotalSize; + var freeSpaceRate = (freespace * 1.0 / totalspace) * 100.0; + return freeSpaceRate; + } + catch + { + return 100.0; + } + } + + public static string getSavePath(out double freespace) + { + Boolean path1Exist = false; + double freespace1 = 100.0; + string savePath1 = ""; + + freespace = 100.0; + + savePath1 = System.IO.Path.Combine(PUB.setting.Path_Data, "Images"); + if (savePath1 != "" && System.IO.Directory.Exists(savePath1)) + { + path1Exist = true; + //이폴더를 사용 + if (savePath1.StartsWith("\\")) return savePath1; + //남은잔량을 체크한다. + return savePath1; + } + + if (path1Exist) + { + freespace = freespace1; + return savePath1; + } + + //이제 문제가 좀 심각? (폴더가 없다) + var savePath = System.IO.Path.Combine(Util.CurrentPath, "Images"); + if (System.IO.Directory.Exists(savePath) == false) + System.IO.Directory.CreateDirectory(savePath); + + freespace = GetFreeSpace(savePath.Substring(0, 1)); + return savePath; + } + public static double ChangeValuePopup(double value, string title) + { + var f = AR.UTIL.InputBox(title, value.ToString()); + if (f.Item1) + { + var val = double.Parse(f.Item2); + return val; + } + else return value; + + } + public static VirtualFG40Library _virtualFG40; + public static DateTime[] _CrevisRunTime = new DateTime[] { DateTime.Now, DateTime.Now }; + public static DateTime[] _CrevisGrabTime = new DateTime[] { DateTime.Now, DateTime.Now }; + static System.Threading.ManualResetEvent[] mre_grab = new System.Threading.ManualResetEvent[] { + new System.Threading.ManualResetEvent(true), + new System.Threading.ManualResetEvent(true) + }; + public static EImageBW8[] OrgImage = new EImageBW8[] { null, null }; + public static Int32[] _hDevice = new Int32[] { -1, -1 }; + public static Int32[] _width = new Int32[] { 0, 0, 0 }; + public static Int32[] _height = new Int32[] { 0, 0, 0 }; + public static Int32[] _stride = new Int32[] { 0, 0, 0 }; + public static Int32[] _bufferSize = new Int32[] { 0, 0, 0 }; + public static IntPtr[] camPtr = new IntPtr[] { IntPtr.Zero, IntPtr.Zero }; + public static bool[] IsProcess = new bool[] { false, false }; + /// + /// 카메라버퍼에서 이미지를 읽는다 + /// + /// + /// + /// + public static Boolean CrevisGrab(int camIdx, Boolean DisplayImage, Panel Piv) + { + // 1. Excute Acquisition Start command + // 2. Grab Image using GrabImage + // 3. Image Display + // 4. Excute Acquisition Stop command + var camTarget = PUB.GetTarget(camIdx);// = eTarget.Left ? PUB.setting.CameraIndexL : PUB.setting.CameraIndexR; + if (camTarget == eTarget.None) return false; + var logIdx = camTarget == eTarget.Left ? 0 : 1; + + //작업가능여부확인 + if (mre_grab[camIdx].WaitOne(100) == false) return false; + + //너무빨리 실행되지 않게 한다 + var ts = DateTime.Now - _CrevisGrabTime[camIdx]; + var fpsterm = (int)(1000f / 12f); + if (ts.TotalMilliseconds < fpsterm) + { + System.Threading.Thread.Sleep((int)(fpsterm - ts.TotalMilliseconds)); + return false; + } + _CrevisGrabTime[camIdx] = DateTime.Now; + + Int32 status = VirtualFG40Library.MCAM_ERR_SUCCESS; + try + { + mre_grab[camIdx].Reset(); + + //데이터수집확인 + if (PUB._isCrevisACQ[camIdx] == false) + { + // Acqusition Start + status = _virtualFG40.AcqStart(_hDevice[camIdx]); + if (status == VirtualFG40Library.MCAM_ERR_RESOURCE_IN_USE) + { + if (_hDevice[camIdx] > 0) + _virtualFG40.AcqStop(_hDevice[camIdx]); + PUB._isCrevisACQ[camIdx] = false; + } + else if (status != VirtualFG40Library.MCAM_ERR_SUCCESS) + { + PUB.log_[logIdx].AddE(String.Format("Camera ACQ failed : {0}", status)); + if (_hDevice[camIdx] > 0) _virtualFG40.AcqStop(_hDevice[camIdx]); //실패하면 멈춘다 + PUB._isCrevisACQ[camIdx] = false; + } + else + { + PUB._isCrevisACQ[camIdx] = true; + PUB.log_[logIdx].AddI("Camera ACQ start"); + } + + //이미지수집에 실패했다면 진행하지 않는다. + if (PUB._isCrevisACQ[camIdx] == false) return false; + } + + //이미지 수집 + status = _virtualFG40.GrabImage(_hDevice[camIdx], camPtr[camIdx], (UInt32)_bufferSize[camIdx]); + if (status != VirtualFG40Library.MCAM_ERR_SUCCESS) + { + PUB.log_[logIdx].AddE($"Camera capture({camIdx}) error : {status}"); + if (_hDevice[camIdx] > 0) _virtualFG40.AcqStop(_hDevice[camIdx]); //실패하면 멈춘다 + PUB._isCrevisACQ[camIdx] = false; + PUB._isCrevisOpen[camIdx] = false; //연결여부도 끊는다 + _virtualFG40.CloseDevice(_hDevice[camIdx]); + return false; + } + else _CrevisGrabTime[camIdx] = DateTime.Now; + + //이미지생성 확인 + if (mre[camIdx].WaitOne(100)) + { + mre[camIdx].Reset(); + if (OrgImage[camIdx] == null || OrgImage[camIdx].IsVoid) + { + OrgImage[camIdx] = new EImageBW8(_width[camIdx], _height[camIdx]); + } + + //생성된 이미지 복사 + using (var grabimg = new EImageBW8()) + { + grabimg.SetImagePtr(_width[camIdx], _height[camIdx], camPtr[camIdx]); + grabimg.CopyTo(OrgImage[camIdx]); + //this.iv[camIdx].Invalidate(); //image update + DrawImage(camTarget, Piv, grabimg); + } + mre[camIdx].Set(); + } + + return true; + } + catch (Exception ex) + { + if (_hDevice[camIdx] > 0) _virtualFG40.AcqStop(_hDevice[camIdx]); //실패하면 멈춘다 + PUB._isCrevisACQ[camIdx] = false; + //var stackFrame = new System.Diagnostics.StackTrace(1).GetFrame(1); + //string fileName = stackFrame.GetFileName(); + //int lineNumber = stackFrame.GetFileLineNumber(); + //var TraceInfo = stackFrame.ToString(); + //var tracemsg = $"File:{fileName},Line:{lineNumber}\n{TraceInfo}"; + PUB.log_[logIdx].AddE($"Crevis Grab({camIdx}):{ex.Message}"); + + return false; + } + finally + { + mre_grab[camIdx].Set(); + } + + + } + public static string lastlogbarcode = string.Empty; + public static string[] lastbcd = new string[] { string.Empty, string.Empty }; + public static Boolean RequestNewRead = false; + + + public static ManualResetEvent[] mre = new ManualResetEvent[2]; + + static string[] prebarcodedata = new string[] { "", "" }; + /// + /// 이미지를 처리합니다 + /// 트리거가 없는 경우에는 릴존재여부와/컨베이어확인을 합니다. + /// 트리거가 있다면 릴 영역을 찾아서 ID를 스캔합니다 + /// + /// + /// + public static bool CreavisProcess(int camIdx, bool isTrigger, Panel Piv) + { + var camTarget = PUB.GetTarget(camIdx); + if (camTarget == eTarget.None) return false; + var logIdx = camTarget == eTarget.Left ? 0 : 1; + //이미지사용여부확인 + if (mre[camIdx].WaitOne(100) == false) return false; + mre[camIdx].Reset(); + + //이미지가 유효한 경우 처리한다 + if (OrgImage[camIdx] == null || OrgImage[camIdx].IsVoid) + { + mre[camIdx].Set(); + return false; + } + mre[camIdx].Reset(); + + System.Diagnostics.Stopwatch wat = new System.Diagnostics.Stopwatch(); + wat.Restart(); + + //검사영역확인 + var rect_reeldetect = camIdx == PUB.setting.CameraIndexL ? PUB.setting.ROI_ReelDetect_L : PUB.setting.ROI_ReelDetect_R; + var rect_convdetect = camIdx == PUB.setting.CameraIndexL ? PUB.setting.ROI_ConvDetect_L : PUB.setting.ROI_ConvDetect_R; + + try + { + // + //iv[camIdx].Shapes.Clear(); + string msg; + string bcdlist = string.Empty; + int DataCount = 0;// data1.Count; + Util_Vision.SCodeData codedata = new Util_Vision.SCodeData(); + List datalist = new List(); + List ptlist = new List(); + + + var prccnt = 0; + string barcodeMessage = string.Empty; + + //erode 값이 1과 3일때 차이가 발생함, 어두운 녹색라벨혹은, QR이 border에 붙은경우에 erode 3 은 서로 붙게되어서 필터링 되버림 + //CvInvoke.CvtColor(OrgImage, OrgCImage, ColorConversion.Gray2Bgr); + + //릴을 확인 한다 + //if (IsProcess[camidx]) + //{ + using (EImageEncoder enc = new EImageEncoder()) + { + using (var seg = enc.GrayscaleSingleThresholdSegmenter) + { + seg.WhiteLayerEncoded = true; + seg.BlackLayerEncoded = false; + seg.Mode = EGrayscaleSingleThreshold.Absolute; + seg.AbsoluteThreshold = 50; + } + + using (ECodedImage2 encimg = new ECodedImage2()) + { + using (EROIBW8 roiimge = new EROIBW8()) + { + roiimge.Attach(OrgImage[camIdx]); + roiimge.SetPlacement(500, 70, 3008, 2640); //컨베이어전체영역이ㄴ + enc.Encode(roiimge, encimg); + using (EObjectSelection selection = new EObjectSelection()) + { + selection.Clear(); + selection.AddObjects(encimg); + selection.RemoveUsingUnsignedIntegerFeature(EFeature.Area, 1000, ESingleThresholdMode.LessEqual); + PUB.DetectReelValue[camIdx] = (int)selection.ElementCount; + PUB.DetectReel[camIdx] = selection.ElementCount > 1; + } + } + + } + } + // + //else Pub.DetectReel = false; + + //컨베이어 확인여부 체크필요 + var roi_conv = camIdx == PUB.setting.CameraIndexL ? PUB.setting.ROI_ConvDetect_L : PUB.setting.ROI_ConvDetect_R; + if (roi_conv.IsEmpty == false) + { + using (EImageBW8 thimage = new EImageBW8(OrgImage[camIdx].Width, OrgImage[camIdx].Height)) + { + EasyImage.Copy(OrgImage[camIdx], thimage); + + var minresidu = EasyImage.AutoThreshold(thimage, EThresholdMode.MinResidue); + EasyImage.Threshold(thimage, thimage, minresidu.Value); + + using (EROIBW8 roimage = new EROIBW8()) + { + roimage.Attach(thimage); + roimage.SetPlacement(roi_conv.X, roi_conv.Y, roi_conv.Width, roi_conv.Height); + + EasyImage.PixelCount(roimage, new EBW8(64), new EBW8(86), out int val_below, + out int val_between, out int val_above); + PUB.DetectConvValue[camIdx] = val_below; + + var det_value = camIdx == PUB.setting.CameraIndexL ? PUB.setting.ConvDetectValueL : PUB.setting.ConvDetectValueR; + PUB.DetectConv[camIdx] = val_below < det_value; + } + } + } + else PUB.DetectConv[camIdx] = false; + + //QR코드를 읽는다 + List qrdataList = new List(); + + if (isTrigger) + { + var qrrlt = Util_Vision.DetectQR(OrgImage[camIdx], + null, prccnt++, out msg, + PUB.setting.erodevaluestr, + PUB.setting.GainOffsetListStr, + PUB.setting.blob_area_min, + PUB.setting.blob_area_max, + PUB.setting.blob_sigmaxy, + PUB.setting.blob_sigmayy, + PUB.setting.blob_sigmaxx, + PUB.setting.blob_minw, + PUB.setting.blob_maxw, + PUB.setting.blob_minh, + PUB.setting.blob_maxh, finddata: PUB.lastdata[camIdx]); + + qrdataList = qrrlt.Item1; + + PUB.ProcessTime[camIdx] = qrrlt.Item4; + var target = camIdx == PUB.setting.CameraIndexL ? eTarget.Left : eTarget.Right; + // var pan = target == eTarget.Left ? pIvLeft : pIvRight; + DrawImage(target, Piv, OrgImage[camIdx], qrrlt.Item1, qrrlt.Item2, qrrlt.Item3); + + DataCount = qrdataList.Count; + } + else DataCount = 0; + + //데이터가 확인되었다면 읽은 경우이다 + if (DataCount > 0) + { + var bidx = 0; + foreach (var item in qrdataList.OrderByDescending(t => t.sid)) + { + datalist.Add(item.data); + ptlist.Add(item.corner); + codedata = item; + + if (bcdlist.isEmpty() == false) bcdlist += "\n"; + bcdlist += $"[#{bidx}] {item.data}"; + bidx += 1; + } + } + + var tsrun = DateTime.Now - _CrevisRunTime[camIdx]; + var dispMessage = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " (" + tsrun.TotalMilliseconds.ToString("N0") + "ms)"; + if (barcodeMessage.isEmpty() == false) dispMessage += "\n" + barcodeMessage; + + if (bcdlist.isEmpty() == false && lastlogbarcode != bcdlist) + { + if(bcdlist.Equals(prebarcodedata[camIdx])==false) + { + PUB.log_[logIdx].Add("BARCODE", "New recognition:" + bcdlist); + prebarcodedata[camIdx] = bcdlist; + } + + lastlogbarcode = bcdlist; + RaiseRemoteCommand(remotelist.barcodeupdate, camIdx, bcdlist); //값이 변경되었으니 표시해준다 + + } + else if (bcdlist.isEmpty() && lastlogbarcode.isEmpty() == false) + { + RaiseRemoteCommand(remotelist.barcodeupdate, camIdx, string.Empty); + lastlogbarcode = string.Empty; + } + + var tsparse = DateTime.Now - parsetime; + if (tsparse.TotalMilliseconds >= PUB.setting.GrabDelaySlow) + { + //var data = codedata.data;//: String.Empty; + if (PUB.RequestNewRead) + { + //신규 요청받고 처음들어온 데이터는 처리하지 말자 - 211213 + PUB.RequestNewRead = false; + } + else + { + if (PUB.setting.SendRawData) //211210 + { + if (PUB.BarcodeParsing(camIdx, qrdataList, "CREVIS")) + parsetime = DateTime.Now; + else + parsetime = DateTime.Now.AddMilliseconds(50); + } + else + { + if (PUB.BarcodeParsing(camIdx, datalist, "CREVIS")) + parsetime = DateTime.Now; + else + parsetime = DateTime.Now.AddMilliseconds(50); + } + } + } + else //이떄에는 용량을 체크한다. 210805 + { + try + { + if (PUB.setting.AutoDeleteSeconds > 0 && PUB.setting.AutoDeleteSeconds < 99) + { + var di = new System.IO.DirectoryInfo(PUB.setting.ImageSavePath); + var ttime = DateTime.Now.AddSeconds(-PUB.setting.AutoDeleteSeconds); + var dellist = di.GetFiles().Where(t => t.CreationTime <= ttime).FirstOrDefault(); + if (dellist != null) dellist.Delete(); + } + } + catch { } + } + //iv[camIdx].Invalidate(); + + wat.Stop(); + PUB.ProcessTime[camIdx] = wat.ElapsedMilliseconds; + _CrevisRunTime[camIdx] = DateTime.Now; + return true; + } + catch (Exception ex) + { + //var tracemsg = $"File:{fileName},Line:{lineNumber}\n{TraceInfo}"; + PUB.log_[logIdx].AddE($"Crevis Process({camIdx}):" + ex.Message); + return false; + } + finally + { + wat.Stop(); + mre[camIdx].Set(); + } + + + } + + /// + /// 판넬이미지 변경 + /// + /// + /// + /// + /// 확인된 qr이 있다면 표시합니다. + /// 흰색영역이 마킹된 영역 + /// QR로 추정되는 영역 + public static void DrawImage(eTarget target, Panel p, EImageBW8 grabimg, + List qrdata = null, + List rect_area = null, + List rect_reel = null) + { + + var roi_reel = target == eTarget.Left ? PUB.setting.ROI_ReelDetect_L : PUB.setting.ROI_ReelDetect_R; + var roi_conv = target == eTarget.Left ? PUB.setting.ROI_ConvDetect_L : PUB.setting.ROI_ConvDetect_R; + var camIdx = target == eTarget.Left ? PUB.setting.CameraIndexL : PUB.setting.CameraIndexR; + + var detect_reel = PUB.DetectReel[camIdx]; + var detect_conv = PUB.DetectConv[camIdx]; + + var zoomx = (p.Width * 1f) / grabimg.Width; + var zoomy = (p.Height * 1f) / grabimg.Height; + + using (var g = p.CreateGraphics()) + { + grabimg.Draw(g, zoomx, zoomy); + + + //이미지의 중앙부분으 포커스를 계산한다. + float focus = 0f; + if (OrgImage[camIdx].IsVoid == false) + { + var fw = (int)(OrgImage[camIdx].Width * 0.4f); + var fh = (int)(OrgImage[camIdx].Height * 0.4f); + var fx = (int)((OrgImage[camIdx].Width - fw) / 2f); + var fy = (int)((OrgImage[camIdx].Height - fw) / 2f); + //var frect = new Rectangle(fx, fy, fw, fh); + g.DrawRectangle(Pens.Gold, fx * zoomx, fy * zoomy, fw * zoomx, fh * zoomy); + using (var img = new EROIBW8()) + { + img.Attach(OrgImage[camIdx]); + img.SetPlacement(fx, fy, fw, fh); + focus = EasyImage.Focusing(img); + } + } + + using (Font f = new Font("Consolas", 10, FontStyle.Bold)) + { + var msg = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + + $"\ncam:{camIdx},focus:{focus}" + + $"\nReel:{detect_reel},Value={PUB.DetectReelValue[camIdx]}" + + $"\nConv:{detect_conv},Value={PUB.DetectConvValue[camIdx]}"; + + g.DrawString(msg, f, + Brushes.White, 10, 10); + } + + if (roi_reel.IsEmpty == false) + { + var rect = roi_reel; + var x = rect.X * zoomx; + var y = rect.Y * zoomy; + var w = rect.Width * zoomx; + var h = rect.Height * zoomy; + g.DrawRectangle(Pens.Lime, x, y, w, h); + } + if (roi_conv.IsEmpty == false) + { + var rect = roi_conv; + var x = rect.X * zoomx; + var y = rect.Y * zoomy; + var w = rect.Width * zoomx; + var h = rect.Height * zoomy; + g.DrawRectangle(Pens.Magenta, x, y, w, h); + } + + //border + g.DrawRectangle(Pens.White, p.DisplayRectangle); + + //검색영역표시(영역검사) + if (rect_area != null && rect_area.Any()) + { + foreach (var item in rect_area) + { + var x = item.X * zoomx; + var y = item.Y * zoomy; + var w = item.Width * zoomx; + var h = item.Height * zoomy; + g.DrawRectangle(Pens.SkyBlue, x, y, w, h); + } + } + + //검색영역표시(QR검사) + if (rect_reel != null && rect_reel.Any()) + { + foreach (var item in rect_reel) + { + var x = item.X * zoomx; + var y = item.Y * zoomy; + var w = item.Width * zoomx; + var h = item.Height * zoomy; + g.DrawRectangle(Pens.Blue, x, y, w, h); + } + } + + + //바코드가 검색되었다면? + if (qrdata != null && qrdata.Any()) + { + using (Font f = new Font("Consolas", 10, FontStyle.Bold)) + { + foreach (var item in qrdata) + { + //각코너의 점을 표시한다. + var firstX = 0f; + var firstY = 0f; + foreach (var cn in item.corner) + { + var x = cn.X * zoomx; + var y = cn.Y * zoomy; + if (firstX == 0 && firstY == 0) + { + firstX = x; + firstY = y; + } + } + //첫번째 좌표에 데이터를 표시해준다 + g.DrawString(item.data, f, Brushes.Lime, firstX, firstY); + } + } + } + + g.Dispose(); + + + } + } + + public static string[] lastlog = new string[] { string.Empty, string.Empty }; + public static DateTime[] logtime = new DateTime[] { DateTime.Now, DateTime.Now }; + + + public static bool[] _trigger = new bool[] { false, false }; + public static DateTime[] triggerTime = new DateTime[] { DateTime.Now, DateTime.Now }; + public static Boolean[] IsTrigger = new bool[] { false, false }; + + public static DateTime TriggerStart = DateTime.Now; + public static Boolean BarcodeParsing(int camIdx, List data, string source, Boolean force = false) + { + var camTarget = PUB.GetTarget(camIdx); + if (camTarget == eTarget.None) return false; + var logIdx = camTarget == eTarget.Left ? 0 : 1; + var datatagstr = string.Empty; + foreach (var item in data) + if (item.data.isEmpty() == false) + { + if (datatagstr.Length > 0) datatagstr += "\n"; + datatagstr += item.data; + } + + PUB.lastbcd[camIdx] = datatagstr; + + //스트림데이터가 꺼져있다면 처리하지 않는다. + if (force == false && PUB.setting.DisableStreamData) + { + //트리거모드일때 보내는 플래그가 없다면 보내지 않는다. + if (PUB.IsTrigger[camIdx] == false) + { + PUB.log_[logIdx].AddAT($"[SKIP-SEND] No Trigger Signal"); + return false; + } + } + //TriggerSend = false; + + //통신이 연결되어있지 않다면 처리하지 않는다 + if (PUB.wsock_[logIdx].IsListening == false || PUB.wsock_[logIdx].ListClients().Count() < 1) + { + PUB.log_[logIdx].AddAT($"[SKIP-SEND] Disconnected"); + return false; + } + + //파일을 저장한다. + var path = ""; + if (PUB.mre[camIdx].WaitOne(100)) + { + try + { + PUB.mre[camIdx].Reset(); + path = System.IO.Path.Combine(PUB.setting.ImageSavePath, $"[{camIdx}]barcode_{DateTime.Now.ToString("HHmmssfff")}.jpg"); + var fi = new System.IO.FileInfo(path); + if (fi.Directory.Exists == false) fi.Directory.Create(); + PUB.OrgImage[camIdx].Save(fi.FullName); + } + catch (Exception ex) + { + PUB.log_[logIdx].AddE($"Save failed {ex.Message}"); + } + finally + { + PUB.mre[camIdx].Set(); + } + } + else + { + PUB.log_[logIdx].AddE($"Save failed (object is locked)"); + } + + //데이터 생성 + var msg = new + { + guid = PUB.lastguid[camIdx], + command = PUB.lastcmd[camIdx], + data = data, + time = DateTime.Now.ToString(), + file = path + }; + + + var json = Newtonsoft.Json.JsonConvert.SerializeObject(msg); + Boolean sendok = false; + try + { + if (PUB.setting.Log_BarcodeTx) + { + if (lastlog[camIdx] == datatagstr) + { + var tsee = DateTime.Now - logtime[camIdx]; + if (tsee.TotalSeconds > 60) + { + PUB.log_[logIdx].AddI(json); + lastlog[camIdx] = datatagstr; + logtime[camIdx] = DateTime.Now; + } + } + else + { + PUB.log_[logIdx].AddI(json); + lastlog[camIdx] = datatagstr; + } + } + //PUB.ws[camIdx].ListClients().ToList().ForEach(t => PUB.ws[camIdx].SendAsync(t, json).Wait()); + PUB.lastsend[camIdx] = DateTime.Now; + Send_WSock(camTarget, json); + if (msg.guid.isEmpty() == false) + PUB.log_[logIdx].Add("Tx", json); + sendok = true; + } + catch (Exception ex) + { + PUB.log_[logIdx].AddE($"Send failed {ex.Message}"); + sendok = false; + } + + if (sendok == false) + { + try + { + PUB.log_[logIdx].AddAT("Closing server due to send failure"); + Time_WS_Listen[camIdx] = DateTime.Now; + PUB.wsock_[logIdx].Stop(); + } + catch (Exception ex) + { + PUB.log_[logIdx].AddE($"Server shutdown failed:{ex.Message}"); + } + return false; + } + else return true; + } + public static ManualResetEvent[] mre_send = new ManualResetEvent[2]; + public static bool Send_WSock(eTarget camTarget, string data) + { + if (camTarget == eTarget.None) return false; + var camIdx = camTarget == eTarget.Left ? PUB.setting.CameraIndexL : PUB.setting.CameraIndexR; + var logIdx = camTarget == eTarget.Left ? 0 : 1; + if (PUB.wsock_[logIdx].IsListening == false || PUB.wsock_[logIdx].ListClients().Count() < 1) + { + PUB.log_[logIdx].AddAT($"[IGNORE-SEND] Not Listening or No Clients"); + return false; + } + + if (mre_send[camIdx].WaitOne(1000) == false) + { + PUB.log_[logIdx].AddE($"send error by mre-lock"); + return false; + } + mre_send[camIdx].Reset(); + var ws = PUB.wsock_[logIdx]; + try + { + ws.ListClients().ToList().ForEach(t => ws.SendAsync(t, data).Wait()); + PUB.log_[logIdx].AddI($"send Complete {data}"); + return true; + } + catch (Exception ex) + { + PUB.log_[logIdx].AddE($"send error by {ex.Message}"); + return false; + } + finally + { + mre_send[camIdx].Set(); + } + + } + //마지막으로 전송에 사용한 데이터를 임시 저장한다. -211213 // 데이터 missing 현상 관련 처리 작업 + public static string[] lastTxGuid = new string[] { string.Empty, string.Empty }; + public static string[] lastTxRID = new string[] { string.Empty, string.Empty }; + public static DateTime lastTxTime = DateTime.Now; + + public static Boolean BarcodeParsing(int camIdx, List data, string source) + { + if (data == null || data.Count < 1) return false; + + PUB.lastbcd[camIdx] = string.Join("|", data); + var camTarget = PUB.GetTarget(camIdx); + if (camTarget == eTarget.None) return false; + var logIdx = camTarget == eTarget.Left ? 0 : 1; + + //스트림데이터가 꺼져있다면 처리하지 않는다. + if (PUB.setting.DisableStreamData) + { + //트리거모드일때 보내는 플래그가 없다면 보내지 않는다. + if (IsTrigger[camIdx] == false) return false; + } + + + //통신이 연결되어있지 않다면 처리하지 않는다 + if (PUB.wsock_[logIdx].IsListening == false || PUB.wsock_[logIdx].ListClients().Count() < 1) return false; + + //파일을 저장한다. + var path = ""; + if (PUB.mre[camIdx].WaitOne(100)) + { + + try + { + path = System.IO.Path.Combine(PUB.setting.ImageSavePath, $"[{camIdx}]barcode_{DateTime.Now.ToString("HHmmssfff")}.jpg"); + PUB.mre[camIdx].Reset(); + var fi = new System.IO.FileInfo(path); + if (fi.Directory.Exists == false) fi.Directory.Create(); + PUB.OrgImage[camIdx].Save(fi.FullName); + } + catch (Exception ex) + { + PUB.log_[logIdx].AddE($"Save failed {ex.Message}"); + } + finally + { + PUB.mre[camIdx].Set(); + } + } + + + //데이터 생성 + var msg = new + { + guid = PUB.lastguid[camIdx], + command = PUB.lastcmd[camIdx], + data = data, + time = DateTime.Now.ToString(), + file = path + }; + + //마지막으로전송한 RID값이 동일한경우 + if (lastTxRID[camIdx].Trim() == PUB.lastbcd[camIdx].Trim()) + { + if (lastTxGuid[camIdx].Trim() != PUB.lastguid[camIdx].Trim()) + { + var tsTx = DateTime.Now - lastTxTime; + if (tsTx.TotalSeconds < 5) + { + //GUID가 다른데 rid가 같다 / + //missing data 의 패턴잉ㅆ다. 2113 + //이때는 전송하지 않고 그냥 skip하게한다. + PUB.lastguid[camIdx] = string.Empty; + PUB.lastcmd[camIdx] = string.Empty; + PUB.log_[logIdx].Add($"Only GUID of last transmission data differs, processing skip. (within 5 seconds only)"); + return false; + } + } + } + + //마지막으로 전송한 데이터 값 저장 + lastTxGuid[camIdx] = PUB.lastguid[camIdx]; + lastTxRID = PUB.lastbcd; + lastTxTime = DateTime.Now; + + + var json = Newtonsoft.Json.JsonConvert.SerializeObject(msg); + Boolean sendok = false; + try + { + if (PUB.lastbcd[camIdx].isEmpty() == false && PUB.setting.Log_BarcodeTx) + { + if (lastlog[camIdx] == PUB.lastbcd[camIdx]) + { + var tsee = DateTime.Now - logtime[camIdx]; + if (tsee.TotalSeconds > 60) + { + PUB.log_[logIdx].AddI(json); + lastlog[camIdx] = PUB.lastbcd[camIdx]; + logtime[camIdx] = DateTime.Now; + } + } + else + { + PUB.log_[logIdx].AddI(json); + lastlog[camIdx] = PUB.lastbcd[camIdx]; + } + } + //PUB.ws[camIdx].ListClients().ToList().ForEach(t => PUB.ws[camIdx].SendAsync(t, json).Wait()); + PUB.lastsend[camIdx] = DateTime.Now; + Send_WSock(camTarget, json); + if (msg.guid.isEmpty() == false) + PUB.log_[logIdx].Add("Tx", json); + + sendok = true; + } + catch (Exception ex) + { + PUB.log_[logIdx].Add($"Send failed {ex.Message}"); + sendok = false; + } + + if (sendok == false) + { + try + { + PUB.log_[logIdx].AddAT("Closing server due to send failure"); + PUB.Time_WS_Listen[camIdx] = DateTime.Now; + PUB.wsock_[logIdx].Stop(); + } + catch (Exception ex) + { + PUB.log_[logIdx].AddE($"Server shutdown failed:{ex.Message}"); + } + try + { + PUB.log_[logIdx].AddAT("Closing socket due to send failure"); + PUB.wsock_[logIdx].Stop(); + } + catch (Exception ex) + { + PUB.log_[logIdx].AddE($"Socket shutdown failed:{ex.Message}"); + } + return false; + } + else return true; + } + + public static DateTime[] Time_WS_Connected = new DateTime[2]; + public static DateTime[] Time_WS_Disconnected = new DateTime[2]; + public static DateTime[] Time_WS_Listen = new DateTime[2]; + public static DateTime[] Time_WS_Listen_Try = new DateTime[2]; + public static DateTime[] Time_WS_Recv = new DateTime[2]; + public static string[] WS_LastRecv = new string[] { string.Empty, string.Empty }; + public static string[] WS_LastSend = new string[] { string.Empty, string.Empty }; + + + public static void ChangeUIPopup(System.Windows.Forms.NumericUpDown valueCtl) + { + var value = valueCtl.Value.ToString(); + var f = AR.UTIL.InputBox("input value", value);// new Dialog.fInput(value); + if(f.Item1 == true) + { + var val = decimal.Parse(f.Item2); + if (val < valueCtl.Minimum) + { + UTIL.MsgE(string.Format("Minimum input value is {0}.", valueCtl.Minimum)); + val = valueCtl.Minimum; + } + if (val > valueCtl.Maximum) + { + UTIL.MsgE(string.Format("Maximum input value is {0}.", valueCtl.Maximum)); + val = valueCtl.Maximum; + } + valueCtl.Value = val; + } + + } + + } +} diff --git a/QRValidation/Project/Program.cs b/QRValidation/Project/Program.cs new file mode 100644 index 0000000..825e9f7 --- /dev/null +++ b/QRValidation/Project/Program.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Resources; +using System.Threading; +using System.Diagnostics; + +namespace Project +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); + AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); + if (CheckSingleInstance() == false) return; + PUB.initCore(); + Application.Run(new fMain()); + } + + static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + string emsg = "Fatal Error(UHE)\n\n" + e.ExceptionObject.ToString(); + PUB.log_[0].AddE(emsg); + PUB.log_[0].Flush(); + PUB.log_[1].AddE(emsg); + PUB.log_[1].Flush(); + Util.SaveBugReport(emsg); + Shutdown(); + var f = new fErrorException(emsg); + f.ShowDialog(); + Application.ExitThread(); + } + + /// + /// Check for duplicate execution prevention + /// + /// true if single instance, false if duplicate execution + static bool CheckSingleInstance() + { + string processName = Process.GetCurrentProcess().ProcessName; + Process[] processes = Process.GetProcessesByName(processName); + + if (processes.Length > 1) + { + // 중복실행 감지 + string message = $"⚠️ {Application.ProductName} program is already running!\n\n" + + "Cannot run multiple programs simultaneously.\n\n" + + "Please select a solution:"; + + var result = MessageBox.Show(message + "\n\nYes(Y): Terminate existing program and start new\nNo(N): Cancel current execution", + "Duplicate Execution Detected", + MessageBoxButtons.YesNo, + MessageBoxIcon.Warning); + + if (result == DialogResult.Yes) + { + // 기존 프로세스들을 종료 + try + { + int currentProcessId = Process.GetCurrentProcess().Id; + foreach (Process process in processes) + { + if (process.Id != currentProcessId) + { + process.Kill(); + process.WaitForExit(3000); // 3초 대기 + } + } + + // 잠시 대기 후 계속 진행 + Thread.Sleep(1000); + return true; + } + catch (Exception ex) + { + MessageBox.Show($"An error occurred while terminating the existing program:\n{ex.Message}\n\n" + + "Please terminate manually in Task Manager.", + "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + } + else + { + // 현재 실행을 취소 + return false; + } + } + + return true; // 단일 인스턴스 + } + + + + static void Shutdown() + { + PUB.log_[0].Add("Program Close"); + PUB.log_[0].Flush(); + PUB.log_[1].Add("Program Close"); + PUB.log_[1].Flush(); + } + + static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) + { + string emsg = "Fatal Error(ATE)\n\n" + e.Exception.ToString(); + PUB.log_[0].AddE(emsg); + PUB.log_[0].Flush(); + PUB.log_[1].AddE(emsg); + PUB.log_[1].Flush(); + AR.UTIL.SaveBugReport(emsg); + Shutdown(); + var f = new fErrorException(emsg); + f.ShowDialog(); + Application.ExitThread(); + } + } +} diff --git a/QRValidation/Project/Properties/AssemblyInfo.cs b/QRValidation/Project/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6e8b01b --- /dev/null +++ b/QRValidation/Project/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 +// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 +// 이러한 특성 값을 변경하세요. +[assembly: AssemblyTitle("※ Crevis QR-Code Reader")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Amkor K4")] +[assembly: AssemblyProduct("※ Crevis QR-Code Reader")] +[assembly: AssemblyCopyright("Copyright ©Amkor-EET 2021")] +[assembly: AssemblyTrademark("EET")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("65f3e762-800c-772e-1818-b444642ec59f")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로 +// 지정되도록 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("25.01.13.1120")] +[assembly: AssemblyFileVersion("25.01.13.1120")] diff --git a/QRValidation/Project/Properties/Resources.Designer.cs b/QRValidation/Project/Properties/Resources.Designer.cs new file mode 100644 index 0000000..2c87022 --- /dev/null +++ b/QRValidation/Project/Properties/Resources.Designer.cs @@ -0,0 +1,173 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace Project.Properties { + using System; + + + /// + /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. + /// + // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder + // 클래스에서 자동으로 생성되었습니다. + // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을 + // 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.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("Project.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 icons8_cancel_40 { + get { + object obj = ResourceManager.GetObject("icons8-cancel-40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_checked_40 { + get { + object obj = ResourceManager.GetObject("icons8-checked-40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_checked_radio_button_48 { + get { + object obj = ResourceManager.GetObject("icons8-checked-radio-button-48", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_copy_40 { + get { + object obj = ResourceManager.GetObject("icons8-copy-40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_exercise_40 { + get { + object obj = ResourceManager.GetObject("icons8-exercise-40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_new_40 { + get { + object obj = ResourceManager.GetObject("icons8-new-40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_no_running_40 { + get { + object obj = ResourceManager.GetObject("icons8-no-running-40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_plus_40 { + get { + object obj = ResourceManager.GetObject("icons8-plus-40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_running_40 { + get { + object obj = ResourceManager.GetObject("icons8-running-40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_save_40 { + get { + object obj = ResourceManager.GetObject("icons8-save-40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap icons8_unavailable_40 { + get { + object obj = ResourceManager.GetObject("icons8-unavailable-40", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/QRValidation/Project/Properties/Resources.resx b/QRValidation/Project/Properties/Resources.resx new file mode 100644 index 0000000..946ae84 --- /dev/null +++ b/QRValidation/Project/Properties/Resources.resx @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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\icons8-plus-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-no-running-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-save-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-unavailable-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-new-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-checked-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-exercise-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-running-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-checked-radio-button-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-cancel-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\icons8-copy-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/QRValidation/Project/Properties/Settings.Designer.cs b/QRValidation/Project/Properties/Settings.Designer.cs new file mode 100644 index 0000000..7d14313 --- /dev/null +++ b/QRValidation/Project/Properties/Settings.Designer.cs @@ -0,0 +1,50 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace Project.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.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; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("BLUPRT.CBX012020_rzDFf7pQAsCS")] + public string chilkat { + get { + return ((string)(this["chilkat"])); + } + set { + this["chilkat"] = value; + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.WebServiceUrl)] + [global::System.Configuration.DefaultSettingValueAttribute("http://k1xip00.amkor.co.kr:50000/XISOAPAdapter/MessageServlet?senderParty=&sender" + + "Service=eCIM_ATK&receiverParty=&receiverService=&interface=ZK_RFID_TRANS_SEQ&int" + + "erfaceNamespace=urn%3Asap-com%3Adocument%3Asap%3Arfc%3Afunctions")] + public string Logistics_Vision_wr_ZK_RFID_TRANS_SEQService { + get { + return ((string)(this["Logistics_Vision_wr_ZK_RFID_TRANS_SEQService"])); + } + } + } +} diff --git a/QRValidation/Project/Properties/Settings.settings b/QRValidation/Project/Properties/Settings.settings new file mode 100644 index 0000000..bc6c0fb --- /dev/null +++ b/QRValidation/Project/Properties/Settings.settings @@ -0,0 +1,12 @@ + + + + + + BLUPRT.CBX012020_rzDFf7pQAsCS + + + http://k1xip00.amkor.co.kr:50000/XISOAPAdapter/MessageServlet?senderParty=&senderService=eCIM_ATK&receiverParty=&receiverService=&interface=ZK_RFID_TRANS_SEQ&interfaceNamespace=urn%3Asap-com%3Adocument%3Asap%3Arfc%3Afunctions + + + \ No newline at end of file diff --git a/QRValidation/Project/Resources/icons8-cancel-40.png b/QRValidation/Project/Resources/icons8-cancel-40.png new file mode 100644 index 0000000..7d1f298 Binary files /dev/null and b/QRValidation/Project/Resources/icons8-cancel-40.png differ diff --git a/QRValidation/Project/Resources/icons8-checked-40.png b/QRValidation/Project/Resources/icons8-checked-40.png new file mode 100644 index 0000000..8d08969 Binary files /dev/null and b/QRValidation/Project/Resources/icons8-checked-40.png differ diff --git a/QRValidation/Project/Resources/icons8-checked-radio-button-48.png b/QRValidation/Project/Resources/icons8-checked-radio-button-48.png new file mode 100644 index 0000000..7130e2f Binary files /dev/null and b/QRValidation/Project/Resources/icons8-checked-radio-button-48.png differ diff --git a/QRValidation/Project/Resources/icons8-copy-40.png b/QRValidation/Project/Resources/icons8-copy-40.png new file mode 100644 index 0000000..29c6ef5 Binary files /dev/null and b/QRValidation/Project/Resources/icons8-copy-40.png differ diff --git a/QRValidation/Project/Resources/icons8-exercise-40.png b/QRValidation/Project/Resources/icons8-exercise-40.png new file mode 100644 index 0000000..ee72597 Binary files /dev/null and b/QRValidation/Project/Resources/icons8-exercise-40.png differ diff --git a/QRValidation/Project/Resources/icons8-new-40.png b/QRValidation/Project/Resources/icons8-new-40.png new file mode 100644 index 0000000..85f3a28 Binary files /dev/null and b/QRValidation/Project/Resources/icons8-new-40.png differ diff --git a/QRValidation/Project/Resources/icons8-no-running-40.png b/QRValidation/Project/Resources/icons8-no-running-40.png new file mode 100644 index 0000000..be7c877 Binary files /dev/null and b/QRValidation/Project/Resources/icons8-no-running-40.png differ diff --git a/QRValidation/Project/Resources/icons8-plus-40.png b/QRValidation/Project/Resources/icons8-plus-40.png new file mode 100644 index 0000000..aab1bc3 Binary files /dev/null and b/QRValidation/Project/Resources/icons8-plus-40.png differ diff --git a/QRValidation/Project/Resources/icons8-running-40.png b/QRValidation/Project/Resources/icons8-running-40.png new file mode 100644 index 0000000..6329e3a Binary files /dev/null and b/QRValidation/Project/Resources/icons8-running-40.png differ diff --git a/QRValidation/Project/Resources/icons8-save-40.png b/QRValidation/Project/Resources/icons8-save-40.png new file mode 100644 index 0000000..a096fb1 Binary files /dev/null and b/QRValidation/Project/Resources/icons8-save-40.png differ diff --git a/QRValidation/Project/Resources/icons8-unavailable-40.png b/QRValidation/Project/Resources/icons8-unavailable-40.png new file mode 100644 index 0000000..ecf2604 Binary files /dev/null and b/QRValidation/Project/Resources/icons8-unavailable-40.png differ diff --git a/QRValidation/Project/Setting/CSetting.cs b/QRValidation/Project/Setting/CSetting.cs new file mode 100644 index 0000000..71b75d7 --- /dev/null +++ b/QRValidation/Project/Setting/CSetting.cs @@ -0,0 +1,195 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.ComponentModel; +using AR; +using System.Drawing.Design; + +namespace Project +{ + public class CSetting : AR.Setting + { + public System.Drawing.Rectangle ROI_ReelDetect_L { get; set; } + public System.Drawing.Rectangle ROI_ReelDetect_R { get; set; } + public System.Drawing.Rectangle ROI_ConvDetect_L { get; set; } + public System.Drawing.Rectangle ROI_ConvDetect_R { get; set; } + + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int ConvDetectValueL { get; set; } + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int ConvDetectValueR { get; set; } + + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string cameraname { get; set; } + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int GrabDelayFast { get; set; } + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int GrabDelaySlow { get; set; } + + [Description("Unit(seconds)"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int TriggerTimeout { get; set; } + + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int AutoDeleteSeconds { get; set; } + public Boolean SendRawData { get; set; } + public Boolean DisableStreamData { get; set; } + public Boolean EnableDupRun { get; set; } + + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string ImageSavePath { get; set; } + public Boolean Log_AllBarcode { get; set; } + public Boolean Log_Ping { get; set; } + public Boolean Log_BarcodeTx { get; set; } + public Boolean Log_BarcodeRx { get; set; } + + [Category("Developer Setting"), DisplayName("Listening Port(Left)"), + Description("Listening port for server communication(TCP) - Default: 7979")] + public int listenPortL { get; set; } + [Category("Developer Setting"), DisplayName("Listening Port(Right)"), + Description("Listening port for server communication(TCP) - Default: 7980")] + public int listenPortR { get; set; } + + [Category("Save Data Path"), DisplayName("Data Save Path")] + public string Path_Data { get; set; } + + + [Category("Vision"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public int processCount { get; set; } + [Category("Vision"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public string erodevaluestr { get; set; } + [Category("Vision"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public uint blob_area_min { get; set; } + [Category("Vision"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public uint blob_area_max { get; set; } + [Category("Vision"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float blob_sigmaxy { get; set; } + [Category("Vision"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float blob_sigmayy { get; set; } + [Category("Vision"), Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float blob_sigmaxx { get; set; } + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float blob_rosscaleX { get; set; } + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float blob_rosscaleY { get; set; } + + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float blob_minw { get; set; } + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float blob_maxw { get; set; } + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float blob_minh { get; set; } + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor))] + public float blob_maxh { get; set; } + + [Category("Vision")] + public Boolean SaveErrorImage { get; set; } + [Category("Vision")] + public string GainOffsetListStr { get; set; } + + + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor)), Description("Enter -1 if not used")] + public int CameraIndexL { get; set; } + [Editor(typeof(MyUITypeEditor), typeof(UITypeEditor)), Description("Enter -1 if not used")] + public int CameraIndexR { get; set; } + + + [Category("General Setting"), Browsable(false)] + public string Password_Setup { get; set; } + + [Category("General Setting"), DisplayName("Full Screen Window State"), + Description("Use full screen mode.")] + public Boolean FullScreen { get; set; } + + [Category("General Setting")] + public Boolean EnableDebugMode { get; set; } + + public override void AfterLoad() + { + if (blob_minh == 0 && blob_maxh == 0) + { + blob_minh = 70; + blob_maxh = 190; + } + if (blob_minw == 0 && blob_maxw == 0) + { + blob_minw = 70; + blob_maxw = 190; + } + //if (TriggerTimeout == 0) TriggerTimeout = 30; + if (GrabDelayFast == 0) GrabDelayFast = 250; + if (GrabDelaySlow == 0) GrabDelaySlow = 500; + if (ImageSavePath.isEmpty()) ImageSavePath = Util.CurrentPath; + + if (AutoDeleteSeconds == 0) AutoDeleteSeconds = 10; + + if (blob_rosscaleX == 0) blob_rosscaleX = 1.5f; + + if (blob_rosscaleY == 0) blob_rosscaleY = 1.5f; + + if (processCount == 0 && blob_area_min == 0) + { + processCount = 6; + erodevaluestr = "3,1"; + blob_area_min = 5000; + blob_area_max = 50000; + blob_sigmaxy = 500f; + blob_sigmaxx = 5000f; + blob_sigmayy = 500f; + } + + if (GainOffsetListStr.isEmpty()) + { + GainOffsetListStr = "1,0;1.3,0;1,50;1,-50;3,50;0.5,-20;2.5,150;2,0"; + } + + if (listenPortL == 0) listenPortL = 7979; + if (listenPortR == 0) listenPortR = 7980; + if (Password_Setup.isEmpty()) Password_Setup = "0000"; + if (Path_Data == "") + Path_Data = System.IO.Path.Combine(Util.CurrentPath, "SaveData"); + + try + { + if (System.IO.Directory.Exists(Path_Data) == false) + System.IO.Directory.CreateDirectory(Path_Data); + + } + catch + { + + } + + //if (Password_User.isEmpty()) Password_User = "9999"; + + + } + public override void AfterSave() + { + //throw new NotImplementedException(); + } + + public void CopyTo(CSetting dest) + { + //이곳의 모든 쓰기가능한 속성값을 대상에 써준다. + Type thClass = this.GetType(); + foreach (var method in thClass.GetMethods()) + { + var parameters = method.GetParameters(); + if (!method.Name.StartsWith("get_")) continue; + + string keyname = method.Name.Substring(4); + string methodName = method.Name; + + object odata = GetType().GetMethod(methodName).Invoke(this, null); + var wMethod = dest.GetType().GetMethod(Convert.ToString("set_") + keyname); + if (wMethod != null) wMethod.Invoke(dest, new object[] { odata }); + } + } + } + + + + + +} diff --git a/QRValidation/Project/Setting/fSetting.Designer.cs b/QRValidation/Project/Setting/fSetting.Designer.cs new file mode 100644 index 0000000..9c92450 --- /dev/null +++ b/QRValidation/Project/Setting/fSetting.Designer.cs @@ -0,0 +1,497 @@ +namespace Project +{ + partial class fSetting + { + /// + /// 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(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fSetting)); + this.button1 = new System.Windows.Forms.Button(); + this.panel1 = new System.Windows.Forms.Panel(); + this.propertyGrid1 = new System.Windows.Forms.PropertyGrid(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.panel2 = new System.Windows.Forms.Panel(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.bindingNavigatorAddNewItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel(); + this.bindingNavigatorDeleteItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorPositionItem = new System.Windows.Forms.ToolStripTextBox(); + this.bindingNavigatorSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButton5 = new System.Windows.Forms.ToolStripButton(); + this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel(); + this.toolStripButton6 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton7 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton8 = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripTextBox1 = new System.Windows.Forms.ToolStripTextBox(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButton9 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton10 = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButton11 = new System.Windows.Forms.ToolStripButton(); + this.toolStripLabel2 = new System.Windows.Forms.ToolStripLabel(); + this.toolStripButton12 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton13 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton14 = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripTextBox2 = new System.Windows.Forms.ToolStripTextBox(); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButton15 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton16 = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.errorProvider1 = new System.Windows.Forms.ErrorProvider(this.components); + this.panel1.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.panel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.errorProvider1)).BeginInit(); + this.SuspendLayout(); + // + // button1 + // + this.button1.Dock = System.Windows.Forms.DockStyle.Fill; + this.button1.Location = new System.Drawing.Point(5, 5); + this.button1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(601, 53); + this.button1.TabIndex = 0; + this.button1.Text = "Save(&S)"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // panel1 + // + this.panel1.Controls.Add(this.button1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel1.Location = new System.Drawing.Point(0, 557); + this.panel1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.panel1.Name = "panel1"; + this.panel1.Padding = new System.Windows.Forms.Padding(5); + this.panel1.Size = new System.Drawing.Size(611, 63); + this.panel1.TabIndex = 1; + // + // propertyGrid1 + // + this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill; + this.propertyGrid1.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.propertyGrid1.LineColor = System.Drawing.SystemColors.ControlDark; + this.propertyGrid1.Location = new System.Drawing.Point(3, 3); + this.propertyGrid1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.propertyGrid1.Name = "propertyGrid1"; + this.propertyGrid1.Size = new System.Drawing.Size(597, 518); + this.propertyGrid1.TabIndex = 1; + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Location = new System.Drawing.Point(0, 0); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(611, 557); + this.tabControl1.TabIndex = 2; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.propertyGrid1); + this.tabPage1.Location = new System.Drawing.Point(4, 29); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(603, 524); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Advanced"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // panel2 + // + this.panel2.Controls.Add(this.textBox1); + this.panel2.Controls.Add(this.label1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel2.Location = new System.Drawing.Point(3, 322); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(597, 199); + this.panel2.TabIndex = 6; + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(10, 38); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(575, 148); + this.textBox1.TabIndex = 2; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(8, 11); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(61, 12); + this.label1.TabIndex = 0; + this.label1.Text = "Mail Subject:"; + // + // bindingNavigatorAddNewItem + // + this.bindingNavigatorAddNewItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorAddNewItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorAddNewItem.Image"))); + this.bindingNavigatorAddNewItem.Name = "bindingNavigatorAddNewItem"; + this.bindingNavigatorAddNewItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorAddNewItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorAddNewItem.Text = "Add New"; + // + // bindingNavigatorCountItem + // + this.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem"; + this.bindingNavigatorCountItem.Size = new System.Drawing.Size(27, 22); + this.bindingNavigatorCountItem.Text = "/{0}"; + this.bindingNavigatorCountItem.ToolTipText = "Total items"; + // + // bindingNavigatorDeleteItem + // + this.bindingNavigatorDeleteItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorDeleteItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorDeleteItem.Image"))); + this.bindingNavigatorDeleteItem.Name = "bindingNavigatorDeleteItem"; + this.bindingNavigatorDeleteItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorDeleteItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorDeleteItem.Text = "Delete"; + // + // bindingNavigatorMoveFirstItem + // + this.bindingNavigatorMoveFirstItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveFirstItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveFirstItem.Image"))); + this.bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem"; + this.bindingNavigatorMoveFirstItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveFirstItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveFirstItem.Text = "Move first"; + // + // bindingNavigatorMovePreviousItem + // + this.bindingNavigatorMovePreviousItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMovePreviousItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMovePreviousItem.Image"))); + this.bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem"; + this.bindingNavigatorMovePreviousItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMovePreviousItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMovePreviousItem.Text = "Move previous"; + // + // bindingNavigatorSeparator + // + this.bindingNavigatorSeparator.Name = "bindingNavigatorSeparator"; + this.bindingNavigatorSeparator.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorPositionItem + // + this.bindingNavigatorPositionItem.AccessibleName = "Position"; + this.bindingNavigatorPositionItem.AutoSize = false; + this.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem"; + this.bindingNavigatorPositionItem.Size = new System.Drawing.Size(50, 23); + this.bindingNavigatorPositionItem.Text = "0"; + this.bindingNavigatorPositionItem.ToolTipText = "Current position"; + // + // bindingNavigatorSeparator1 + // + this.bindingNavigatorSeparator1.Name = "bindingNavigatorSeparator1"; + this.bindingNavigatorSeparator1.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorMoveNextItem + // + this.bindingNavigatorMoveNextItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveNextItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveNextItem.Image"))); + this.bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem"; + this.bindingNavigatorMoveNextItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveNextItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveNextItem.Text = "Move next"; + // + // bindingNavigatorMoveLastItem + // + this.bindingNavigatorMoveLastItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveLastItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveLastItem.Image"))); + this.bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem"; + this.bindingNavigatorMoveLastItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveLastItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveLastItem.Text = "Move last"; + // + // bindingNavigatorSeparator2 + // + this.bindingNavigatorSeparator2.Name = "bindingNavigatorSeparator2"; + this.bindingNavigatorSeparator2.Size = new System.Drawing.Size(6, 25); + // + // toolStripButton5 + // + this.toolStripButton5.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton5.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton5.Image"))); + this.toolStripButton5.Name = "toolStripButton5"; + this.toolStripButton5.RightToLeftAutoMirrorImage = true; + this.toolStripButton5.Size = new System.Drawing.Size(23, 22); + this.toolStripButton5.Text = "Add New"; + // + // toolStripLabel1 + // + this.toolStripLabel1.Name = "toolStripLabel1"; + this.toolStripLabel1.Size = new System.Drawing.Size(27, 22); + this.toolStripLabel1.Text = "/{0}"; + this.toolStripLabel1.ToolTipText = "Total items"; + // + // toolStripButton6 + // + this.toolStripButton6.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton6.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton6.Image"))); + this.toolStripButton6.Name = "toolStripButton6"; + this.toolStripButton6.RightToLeftAutoMirrorImage = true; + this.toolStripButton6.Size = new System.Drawing.Size(23, 22); + this.toolStripButton6.Text = "Delete"; + // + // toolStripButton7 + // + this.toolStripButton7.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton7.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton7.Image"))); + this.toolStripButton7.Name = "toolStripButton7"; + this.toolStripButton7.RightToLeftAutoMirrorImage = true; + this.toolStripButton7.Size = new System.Drawing.Size(23, 22); + this.toolStripButton7.Text = "Move first"; + // + // toolStripButton8 + // + this.toolStripButton8.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton8.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton8.Image"))); + this.toolStripButton8.Name = "toolStripButton8"; + this.toolStripButton8.RightToLeftAutoMirrorImage = true; + this.toolStripButton8.Size = new System.Drawing.Size(23, 22); + this.toolStripButton8.Text = "Move previous"; + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25); + // + // toolStripTextBox1 + // + this.toolStripTextBox1.AccessibleName = "Position"; + this.toolStripTextBox1.AutoSize = false; + this.toolStripTextBox1.Name = "toolStripTextBox1"; + this.toolStripTextBox1.Size = new System.Drawing.Size(50, 23); + this.toolStripTextBox1.Text = "0"; + this.toolStripTextBox1.ToolTipText = "Current position"; + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25); + // + // toolStripButton9 + // + this.toolStripButton9.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton9.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton9.Image"))); + this.toolStripButton9.Name = "toolStripButton9"; + this.toolStripButton9.RightToLeftAutoMirrorImage = true; + this.toolStripButton9.Size = new System.Drawing.Size(23, 22); + this.toolStripButton9.Text = "Move next"; + // + // toolStripButton10 + // + this.toolStripButton10.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton10.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton10.Image"))); + this.toolStripButton10.Name = "toolStripButton10"; + this.toolStripButton10.RightToLeftAutoMirrorImage = true; + this.toolStripButton10.Size = new System.Drawing.Size(23, 22); + this.toolStripButton10.Text = "Move last"; + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(6, 25); + // + // toolStripButton11 + // + this.toolStripButton11.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton11.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton11.Image"))); + this.toolStripButton11.Name = "toolStripButton11"; + this.toolStripButton11.RightToLeftAutoMirrorImage = true; + this.toolStripButton11.Size = new System.Drawing.Size(23, 22); + this.toolStripButton11.Text = "Add New"; + // + // toolStripLabel2 + // + this.toolStripLabel2.Name = "toolStripLabel2"; + this.toolStripLabel2.Size = new System.Drawing.Size(27, 22); + this.toolStripLabel2.Text = "/{0}"; + this.toolStripLabel2.ToolTipText = "Total items"; + // + // toolStripButton12 + // + this.toolStripButton12.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton12.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton12.Image"))); + this.toolStripButton12.Name = "toolStripButton12"; + this.toolStripButton12.RightToLeftAutoMirrorImage = true; + this.toolStripButton12.Size = new System.Drawing.Size(23, 22); + this.toolStripButton12.Text = "Delete"; + // + // toolStripButton13 + // + this.toolStripButton13.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton13.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton13.Image"))); + this.toolStripButton13.Name = "toolStripButton13"; + this.toolStripButton13.RightToLeftAutoMirrorImage = true; + this.toolStripButton13.Size = new System.Drawing.Size(23, 22); + this.toolStripButton13.Text = "Move first"; + // + // toolStripButton14 + // + this.toolStripButton14.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton14.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton14.Image"))); + this.toolStripButton14.Name = "toolStripButton14"; + this.toolStripButton14.RightToLeftAutoMirrorImage = true; + this.toolStripButton14.Size = new System.Drawing.Size(23, 22); + this.toolStripButton14.Text = "Move previous"; + // + // toolStripSeparator4 + // + this.toolStripSeparator4.Name = "toolStripSeparator4"; + this.toolStripSeparator4.Size = new System.Drawing.Size(6, 25); + // + // toolStripTextBox2 + // + this.toolStripTextBox2.AccessibleName = "Position"; + this.toolStripTextBox2.AutoSize = false; + this.toolStripTextBox2.Name = "toolStripTextBox2"; + this.toolStripTextBox2.Size = new System.Drawing.Size(50, 23); + this.toolStripTextBox2.Text = "0"; + this.toolStripTextBox2.ToolTipText = "Current position"; + // + // toolStripSeparator5 + // + this.toolStripSeparator5.Name = "toolStripSeparator5"; + this.toolStripSeparator5.Size = new System.Drawing.Size(6, 25); + // + // toolStripButton15 + // + this.toolStripButton15.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton15.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton15.Image"))); + this.toolStripButton15.Name = "toolStripButton15"; + this.toolStripButton15.RightToLeftAutoMirrorImage = true; + this.toolStripButton15.Size = new System.Drawing.Size(23, 22); + this.toolStripButton15.Text = "Move next"; + // + // toolStripButton16 + // + this.toolStripButton16.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton16.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton16.Image"))); + this.toolStripButton16.Name = "toolStripButton16"; + this.toolStripButton16.RightToLeftAutoMirrorImage = true; + this.toolStripButton16.Size = new System.Drawing.Size(23, 22); + this.toolStripButton16.Text = "Move last"; + // + // toolStripSeparator6 + // + this.toolStripSeparator6.Name = "toolStripSeparator6"; + this.toolStripSeparator6.Size = new System.Drawing.Size(6, 25); + // + // errorProvider1 + // + this.errorProvider1.ContainerControl = this; + // + // fSetting + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(611, 620); + this.Controls.Add(this.tabControl1); + this.Controls.Add(this.panel1); + this.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.KeyPreview = true; + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "fSetting"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Setting"; + this.Load += new System.EventHandler(this.@__Load); + this.panel1.ResumeLayout(false); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.errorProvider1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.PropertyGrid propertyGrid1; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.ErrorProvider errorProvider1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.ToolStripButton bindingNavigatorAddNewItem; + private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorDeleteItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator; + private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator2; + private System.Windows.Forms.ToolStripButton toolStripButton5; + private System.Windows.Forms.ToolStripLabel toolStripLabel1; + private System.Windows.Forms.ToolStripButton toolStripButton6; + private System.Windows.Forms.ToolStripButton toolStripButton7; + private System.Windows.Forms.ToolStripButton toolStripButton8; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripTextBox toolStripTextBox1; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripButton toolStripButton9; + private System.Windows.Forms.ToolStripButton toolStripButton10; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStripButton toolStripButton11; + private System.Windows.Forms.ToolStripLabel toolStripLabel2; + private System.Windows.Forms.ToolStripButton toolStripButton12; + private System.Windows.Forms.ToolStripButton toolStripButton13; + private System.Windows.Forms.ToolStripButton toolStripButton14; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; + private System.Windows.Forms.ToolStripTextBox toolStripTextBox2; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; + private System.Windows.Forms.ToolStripButton toolStripButton15; + private System.Windows.Forms.ToolStripButton toolStripButton16; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; + } +} \ No newline at end of file diff --git a/QRValidation/Project/Setting/fSetting.cs b/QRValidation/Project/Setting/fSetting.cs new file mode 100644 index 0000000..1b20860 --- /dev/null +++ b/QRValidation/Project/Setting/fSetting.cs @@ -0,0 +1,100 @@ +using AR; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Project +{ + public partial class fSetting : Form + { + CSetting dummySetting; //Temporarily saves settings and overwrites them when complete. + + public fSetting() + { + InitializeComponent(); + + //setting + dummySetting = new CSetting(); + PUB.setting.CopyTo(dummySetting); + + this.KeyDown += (s1, e1) => + { + if (e1.KeyCode == Keys.Escape) + this.Close(); + if (DateTime.Now > PUB.LastInputTime) PUB.LastInputTime = DateTime.Now; + }; + this.MouseMove += (s1, e1) => { if (DateTime.Now > PUB.LastInputTime) PUB.LastInputTime = DateTime.Now; }; + this.FormClosed += __Closed; + + + } + + private void __Closed(object sender, FormClosedEventArgs e) + { + + } + + private void __Load(object sender, EventArgs e) + { + + this.Show(); + + this.propertyGrid1.SelectedObject = this.dummySetting; + this.propertyGrid1.Refresh(); + + //if (Pub.setting.Disable_UsingDataMatrix == true) btInspectDotDM.Text = "DOT Inspect"; + //else btInspectDotDM.Text = "DM Inspect"; + + + } + + private void button1_Click(object sender, EventArgs e) + { + using (var f = new AR.Dialog.fPassword()) + if (f.ShowDialog() == DialogResult.OK) + { + var pass = f.tbInput.Text; + if (pass != this.dummySetting.Password_Setup) + { + UTIL.MsgE("Password incorrect"); + return; + } + + this.Invalidate(); + + + try + { + dummySetting.CopyTo(PUB.setting); + PUB.setting.Save(); + PUB.log_[0].AddI("Setting Save"); + PUB.log_[0].Add(PUB.setting.ToString()); + PUB.log_[1].AddI("Setting Save"); + PUB.log_[1].Add(PUB.setting.ToString()); + } + catch (Exception ex) + { + PUB.log_[0].AddE("Setting Save Error:" + ex.Message); + PUB.log_[1].AddE("Setting Save Error:" + ex.Message); + UTIL.MsgE("Error\n" + ex.Message + "\n\nPlease try again"); + } + + //Pub.flag.set(eFlag.TestRun, btLoaderDetect.BackColor == Color.Lime); + + DialogResult = DialogResult.OK; + } + + + } + + + + + } +} + diff --git a/QRValidation/Project/Setting/fSetting.resx b/QRValidation/Project/Setting/fSetting.resx new file mode 100644 index 0000000..0952896 --- /dev/null +++ b/QRValidation/Project/Setting/fSetting.resx @@ -0,0 +1,2099 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ + Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ + /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA + zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/ + IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E + rkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC + rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV + i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG + 86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG + QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX + bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 + v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg + UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA + Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu + lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f + Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ + 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI + N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f + oAc0QjgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B + twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA + kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG + WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 + 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ + Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ + /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA + zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/ + IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E + rkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC + rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV + i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG + 86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG + QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX + bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 + v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg + UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA + Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu + lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f + Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ + 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI + N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f + oAc0QjgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B + twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA + kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG + WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 + 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ + Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ + /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA + zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/ + IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E + rkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC + rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV + i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG + 86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG + QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX + bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 + v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg + UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA + Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu + lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f + Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ + 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI + N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f + oAc0QjgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B + twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA + kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG + WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9 + 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + + + 208, 17 + + + 528, 17 + + + 102 + + + + AAABAAYAAAAAAAEAIAASGgAAZgAAAICAAAABACAAKAgBAHgaAABAQAAAAQAgAChCAACgIgEAMDAAAAEA + IACoJQAAyGQBACAgAAABACAAqBAAAHCKAQAQEAAAAQAgAGgEAAAYmwEAiVBORw0KGgoAAAANSUhEUgAA + AQAAAAEACAYAAABccqhmAAAZ2UlEQVR42u3da4xu11kf8P+z1r68l5l3Zs7xuXh87OBgk8ZBWEGBGEs0 + caXKBiOiVHI+kMQNbYh6+YIqhBFVq1MqkIxQhVS1KCIo1MT94KhYIBAOaXGDRC7UAoIUm8RxjBOfm89l + 5szMO++7916Xfhh/IlnPPsnMmTMz6/+Tzqe99Mze+333f87WemYtAR1ZH/v4EwMAtTZmOt6OPWWapz/0 + X5tbfS10c5hbfQJEdOswAIgyxgAgyhgDgChjDACijDEAiDLGACDKmNzqE6Dv7MO/9QsVgCJ13FhTlFXx + gFbDGnNaRE5oY6JEtQ8gRlwJHhe1MV3bfTF475Qh7vf+9W+0+3f36EYVuy9BN0kNYKgcHwJ4v1pBcB8E + 9+hDen8HvAzEF3vGfBXATDk+A8AAOID4CkCUMQYAUcYYAEQZYwAQZYwBQJQxBgBRxhgARBljI9BN8OHf + /sVVAAup49aYY6U1/06rUZbFGWPM8dRxY8TcceL4Ga1GXRa2Kgq7m2tpnfNN57w25tzlq6+HEEPqeAjh + ate517UanQ//xYdwTRmy9Xs/9+vnd3Mt9O3YCHRzCADtwSugBMSbFgFMlB9hjIi62o8RI9bs7j95Rowx + Ij3fE5kA6QDAThNQ3/UWPfeMv6xuAr4CEGWMAUCUMQYAUcYYAEQZYwAQZYwBQJQxTq38A49/4heXAVSp + 49aYcWHt/VqNqrC3GyOLqePGmIVRXat/y19Ye8wYk5w6ExFZWRwv6DWMFHZXbQBw3sP5oC4asrY53Yox + vbBICGHLea/N8WO7aZ4NIWyla8TN1vkLPef6ZR/CVBnSPvXRX1/f1Q05YtgH8O1OQ51/x50AfkErYIw5 + VVgzTh0vrLUnVibHtRp1WWK3D+9eKKxFYa36i+L248uL2nHn/aTp3Ko25sKVa7c775MNRw5hCvhLPaf7 + GwC+pRzfALC+LzfukOArAFHGGABEGWMAEGWMAUCUMQYAUcYYAEQZYwAQZexINQI9/ttPvBs7f0f/HVkj + byms+YBWYzwcHLPWJP/OviqLwW2TyV1ajbKw1hiTvLcigDVGn+SXG9iy45CIAKBvQAQfgteGhBBi57y6 + MMmVjY1vtp2bJ3+GD810NlcbkpwPz/gQX1OGbD71c09+af/u3s111BqBBgDGyvFlAOoqOhAsiUiyE1BE + irKw6kIcZWFhdrkQx1EiwE7qKQqrdz2FIEDP91VEbhOR9BZlghbAqOd0lwFcUY53N/l27St+S4kyxgAg + yhgDgChjDACijDEAiDLGACDK2L5MNT/2zGO9P2th++47oEzzGDETgblDqzEoy/tFJLlIRmHNalUU/1Sr + UdfVyBpTpGtYuzQeaVONsNbAyFGZxT8YQozwPqhjrk+3p9qaAj4E1zTttlajdf5PXQjJhUdijFvztv2y + ViMinAsxbChD3Fv+fnSu55Lj2bNn9/o2fpv96gMQ9P9v4wEoTTwA3g5AXUWnrsrlwqYf3kFVFSeWJz2r + 6FgIH94Dx4jA9GxydNvSohrMMUY4749pYy5f3/jAvO2Sc/3OBzdv2+s9p/ssgJeU45sAfv8GLjvewJhd + 4SsAUcYYAEQZYwAQZYwBQJQxBgBRxhgARBljABBlrHfC+2Mf/5hBT1D4wbGHAZSp40bM2wTyoFZjaTy6 + yxhJzuHXZbU4GQ9PazXKorBGWUdDRKSwVr0W9gAcbbFnYRLnQ1B3OYoxds6pC5NsTGcXm67dTNYI0V2f + bn9TPU/Ez4cYvqoM6V55dfBcz+WG/3v2rHrBN9oI1PdUHIeynRZ2dtP5Qa2AEVk2kl4lp7C2HFSVuhBH + YQ0fYFL1fT/KQv8FEWOE1ikKANvz9kTnzHL6JIKHvvsUsLPD0VXleIv+51LQ00zEVwCijDEAiDLGACDK + GAOAKGMMAKKMMQCIMiYf+eRZPQT89HQEVrUhRVH8M0i6D2BQVvcOqvJHtRqLo+GCEUmeS12WxcJoqE4D + WmP6lp8n2pUYAR/0hUm2tmdN03XJ/QlCjGFjOtvSajRd+5fzrn05fSLoOhf/V8/pnjd2eEkbUECfv0eE + vBfAh7UxAvlxxHRPwXhQ2ztOHFPnTuuy5Bw+HXgiO/0mmuXFcQ0g+csqxojlhbG2+A3OX7n2aNN2WsOR + Mybc33O6n8LO4iRJfAUgyhgDgChjDACijDEAiDLGACDKGAOAKGMMAKKMFdj5u2LNn0Hf5AAB8UEoC4JM + m+a+1y5deY9WY1BXJwwkuR7AoCrLpYXRUKtRclMPuslijOi8uh4Irm9tz7TNRQKinzftZa1G03WfC4gv + KkM6AH/Rc7oX0fN878nT8s9/94kHoSwuYsU+YEQe02qMB/WdIukVgRYGdXVieaI2T1RlyS256KYKMUJ5 + tgEAl9c3NrfmTfLBizG66bz5Vs/P+bSP/ovKEPc/PvLk53d7PXwFIMoYA4AoYwwAoowxAIgyxgAgyhgD + gChjN7ovQJ+tnlqX0NNLEGNsoPQS+BgnTded0WugEmVREbOzMYjVaoi2swgdahFADH0bg3gflI1BYoyh + dZ06t+5jPBdj3FBqdAC+0XO6l7DzXCVPdS/uyYH5rj/+O0+8C8Agdbyw5oeskQ9qNQZldZcRSdYY1lV5 + 6tjyklajrkpYw/8YHUU+BDStPod/6dr69ZkyKMQ4n3etuquPD/Fp58PfKkPmT/3LJ1+41fcD4CsAUdYY + AEQZYwAQZYwBQJQxBgBRxhgARBljABBlbK8agfbCKwC0Jp0LAP5OK+BDeGuQdC/BvOtWL1xbf0SrUVp7 + 2ogkFx4prLXLC+MFtUZphb0Ee8uHgK7zahfP+tZ0y/n0ah0hxlnn/UWtRtt1z7ngz6eOx4g5+pt4XgNw + Xbuc/btzugPTCLQXPvLJJ+4BkHx4rTH3GmM+qtWobHGPEUkuPFKXZXn78ZVjWo1BXUqhNxzSd8l5j3nT + qQFw4eratabrtCaezda7r2s1Qgif8CG8rAyZ/e7PPqnWOEz4a4ooYwwAoowxAIgyxgAgyhgDgChjDACi + jB2kPoC90EHpJYjRzGKwa1qBEMs2iknO03qxpuugTkcZExCCMsUqQNHTJyCCI7PJSYwRUV+HAy4EaHfV + +RD77rt3hfdOkp9djKGNMaqff4yYAUFb8ENfUOCQORrfsBv0vn//R0sA3qGNqYbu50Xw9tRxW7b1eOWN + O7UaZT0vjXXJICqs4PTxkXqu40GNujoa+dy0DtN5o465eHUbTunzCb7wXTNQH77p2slv+a5K/qAY8VI7 + K36z53S/8ge/+lPXkQm+AhBljAFAlDEGAFHGGABEGWMAEGWMAUCUMQYAUcYOUB9AVM/lfb/02SVjw1u0 + MUVpH4JgOXm8KEbD4WhVqzGZDH/UFuZ46rixwdbDVl0QBDI3EKdcjwPsBb2EmQJIz52LCCZjvU+grgqU + xe7WJeicR9Pqm9BsTB2i2ulTI4ax/oP87VD70mIREQdBK9HMqq3glSYuF65ubMz+Uqsxm22fd85tp88D + 667zz/fcttee/dVH1nEIHKZOkzGA7+sZ85MA7kgdFJHKWrus/pDx0tJgUCe3KDPGoKoq9SR8aBBj+qEJ + scH6XO81ad0WXJgnjxsRlGWt1jBWdh8A3mPWs5vO2kaDoARAYSpUhd74tDx4K4ykr0ekEGtq9WLasl0K + IZ0R83mzOJ22K1oNEVkHoHUCngPwas9tuwxgHYcAXwGIMsYAIMoYA4AoYwwAoowxAIgyxgAgytieTAM+ + 9tgz6vHwAxMLI+rP8v5zA8R0X0JR2kURo04m28KUIpKcKrLWGmut2m9gjOx6IQ4BtEsBIBD9dsBIBSPp + 6UYRIEY9v0MAfOhZiaNHCNL7c0RK9TeJkar3enfumrqGyg3RPjtjBH2fv7XWxBiVRWViiSh6U4Ng8th/ + +t9TZUQMzusLJITozNc21A1EPv3pD9zgXUnbqz6AvsnmHwDwY9qAsnb/FkByjraqqmrcsyPP6VOnFqqy + TJ6LMQZlVeJmM6bu+a/VCCeK96gjQmgQlF6CGB2ubag9Lbi6dg0uXN3VtRRmGaW9XR1zeuFH1AfcSAFj + 9J6FvdDXn1HXdTmZTI5rY9quO671ErRtd8+lS5feqdWYbk232rbVegnWAPy3nsv5AoCv9YzZ9Q5DfAUg + yhgDgChjDACijDEAiDLGACDKGAOAKGMMAKKMyXvPPq+GwIrvTovyN/YAYK38Yyg9BfVgcHJQD+7Waiws + jH5MjBmmf4Y1Va1P9I5Ho8qadKOHiMDYw5F5MXpEKOtfxICZ0xcV8WGKEGf6z+k5DysjWKP/Lf+wuB2Q + 9H0VGCj9WQeKD0Fd3CR4H6fb29ocP9qmbb33yQ8vhjDb2tr+glZj3sxfbebzN5Qhzvv451qNCJxbs+VF + bUyB/v8FnAJwvzpC8C8ADFKHjZFBVVdq99Sx48cXiyL9dBpjYO3h+BLtBREL0fqrBBhX36fWiNEhRr1X + JPa02Al6mziPFNuzZRuslaqq1K4m732tNRM55xfbzv0TrUbbNVMI5sqQOYC+HYwcAC1E+ApAlDMGAFHG + GABEGWMAEGWMAUCUMQYAUcYYAEQZK07gshoC3k4KQNQGHIE1UMJEYER6ltkROVDbFB0JIsUNrMRDN4O6 + HtTO4kc9v3zFCNSmBAPrep7L2Pt8838ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCUsQL9mwtcAPDX + PWM+AWVBkBDDSte16u4S165efY+IJFeeMNYWZVkOtRrj8biyNr2mgIhktaYAffe89+qCIN77sDWdqrv6 + uK6bB++Tu7qEGLe7rv2cViPGeAE7G4gkfwz6n8sL6Hm+96X35v3/8Y/PAHi7Nsaa8pcBJHdtKctyOBwO + jmk1VldXJ1VVJYPIGIO6vvk71NDh1TQN9J2BWnfu/AV1IY75bLbWdZ22FNNVH7pf6zmVl579lUdfv9nX + y1cAoowxAIgyxgAgyhgDgChjDACijDEAiDLGACDK2H6tFnEewKWeMV+E0pfQOndbu7n1Nq3A9tdf+Vci + ktzFyBgzLMtyVatx6tSphcFgoPYSjEZqPxLdItvbM3UOfz6fu0uXLm1pNbrOXQghJOfwY4znOu9+Sz2R + iK8KcEUdAXXTD6C/QW9P7EsAPPsrjwZA2+cKANBpB9/3H56rAKgfntmpkezAMsZ4Y4y6G1bcoY3Yj1tG + 35OodvHFGKP3Xv0AnXM+hOCUIZ1zXv0eAtj4g//8yMatvhs3gq8ARBljABBljAFAlDEGAFHGGABEGWMA + EGXsMO0aMQdwsWfMZwGsKMfHIcS71B8y2/4R59rkugRGTDGfzZa1GvVgIEVRJHsaRARVpe7pkJ22bdUp + POdcbOZzdQqv67r1ENNTeK5zV0OI/6/nVL4JYFs5vob+72HfHP+BkdVmPD/9y3+yAOCt2pjFhfLnRbTF + S2RkpLhPq3Hs+G12OBol760xBsvLS7f6dhwo6+vX1Sae2fZ2vHb1itocE6J7EYjJhzdGvLS51f1mz6l8 + 4w9/7Sf65vmPDL4CEGWMAUCUMQYAUcYYAEQZYwAQZYwBQJQxBgBRxo5UH8DTz/31uwEsJi9WcLeY+DNa + jbqqzxhj0jsUGVPWdX2bVuOV89uytpVe3sD5iAtr6uYyGI0XUNXphUdEBCsry2oNkb35ePX1EYC1tXV1 + TNvMsD3Vp9ZvX6lR2PT5riyU+P7VkXoiTdNcCSEkb3wIYbtpG3WzjRjkf8aIV5Uhmx985J1f2sXtPFAO + UyfgjRgAGKcOimBijZzUCgxrOyysLVPHrTHFcFiqT1ZVAEZZ/0QQ0LWteiGudrBFuu9lrx7uvdC3nZZz + rvd6BQWM8h/SqgAmI/2+z8QXXmkmct4PndM/fx8xiTH9HULPwjWHDV8BiDLGACDKGAOAKGMMAKKMMQCI + MsYAIMrYvkwDPvPMM0BPz4GbfP8d2vkYaybGpDf9AIBhXd8vgoXUcWvNalmYiVpjUA2tMcrGIGKrUr9t + p46NMKyTM4lwPqAsrFqj8RZd1JanF2xtXFdr2LJEUfR8xD3bHDjv4Dp95qsUB0i60HhscftkUa2xenyI + wqZ/H03GJYa1fi3W1FUIMXljfQi2LKy+qIgL93kfkovKxIitZ/7P34y0GiHEc8EHbV8A97Uv/vA56OLZ + szd/qne/+gAE/f/beABKEw+AtwN4v1agrovlwqYf3kFdFidWFha0GkVhYXY5x74y0XcO8iFifUtvBPrK + q+t4/Y1p8ngIEX9/7rJaY7SwiOFYvdzeAJhtb2G6tamOufvUGMak79mZk2O84251+h3LCzWs2e0XfqjN + 3yPECOf8MW3M5bWtD8ybdOI5H9ysafTkBZ4F8JJyfBPA79/ABd30XWj4CkCUMQYAUcYYAEQZYwAQZYwB + QJQxBgBRxhgARBnrnXj9+AsvGPQExdI1+zCAZOeLiLxNBA9qNVaWRndpDTiDulxcXBie1mpUhbWi/KG8 + MSKFNeq17Mff2UcA3gd1zLz1aLv0mBjR20vw+pUZLlzTx/Q5fazGnbfpfQ3LCzW021aVBoNKb3yy1uzL + 6jR9i5s4H0JQBsUQY+u8ukHJ5tbs4rzpks0TPgS3dn37m/p54vMxxq8qQ7pT5fpzPZcbHnroIfWCb7QR + qO+zOQ5A2+vqTgA/qBUwRpaNkeS3pLCmHNZlrV6MNQdqoYwUefNcNQtDAyjPXYxApa+PgfVpi8LoQdNn + cWhxcmXQc64VDsFtB9Af8GXPBxNjhFWazQBgNmtOGCPLyRoQD0DtSAXwLQBXleMt+p9LQU8zEV8BiDLG + ACDKGAOAKGMMAKKMMQCIMsYAIMpY8cnnn1dDoLiG04iyqlYx+EdQ+gDqujgzqEp1Mnk0qEtjJHkuVVXY + /im+QzIXtRdkZ+5cMxmVOLkyvMGC6Rp9Pyen2w5I71RiVRU2KtNvIUTTLnj1g2lad6ZpupkypLvQTu7X + TzWe/+Tzz1/ShhTQ5+8hAe8F8GF1jMiPQ+kpWBgN7JnTK+rc6aAqDsUc/kEhAEY9K+Tce2YJ955ZutWn + eqSI9PdwrEzGNYBkz0qMEcuTkbpE0rlLa4+2rdMajlyE6AEQ8SnsLE6SxFcAoowxAIgyxgAgyhgDgChj + DACijDEAiDLGACDKWIGdvyvW/Bn0TQ4QYnwQSiPQdNbc99r5q+/Ragzr8oSR9HoAdV2WS4tDtXmiKix7 + CeimijFCn54Hrm/OZo2yuUiI0c+aVt3VZd64z4UYX1SGdAD+oud0L6Ln+S5+9qGH+laMuPjmv6SnP/NX + QyiNQPOmq9rOvVOr4X1YMiLJGhGQxbG+MEVEZk1ptO8idnZl0sybzk23Gy0A3HTWaFuHIYT4dR/iXylD + 3Acf/uG/2e318BWAKGMMAKKMMQCIMsYAIMoYA4AoYwwAoozd6L4AfbZ6al1CTy9BjLGJSi+BD2HStN2Z + nhqVkfSiIiIiZWHVHSrECKcSj6gIIPZM4XXO+6hsDBJiDG3n1Ll1H8K5GGNymi/G2AH4Rs/pXsLOc5Xi + 9uKeHJjv+lN/8sK7ACQn+svC/JA15oNajWFd3WVEkjWGg6o8fWKirpAxqEv0bB5Eh5QPAfP09DwA4OLl + jeuzeavN4c9nTavu6uNDeLpz4W+VIfPHf+JdL9zq+wHwFYAoawwAoowxAIgyxgAgyhgDgChjDACijDEA + iDK2V41Ae+EVAFqTzgUAf6cVcM6/VZQ+AMzb1QtvXH9Eq1GW5rSIJBceKQtrlyfjBa1GVVphL8He8iGg + 7bzaxbO+Md3qnE+u1hFjnHVdUNe2mDfdc53z55Uac/Q38bwG4Lp2Oft353QHphFoL3zqj1+4B0Dy4S1K + e6+15qNajaq09xgjyV1b6qosV08uH9NqDOtSikJtOKTvknMes6ZTA+D8G+vXmlZZiSfEzbbzX9dqeB8+ + 4Tr/sjJk9qFH36XWOEz4a4ooYwwAoowxAIgyxgAgyhgDgChjDACijB2kPoC90EHvJZiiZ48DACMAyWnA + iFg7HyqtQOt8FWJU7q3AWqPOExrBkdnkJMaInnU44H3wO0t2fGfOB+d8UBfiiDFeBNAoQzbR//lPoW+m + 0eEIORrfsD301Ge+dBpKL0Fli9XCFP9Gq2GMeYeInEwdLwpr7zi5fJtWYzyqZVAVR+LzmbcuTrcbNQLO + vbF+xelNPG8EH76i1XDB/fc2uPPKkNnjD7+7LwCywlcAoowxAIgyxgAgyhgDgChjDACijDEAiDLGACDK + 2FFrBNoLG9hpBkmZAfgdrUAEVmNMNxOFEMfrG1N1YZLN6fwuYyTZKyAisrQwWNRq1FVpqtLuqpeg7Xxs + 2i5oY65vzTfV3XRCvOK9VzfTCCE+F6Jy3yM2AWhz/MDOojLaZ3dgFuI4KBgA/8DjD797u2dIbzfZU5/5 + 8hKAOnW8NG65bdo7tRpiTaWtTGSMmKowY62GNUZ2GwDO+Tibt2oAXF7b3A4hJsfEGC/GviaeiD/sgqwr + Q5rHH75fW2WHvgd8BSDKGAOAKGMMAKKMMQCIMsYAIMoYA4AoY5wGvDkitNUtgACgb7pxCzs9CSkmxjjR + CoQQKu/Drj7jEIKLMbY9wzbevCbtWvquN/Tcs54lReh7cSQWnDiKnvrMlxehLExiBcNK4i9pNcTKfWLk + nt2cRwzx5eDDi9qYLsqTPspMGTJ7/OH7N/fjvtF3h68ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCU + MTYCHVwN9AUs5gCe7anxBQAntAHaQh5vuoL+3XTWADjluAMdSGwEOsKe+ewLAygLkwBA27m+AGg+9JMP + NKAjia8ARBljABBljAFAlDEGAFHGGABEGWMAEGWMAUCUsf8PzNlsT7yleHcAAAAASUVORK5CYIIoAAAA + gAAAAAABAAABACAAAAAAAAAAAQBhCgAAYQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMu6oEzLuqD8y7qg/Mu6oPzLuqD8i2pA7ItqQO + yLakDsi2pA7ItqQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAMy7qgTMu6oPzLuqD8y7qg/Mu6oPyLakDsi2pA7ItqQOyLakDsi2pAQAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqBMy7qg/Mu6oPzLuqD8y7qg/ItqQO + yLakDsi2pA7ItqQOyLakBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMu6oEzLuqD8y7qg/Mu6oPzLuqD8i2pA7ItqQOyLakDsi2pA7ItqQEAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIN0bmiENG5ohDRuaIQ0LuqQ9C7q2/Qu6tv0Lurb9G9rH/SwK2s0sCtrNLArazSwK2s + 0sCtrNLArazSwK2s0sCtrNC9q37Pu6puz7uqbs+7qm7Pu6lC0bmiENG5ohDRuaIQ0bmiDQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ohLRuaIW0bmiFtG5ohbQu6pb + 0Lurl9C7q5fQu6uX0b2srNLAreXSwK3l0sCt5dLAreXSwK3l0sCt5dLAreXSwK3l0L2rq8+7qpbPu6qW + z7uqls+7qVrRuaIW0bmiFtG5ohbRuaISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA0bmiEtG5ohbRuaIW0bmiFtC7qlvQu6uX0Lurl9C7q5fRvays0sCt5dLAreXSwK3l + 0sCt5dLAreXSwK3l0sCt5dLAreXQvaurz7uqls+7qpbPu6qWz7upWtG5ohbRuaIW0bmiFtG5ohIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIS0bmiFtG5ohbRuaIW + 0LuqW9C7q5fQu6uX0Lurl9G9rKzSwK3l0sCt5dLAreXSwK3l0sCt5dLAreXSwK3l0sCt5dC9q6vPu6qW + z7uqls+7qpbPu6la0bmiFtG5ohbRuaIW0bmiEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ogPRuaIK0bmiCtG5ogrRuqUO + 0LyrRNC8q0TQvKtE0LyrRNK/rGzTv6x207+sdtO/rHbYx7eg28y9xdvMvcXbzL3F3c7A0eHVxvHh1cbx + 4dXG8eHVxvHh1cbx4dXG8eHVxvHh1cbx3c7A0dvMvcXbzL3F28y9xdjHt6DTv6x207+sdtO/rHbSv6xs + 0LyrRNC8q0TQvKtE0LyrRNG6pQ7RuaIK0bmiCtG5ogrRuaIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA0bmiB9G5ohbRuaIW0bmiFtG6pR7QvKuR0LyrkdC8q5HQvKuR07+t09PArePTwK3j + 08Ct49zNve/j18r649fK+uPXyvrn3ND78erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/n3ND7 + 49fK+uPXyvrj18r63M2979PArePTwK3j08Ct49O/rdPQvKuR0LyrkdC8q5HQvKuR0bqlHtG5ohbRuaIW + 0bmiFtG5ogcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIH0bmiFtG5ohbRuaIW + 0bqlHtC8q5HQvKuR0LyrkdC8q5HTv63T08Ct49PArePTwK3j3M297+PXyvrj18r649fK+ufc0Pvx6uD/ + 8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg/+fc0Pvj18r649fK+uPXyvrczb3v08Ct49PArePTwK3j + 07+t09C8q5HQvKuR0LyrkdC8q5HRuqUe0bmiFtG5ohbRuaIW0bmiBwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAANG5ogfRuaIW0bmiFtG5ohbRuqUe0LyrkdC8q5HQvKuR0LyrkdO/rdPTwK3j + 08Ct49PArePczb3v49fK+uPXyvrj18r659zQ+/Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/ + 59zQ++PXyvrj18r649fK+tzNve/TwK3j08Ct49PArePTv63T0LyrkdC8q5HQvKuR0LyrkdG6pR7RuaIW + 0bmiFtG5ohbRuaIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAMm5ogbJuaIHybmiB8m5ogfQvasW0b6sIdG+rCHRvqwh0r6sK9O/q0DTv6tA + 07+rQNTArUbXxban18W2p9fFtqfXxban2cm429rJuOnaybjp2sm46eHTxfLm28/75tvP++bbz/vp39P8 + 8erg//Hq4P/x6uD/8erg//Hq4P/x6uD/8erg//Hq4P/p39P85tvP++bbz/vm28/74dPF8trJuOnaybjp + 2sm46dnJuNvXxban18W2p9fFtqfXxban1MCtRtO/q0DTv6tA07+rQNK+rCvRvawh0b2sIdG9rCHQvasW + ybmiB8m5ogfJuaIHybmiBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiHcm5oiHJuaIh + ybmiIdC9q3DRvqyl0b6spdG+rKXSv6271MGv5tTBr+bUwa/m1cOx6Ofbzv3n287959vO/efbzv3w6N3/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+fbzv3n287959vO/efbzv3Vw7Ho + 1MGv5tTBr+bUwa/m0r+tu9G9rKXRvayl0b2spdC9q3DJuaIhybmiIcm5oiHJuaIdAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADJuaIdybmiIcm5oiHJuaIh0L2rcNG+rKXRvqyl0b6spdK/rbvUwa/m + 1MGv5tTBr+bVw7Ho59vO/efbzv3n287959vO/fDo3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6N3/59vO/efbzv3n287959vO/dXDsejUwa/m1MGv5tTBr+bSv6270b2spdG9rKXRvayl + 0L2rcMm5oiHJuaIhybmiIcm5oh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMm5oh3JuaIh + ybmiIcm5oiHQvatw0b6spdG+rKXRvqyl0r+tu9TBr+bUwa/m1MGv5tXDsejn287959vO/efbzv3n2879 + 8Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Do3f/n287959vO/efbzv3n2879 + 1cOx6NTBr+bUwa/m1MGv5tK/rbvRvayl0b2spdG9rKXQvatwybmiIcm5oiHJuaIhybmiHQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiHcm5oiHJuaIhybmiIdC9q3DRvqyl0b6spdG+rKXSv627 + 1MGv5tTBr+bUwa/m1cOx6Ofbzv3n287959vO/efbzv3w6N3/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8Ojd/+fbzv3n287959vO/efbzv3Vw7Ho1MGv5tTBr+bUwa/m0r+tu9G9rKXRvayl + 0b2spdC9q3DJuaIhybmiIcm5oiHJuaIdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADMtaQRzLWkKsy1pCrMtaQqzrinO9G9q6rRvauq0b2rqtG9q6rUw7LT + 1cSz2tXEs9rVxLPa4tXH7One0vjp3tL46d7S+Ovi1vrw6N798Oje/fDo3v3w6d798erg//Hq4P/x6uD/ + 8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg//Hq4P/x6uD/ + 8erg//Dp3v3w6N798Oje/fDo3v3r4tb66d7S+One0vjp3tL44tXH7NXEs9rVxLPa1cSz2tTDstPRvauq + 0b2rqtG9q6rRvauqzrinO8y1pCrMtaQqzLWkKsy1pBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy1pBLMtaQt + zLWkLcy1pC3OuKc/0b2rttG9q7bRvau20b2rttXDsuDVxLPn1cSz59XEs+fi1cj16uDU/urg1P7q4NT+ + 7eTY/vLr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+3k2P7q4NT+ + 6uDU/urg1P7i1cj11cSz59XEs+fVxLPn1cOy4NG9q7bRvau20b2rttG9q7bOuKc/zLWkLcy1pC3MtaQt + zLWkEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLWkEsy1pC3MtaQtzLWkLc64pz/Rvau20b2rttG9q7bRvau2 + 1cOy4NXEs+fVxLPn1cSz5+LVyPXq4NT+6uDU/urg1P7t5Nj+8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7eTY/urg1P7q4NT+6uDU/uLVyPXVxLPn1cSz59XEs+fVw7Lg + 0b2rttG9q7bRvau20b2rts64pz/MtaQtzLWkLcy1pC3MtaQSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQS + zLWkLcy1pC3MtaQtzrinP9G9q7bRvau20b2rttG9q7bVw7Lg1cSz59XEs+fVxLPn4tXI9erg1P7q4NT+ + 6uDU/u3k2P7y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/t5Nj+ + 6uDU/urg1P7q4NT+4tXI9dXEs+fVxLPn1cSz59XDsuDRvau20b2rttG9q7bRvau2zrinP8y1pC3MtaQt + zLWkLcy1pBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Il + zLeiKMy3oijMt6Ioz7ypZdC9qoPQvaqD0L2qg9PArpPWxLSs1sS0rNbEtKzYx7e05NjL5+TYy+fk2Mvn + 5NjL5+je0vXp39P36d/T9+nf0/ft5Nn87+fd/+/n3f/v593/8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Dp3v/v593/7+fd/+/n3f/t5Nn86d/T9+nf0/fp39P3 + 6N7S9eTYy+fk2Mvn5NjL5+TYy+fYx7e01sS0rNbEtKzWxLSs08Cuk9C9qoPQvaqD0L2qg8+8qWXMt6Io + zLeiKMy3oijMt6IlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy3ojjMt6I8zLeiPMy3ojzPvKmX0L2qxdC9qsXQvarF + 08Gv1NfFtevXxbXr18W169rJuu7r4tb/6+LW/+vi1v/r4tb/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/6+LW/+vi1v/r4tb/6+LW/9rJuu7XxbXr + 18W169fFtevTwa/U0L2qxdC9qsXQvarFz7ypl8y3ojzMt6I8zLeiPMy3ojgAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zLeiOMy3ojzMt6I8zLeiPM+8qZfQvarF0L2qxdC9qsXTwa/U18W169fFtevXxbXr2sm67uvi1v/r4tb/ + 6+LW/+vi1v/x6uD/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Hq4P/r4tb/6+LW/+vi1v/r4tb/2sm67tfFtevXxbXr18W169PBr9TQvarF0L2qxdC9qsXPvKmX + zLeiPMy3ojzMt6I8zLeiOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6I4zLeiPMy3ojzMt6I8z7ypl9C9qsXQvarF + 0L2qxdPBr9TXxbXr18W169fFtevaybru6+LW/+vi1v/r4tb/6+LW//Hq4P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg/+vi1v/r4tb/6+LW/+vi1v/aybru + 18W169fFtevXxbXr08Gv1NC9qsXQvarF0L2qxc+8qZfMt6I8zLeiPMy3ojzMt6I4AAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM65pQzOuaUZzrmlGc65pRnPu6gk0b6rUdG+q1HRvqtR + 0b6rUdXDsn/Vw7KC1cOygtXDsoLczLy+3c+/3N3Pv9zdz7/c4NLD5eLVx/Pi1cfz4tXH8+TXyvXu5tr/ + 7uba/+7m2v/u5tr/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/x6uD/7uba/+7m2v/u5tr/7uba/+TXyvXi1cfz4tXH8+LVx/Pg0sPl3c+/3N3Pv9zdz7/c + 3My8vtXDsoLVw7KC1cOygtXDsn/RvqtR0b6rUdG+q1HRvqtRz7uoJM65pRnOuaUZzrmlGc65pQwAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zrmlHc65pT7OuaU+zrmlPs+7qFrRvqvL0b6ry9G+q8vRvqvL2ce36tnIuOzZyLjs2ci47Ofbzvnt5Nj/ + 7eTY/+3k2P/v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh/+/n3P/t5Nj/7eTY/+3k2P/n28752ci47NnIuOzZyLjs2ce36tG+q8vRvqvL + 0b6ry9G+q8vPu6hazrmlPs65pT7OuaU+zrmlHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUdzrmlPs65pT7OuaU+z7uoWtG+q8vRvqvL + 0b6ry9G+q8vZx7fq2ci47NnIuOzZyLjs59vO+e3k2P/t5Nj/7eTY/+/n3P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+fc/+3k2P/t5Nj/ + 7eTY/+fbzvnZyLjs2ci47NnIuOzZx7fq0b6ry9G+q8vRvqvL0b6ry8+7qFrOuaU+zrmlPs65pT7OuaUd + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAM65pR3OuaU+zrmlPs65pT7Pu6ha0b6ry9G+q8vRvqvL0b6ry9nHt+rZyLjs2ci47NnIuOzn2875 + 7eTY/+3k2P/t5Nj/7+fc//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/v59z/7eTY/+3k2P/t5Nj/59vO+dnIuOzZyLjs2ci47NnHt+rRvqvL + 0b6ry9G+q8vRvqvLz7uoWs65pT7OuaU+zrmlPs65pR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAL+/nwG/v58Bv7+fAb+/nwHNuKQSzbikGM24pBjNuKQYzrqmNs+6p1fPuqdXz7qnV9G+q2/WxLLS + 1sSy0tbEstLWxLLS3My97d3Nvu/dzb7v3c2+7+jd0Pru5dn/7uXZ/+7l2f/v59z/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/u5dn/ + 7uXZ/+7l2f/o3dD63c2+793Nvu/dzb7v3My97dXEstLVxLLS1cSy0tXEstLRvqtvz7qnV8+6p1fPuqdX + z7qmNc65pRjOuaUYzrmlGM65pRK/v58Bv7+fAb+/nwG/v58Bv7+fCL+/nwi/v58Iv7+fCM24pIjNuKS3 + zbikt824pLfPuqfV0Lyp+NC8qfjQvKn41sSz+e3k2P/t5Nj/7eTY/+3k2P/y6+D/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/ + 7OPX/+zj1//s49f/7OPX/9bEs/nQvKr40Lyq+NC8qvjPu6jUzrmltc65pbXOuaW1zrmlh7+/nwi/v58I + v7+fCL+/nwi/v58Iv7+fCL+/nwi/v58IzbikiM24pLfNuKS3zbikt8+6p9XQvKn40Lyp+NC8qfjWxLP5 + 7eTY/+3k2P/t5Nj/7eTY//Lr4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lq4P/s49f/7OPX/+zj1//s49f/1sSz+dC8qvjQvKr4 + 0Lyq+M+7qNTOuaW1zrmltc65pbXOuaWHv7+fCL+/nwi/v58Iv7+fCL+/nwi/v58Iv7+fCL+/nwjNuKSI + zbikt824pLfNuKS3z7qn1dC8qfjQvKn40Lyp+NbEs/nt5Nj/7eTY/+3k2P/t5Nj/8uvg//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8urg/+zj1//s49f/7OPX/+zj1//WxLP50Lyq+NC8qvjQvKr4z7uo1M65pbXOuaW1zrmltc65pYe/v58I + v7+fCL+/nwi/v58Iv7+fCL+/nwi/v58Iv7+fCM24pIjNuKS3zbikt824pLfPuqfV0Lyp+NC8qfjQvKn4 + 1sSz+e3k2P/t5Nj/7eTY/+3k2P/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/7OPX/+zj1//s49f/7OPX/9bEs/nQvKr4 + 0Lyq+NC8qvjPu6jUzrmltc65pbXOuaW1zrmlh7+/nwi/v58Iv7+fCL+/nwi/v58Bv7+fAb+/nwG/v58B + zbuiFc27oh3Nu6IdzbuiHc+7p0fPu6h4z7uoeM+7qHjRvauN1MKx4tTCseLUwrHi1MKx4t/Sw/Hg08Xy + 4NPF8uDTxfLq4dX77+jd/+/o3f/v6N3/8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+bb/+3i1v/t4tb/7eLW/+fWxf/WtJj/1rSY/9a0mP/WtJj/ + 1rSY/9a0mP/WtJj/1rSY/+fWxf/t4tb/7eLW/+3i1v/v5tv/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/w6d7/7+jd/+/o3f/v6N3/6uHV++DTxfLg08Xy + 4NPF8t/Sw/HUwrHi1MKx4tTCseLUwrHi0b2rjc+7qXjPu6l4z7upeM+6qEfMuqgczLqoHMy6qBzMuqgV + v7+fAb+/nwG/v58Bv7+fAQAAAAAAAAAAAAAAAAAAAADMzJkEzMyZBczMmQXMzJkFz7unMc+6qGTPuqhk + z7qoZM+7qXzQvKrd0Lyq3dC8qt3QvKrd3M6/793PwPDdz8Dw3c/A8Onf0/rv59z/7+fc/+/n3P/w6d7/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/v5tr/ + 7OHU/+zh1P/s4dT/5dPB/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/5dPB/+zh1P/s4dT/ + 7OHU/+/m2v/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/v59z/7+fc/+/n3P/p39P63c/A8N3PwPDdz8Dw3M6/79C8qt3QvKrd0Lyq3dC8qt3Pu6l8 + z7qoZM+6qGTPuqhkzrqpMb+/vwS/v78Ev7+/BL+/vwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAMzMmQTMzJkFzMyZBczMmQXPu6cxz7qoZM+6qGTPuqhkz7upfNC8qt3QvKrd0Lyq3dC8qt3czr/v + 3c/A8N3PwPDdz8Dw6d/T+u/n3P/v59z/7+fc//Dp3v/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/m2v/s4dT/7OHU/+zh1P/l08H/0qyN/9Ksjf/SrI3/ + 0qyN/9Ksjf/SrI3/0qyN/9Ksjf/l08H/7OHU/+zh1P/s4dT/7+ba//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8One/+/n3P/v59z/7+fc/+nf0/rdz8Dw + 3c/A8N3PwPDczr/v0Lyq3dC8qt3QvKrd0Lyq3c+7qXzPuqhkz7qoZM+6qGTOuqkxv7+/BL+/vwS/v78E + v7+/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMyZBMzMmQXMzJkFzMyZBc+7pzHPuqhk + z7qoZM+6qGTPu6l80Lyq3dC8qt3QvKrd0Lyq3dzOv+/dz8Dw3c/A8N3PwPDp39P67+fc/+/n3P/v59z/ + 8One//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 7+ba/+zh1P/s4dT/7OHU/+XTwf/SrI3/0qyN/9Ksjf/SrI3/0qyN/9Ksjf/SrI3/0qyN/+XTwf/s4dT/ + 7OHU/+zh1P/v5tr/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6d7/7+fc/+/n3P/v59z/6d/T+t3PwPDdz8Dw3c/A8NzOv+/QvKrd0Lyq3dC8qt3QvKrd + z7upfM+6qGTPuqhkz7qoZM66qTG/v78Ev7+/BL+/vwS/v78DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMzJkBzMyZAszMmQLMzJkCz7unFM+6qCjPuqgoz7qoKM+7qTLPvKpaz7yqWs+8qlrPvKpa + 18a2ltfGtprXxraa18a2mtzNvc/ez8Dp3s/A6d7PwOnh1MXu5trN9ebazfXm2s3159zP9/Do3f/w6N3/ + 8Ojd//Do3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/ + 7ePW/+3j1v/t49b/7ePW/+DItP/dwqv/3cKr/93Cq//Yt53/06+R/9Ovkf/Tr5H/1a2N/9ingP/Yp4D/ + 2KeA/9ingP/Yp4D/2KeA/9ingP/Yp4D/1ayM/9Ovkf/Tr5H/06+R/9i3nf/dwqv/3cKr/93Cq//gyLT/ + 7ePW/+3j1v/t49b/7ePW//Lq4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6N3/8Ojd//Do3f/w6N3/59zP9ubazfXm2s315trN9eHUxe7ez8Dp3s/A6d7PwOnczb3P + 18a2mtfGtprXxraa18a2ltG7qVrRu6la0bupWtG7qVrQuqkyz7qoKM+6qCjPuqgozrqpFL+/vwK/v78C + v7+/Ar+/vwEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAqqqqAaqqqgOqqqoDqqqqA6qqqgPNuKZbzbimYc24pmHNuKZhz7ypstC9qtvQvarb + 0L2q29XEsuPdzr7v3c6+793Ovu/f0cLx7ubb/+7m2//u5tv/7ubb//Hq4P/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/q3c7/6t3O/+rdzv/q3c7/1LGV/8+mh//Ppof/ + z6aH/8mZdf/DjWX/w41l/8ONZf/Kk2r/3KR4/9ykeP/cpHj/3KR4/9yjeP/co3j/3KN4/9yjeP/Kk2n/ + w41k/8ONZP/DjWT/yZl0/8+mh//Ppof/z6aH/9Sxlf/q3c7/6t3O/+rdzv/q3c7/8erg//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8erg/+7m2//u5tv/7ubb/+7m2//f0cLw + 3c6+7t3Ovu7dzr7u1cSy49C9qtvQvarb0L2q28+8qbLNuKZhzbimYc24pmHNuKZb/4CAAv+AgAL/gIAC + /4CAAv+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqqqoBqqqqA6qqqgOqqqoD + qqqqA824plvNuKZhzbimYc24pmHPvKmy0L2q29C9qtvQvarb1cSy493Ovu/dzr7v3c6+79/RwvHu5tv/ + 7ubb/+7m2//u5tv/8erg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8erg/+rdzv/q3c7/6t3O/+rdzv/UsZX/z6aH/8+mh//Ppof/yZl1/8ONZf/DjWX/w41l/8qTav/cpHj/ + 3KR4/9ykeP/cpHj/3KN4/9yjeP/co3j/3KN4/8qTaf/DjWT/w41k/8ONZP/JmXT/z6aH/8+mh//Ppof/ + 1LGV/+rdzv/q3c7/6t3O/+rdzv/x6uD/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/x6uD/7ubb/+7m2//u5tv/7ubb/9/RwvDdzr7u3c6+7t3Ovu7VxLLj0L2q29C9qtvQvarb + z7ypss24pmHNuKZhzbimYc24plv/gIAC/4CAAv+AgAL/gIAC/4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAKqqqgGqqqoDqqqqA6qqqgOqqqoDzbimW824pmHNuKZhzbimYc+8qbLQvarb + 0L2q29C9qtvVxLLj3c6+793Ovu/dzr7v39HC8e7m2//u5tv/7ubb/+7m2//x6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/6t3O/+rdzv/q3c7/6t3O/9Sxlf/Ppof/ + z6aH/8+mh//JmXX/w41l/8ONZf/DjWX/ypNq/9ykeP/cpHj/3KR4/9ykeP/co3j/3KN4/9yjeP/co3j/ + ypNp/8ONZP/DjWT/w41k/8mZdP/Ppof/z6aH/8+mh//UsZX/6t3O/+rdzv/q3c7/6t3O//Hq4P/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/u5tv/7ubb/+7m2//u5tv/ + 39HC8N3Ovu7dzr7u3c6+7tXEsuPQvarb0L2q29C9qtvPvKmyzbimYc24pmHNuKZhzbimW/+AgAL/gIAC + /4CAAv+AgAL/gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAKqqqgKqqqoC + qqqqAqqqqgLNuKY8zbimQc24pkHNuKZBz7ypd9C9qpLQvaqS0L2qktXDsqLby7q628u6utvLurrdzb3B + 5drN8eXazfHl2s3x5drN8erg1Pfr4dX46+HV+Ovh1fjt49f87uTY/+7k2P/u5Nj/69/R/+bUw//m1MP/ + 5tTD/+bTwf/dwqr/3cKq/93Cqv/dwqr/1aqJ/9Okgf/TpIH/06SB/9Kfef/Sm3H/0ptx/9Kbcf/Wn3X/ + 46p+/+Oqfv/jqn7/46p+/+Oqfv/jqn7/46p+/+Oqfv/Wn3T/0ptx/9Kbcf/Sm3H/0p94/9Okgf/TpIH/ + 06SB/9Wqif/dwqr/3cKq/93Cqv/dwqr/5tPB/+bUw//m1MP/5tTD/+vf0f/u5Nj/7uTY/+7k2P/t49f8 + 6+HV+Ovh1fjr4dX46uDU9+XazfHl2s3x5drN8eXazfHdzb3A28u6udvLurnby7q51cOyotC9qpLQvaqS + 0L2qks+8qXfNuKZBzbimQc24pkHNuKY8/4CAAf+AgAH/gIAB/4CAAf+AgAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAz7ilIM+4pU/PuKVPz7ilT8+5pmHPvarVz72q1c+9qtXPvarV2sm559vLu+rby7vq + 28u76uHSwvfl1sf/5dbH/+XWx//exrL/z6aH/8+mh//Ppof/zqSF/8OMY//DjGP/w4xj/8OMY//WnXH/ + 26F1/9uhdf/boXX/5qyA/++2iv/vtor/77aK/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/++2iv/vtor/77aK/++2iv/mrID/26F1/9uhdf/boXX/1p1x/8OMY//DjGP/w4xj/8OMY//OpIX/ + z6aH/8+mh//Ppof/3say/+XWx//l1sf/5dbH/+HSwvfby7vq28u76tvLu+raybnnz72q1c+9qtXPvarV + z72q1c+5pmHPuKVPz7ilT8+4pU/PuKUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPuKUgz7ilT8+4pU/PuKVP + z7mmYc+9qtXPvarVz72q1c+9qtXaybnn28u76tvLu+rby7vq4dLC9+XWx//l1sf/5dbH/97Gsv/Ppof/ + z6aH/8+mh//OpIX/w4xj/8OMY//DjGP/w4xj/9adcf/boXX/26F1/9uhdf/mrID/77aK/++2iv/vtor/ + 77aK//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/77aK/++2iv/vtor/77aK/+asgP/boXX/ + 26F1/9uhdf/WnXH/w4xj/8OMY//DjGP/w4xj/86khf/Ppof/z6aH/8+mh//exrL/5dbH/+XWx//l1sf/ + 4dLC99vLu+rby7vq28u76trJuefPvarVz72q1c+9qtXPvarVz7mmYc+4pU/PuKVPz7ilT8+4pSAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAM+4pSDPuKVPz7ilT8+4pU/PuaZhz72q1c+9qtXPvarVz72q1drJuefby7vq + 28u76tvLu+rh0sL35dbH/+XWx//l1sf/3say/8+mh//Ppof/z6aH/86khf/DjGP/w4xj/8OMY//DjGP/ + 1p1x/9uhdf/boXX/26F1/+asgP/vtor/77aK/++2iv/vtor/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//vtor/77aK/++2iv/vtor/5qyA/9uhdf/boXX/26F1/9adcf/DjGP/w4xj/8OMY//DjGP/ + zqSF/8+mh//Ppof/z6aH/97Gsv/l1sf/5dbH/+XWx//h0sL328u76tvLu+rby7vq2sm558+9qtXPvarV + z72q1c+9qtXPuaZhz7ilT8+4pU/PuKVPz7ilIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz7ilHc+4pUrPuKVK + z7ilSs+5plvPvKnKz7ypys+8qcrPvKnK2Ma05NnHtujZx7bo2ce26N/NvPbj0cD/49HA/+PRwP/cw63/ + 0KaG/9Cmhv/Qpob/z6SE/8aPZv/Gj2b/xo9m/8aPZv/Yn3P/3KJ2/9yidv/conb/5q2B/++2iv/vtor/ + 77aK/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/++2iv/vtor/77aK/++2iv/mrYH/ + 3KJ2/9yidv/conb/2J9z/8aPZv/Gj2b/xo9m/8aPZv/PpIT/0KaG/9Cmhv/Qpob/3MOt/+PRwP/j0cD/ + 49HA/9/NvPbZx7bo2ce26NnHtujYxrTkz7ypys+8qcrPvKnKz7ypys+5plvPuKVKz7ilSs+4pUrPuKUd + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAt3pOBrd6Ti63ek4ut3pOLrd6Ti68h1yz + vIdcx7yHXMe8h1zHv4hd5sGIXvvBiF77wYhe+8uSZ/zfpXn/36V5/9+lef/gpnr/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+Cmev/fpXn/36V5/9+lef/Lkmf8wYhe+8GIXvvBiF77v4hd5ryHXMe8h1zHvIdcx7yHXLO3ek4u + t3pOLrd6Ti63ek4ut3pOBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAC3ek4Gt3pOLrd6Ti63ek4ut3pOLryHXLO8h1zHvIdcx7yHXMe/iF3mwYhe+8GIXvvBiF77 + y5Jn/N+lef/fpXn/36V5/+Cmev/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/4KZ6/9+lef/fpXn/36V5/8uSZ/zBiF77 + wYhe+8GIXvu/iF3mvIdcx7yHXMe8h1zHvIdcs7d6Ti63ek4ut3pOLrd6Ti63ek4GAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALd6Tga3ek4ut3pOLrd6Ti63ek4u + vIdcs7yHXMe8h1zHvIdcx7+IXebBiF77wYhe+8GIXvvLkmf836V5/9+lef/fpXn/4KZ6//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//gpnr/36V5/9+lef/fpXn/y5Jn/MGIXvvBiF77wYhe+7+IXea8h1zHvIdcx7yHXMe8h1yz + t3pOLrd6Ti63ek4ut3pOLrd6TgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAt3pOBrd6Ti63ek4ut3pOLrd6Ti68h1yzvIdcx7yHXMe8h1zHv4hd5sGIXvvBiF77 + wYhe+8uSZ/zfpXn/36V5/9+lef/gpnr/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+Cmev/fpXn/36V5/9+lef/Lkmf8 + wYhe+8GIXvvBiF77v4hd5ryHXMe8h1zHvIdcx7yHXLO3ek4ut3pOLrd6Ti63ek4ut3pOBgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAuH1PIbh9TzG4fU8xuH1PMbqAU127gVWgu4FVoLuBVaC8glalwohcyMKIXMjCiFzI + wohcyNqhde7dpHj03aR49N2kePTjqn76566C/ueugv7nroL+6bCE/u2zh//ts4f/7bOH/+20iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7bSI/+2zh//ts4f/7bOH/+mwhP7nroL+566C/ueugv7jqn763aR49N2kePTdpHj0 + 2qF17sKIXMjCiFzIwohcyMKIXMi9glamvIFVobyBVaG8gVWhu4BTXrh9TzG4fU8xuH1PMbh9TyEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4fU8puH1PPbh9Tz24fU89 + uoBTdbuBVci7gVXIu4FVyLyCVs3DiV3uw4ld7sOJXe7DiV3u4KZ6/eSqfv/kqn7/5Kp+/+uyhv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+uyhv/kqn7/5Kp+/+Sqfv/gpnr9w4ld7sOJXe7DiV3uw4ld7r2CVs68gVXJ + vIFVybyBVcm7gFN1uH1PPbh9Tz24fU89uH1PKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALh9Tym4fU89uH1PPbh9Tz26gFN1u4FVyLuBVci7gVXIvIJWzcOJXe7DiV3u + w4ld7sOJXe7gpnr95Kp+/+Sqfv/kqn7/67KG//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/67KG/+Sqfv/kqn7/ + 5Kp+/+Cmev3DiV3uw4ld7sOJXe7DiV3uvYJWzryBVcm8gVXJvIFVybuAU3W4fU89uH1PPbh9Tz24fU8p + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuH1PKbh9Tz24fU89 + uH1PPbqAU3W7gVXIu4FVyLuBVci8glbNw4ld7sOJXe7DiV3uw4ld7uCmev3kqn7/5Kp+/+Sqfv/rsob/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//rsob/5Kp+/+Sqfv/kqn7/4KZ6/cOJXe7DiV3uw4ld7sOJXe69glbO + vIFVybyBVcm8gVXJu4BTdbh9Tz24fU89uH1PPbh9TykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEHtX5RJbV+USW1flEl + tX5RJbqAVGu6gFRwuoBUcLqAVHDCiFyNxItfm8SLX5vEi1+bzZNnudWccOXVnHDl1Zxw5dadcejconb3 + 3KJ299yidvfconb36a+D/uqxhf/qsYX/6rGF/+61if/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/qsYX/ + 6rGF/+qxhf/pr4P+3KJ299yidvfconb33KJ299adcejVnHDm1Zxw5tWccObNk2e5xYtemsWLXprFi16a + wohbjLqAVHC6gFRwuoBUcLqAVGu1flEltX5RJbV+USW1flEltX5RBwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALV+UQ61flFFtX5RRbV+UUW1flFFuoBUybqAVNK6gFTSuoBU0sOKXuTHjmLt + x45i7ceOYu3Um2/0566C/+eugv/nroL/6K+D//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6K+D/+eugv/nroL/566C/9Wbb/TIjmHsyI5h7MiOYezEil3juoBU0rqAVNK6gFTSuoBUybV+UUW1flFF + tX5RRbV+UUW1flEOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtX5RDrV+UUW1flFF + tX5RRbV+UUW6gFTJuoBU0rqAVNK6gFTSw4pe5MeOYu3HjmLtx45i7dSbb/TnroL/566C/+eugv/or4P/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//or4P/566C/+eugv/nroL/1Ztv9MiOYezIjmHs + yI5h7MSKXeO6gFTSuoBU0rqAVNK6gFTJtX5RRbV+UUW1flFFtX5RRbV+UQ4AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAC1flEOtX5RRbV+UUW1flFFtX5RRbqAVMm6gFTSuoBU0rqAVNLDil7k + x45i7ceOYu3HjmLt1Jtv9Oeugv/nroL/566C/+ivg//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+ivg//nroL/566C/+eugv/Vm2/0yI5h7MiOYezIjmHsxIpd47qAVNK6gFTSuoBU0rqAVMm1flFF + tX5RRbV+UUW1flFFtX5RDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAKqAVQKqgFUCqoBVAqqAVQK5gFIVuYBSHLmAUhy5gFIcvIFVK72BVju9gVY7vYFWO8CFWUfFjGBz + xYxgc8WMYHPFjGBzyY9j18mPZN7Jj2TeyY9k3tCWauvTmm7y05pu8tOabvLco3f36bCE/+mwhP/psIT/ + 6rGF//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6rGF/+mwhP/psIT/6bCE/9yjd/fTmm3x + 05pt8dOabfHQlmrryY9k3smPZN7Jj2TeyY9j18WMX3PFjF9zxYxfc8WMX3PAhVlHvYFWO72BVju9gVY7 + vIFVK7mAUhy5gFIcuYBSHLmAUhWqgFUCqoBVAqqAVQKqgFUCqoBVBqqAVQaqgFUGqoBVBrmAUk+5gFJq + uYBSarmAUmq8gVWhvYFW372BVt+9gVbfwYZa49KXa/HSl2vx0pdr8dKXa/HpsIX+67KH/+uyh//rsof/ + 7rWK//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61iv/rsof/67KH/+uyh//psIX+ + 0Zdq8tGXavLRl2ry0Zdq8sGGWuO9gVbfvYFW372BVt+8gVWhuYBSarmAUmq5gFJquYBST6qAVQaqgFUG + qoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGuYBST7mAUmq5gFJquYBSaryBVaG9gVbfvYFW372BVt/Bhlrj + 0pdr8dKXa/HSl2vx0pdr8emwhf7rsof/67KH/+uyh//utYr/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7rWK/+uyh//rsof/67KH/+mwhf7Rl2ry0Zdq8tGXavLRl2rywYZa472BVt+9gVbf + vYFW37yBVaG5gFJquYBSarmAUmq5gFJPqoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGqoBVBqqAVQa5gFJP + uYBSarmAUmq5gFJqvIFVob2BVt+9gVbfvYFW38GGWuPSl2vx0pdr8dKXa/HSl2vx6bCF/uuyh//rsof/ + 67KH/+61iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYr/67KH/+uyh//rsof/ + 6bCF/tGXavLRl2ry0Zdq8tGXavLBhlrjvYFW372BVt+9gVbfvIFVobmAUmq5gFJquYBSarmAUk+qgFUG + qoBVBqqAVQaqgFUGqoBVBqqAVQaqgFUGqoBVBrmAUk+5gFJquYBSarmAUmq8gVWhvYFW372BVt+9gVbf + wYZa49KXa/HSl2vx0pdr8dKXa/HpsIX+67KH/+uyh//rsof/7rWK//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+61iv/rsof/67KH/+uyh//psIX+0Zdq8tGXavLRl2ry0Zdq8sGGWuO9gVbf + vYFW372BVt+8gVWhuYBSarmAUmq5gFJquYBST6qAVQaqgFUGqoBVBqqAVQa/gEAEv4BABL+AQAS/gEAE + un1SSrp9UmS6fVJkun1SZLuAVJy7gVXdu4FV3buBVd3AhVnh0ZZq8NGWavDRlmrw0ZZq8OmwhP7rsob/ + 67KG/+uyhv/utYn/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+62iv/ptYn/6bWJ/+m1if/ptYn/ + 6baI/+m2iP/ptoj/6baI/+63iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+uyhv/rsob/ + 67KG/+mwhP7Rlmrw0ZZq8NGWavDRlmrwwIVZ4buBVd27gVXdu4FV3buAVJy6fVJkun1SZLp9UmS6fVJK + v4BABL+AQAS/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS6fVJKun1SZLp9UmS6fVJku4BUnLuBVd27gVXd + u4FV3cCFWeHRlmrw0ZZq8NGWavDRlmrw6bCE/uuyhv/rsob/67KG/+61if/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7raK/+m1if/ptYn/6bWJ/+m1if/ptoj/6baI/+m2iP/ptoj/7reK//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//utYn/67KG/+uyhv/rsob/6bCE/tGWavDRlmrw0ZZq8NGWavDAhVnh + u4FV3buBVd27gVXdu4BUnLp9UmS6fVJkun1SZLp9Ukq/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS/gEAE + v4BABLp9Ukq6fVJkun1SZLp9UmS7gFScu4FV3buBVd27gVXdwIVZ4dGWavDRlmrw0ZZq8NGWavDpsIT+ + 67KG/+uyhv/rsob/7rWJ//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utor/6bWJ/+m1if/ptYn/ + 6bWJ/+m2iP/ptoj/6baI/+m2iP/ut4r/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/rsob/ + 67KG/+uyhv/psIT+0ZZq8NGWavDRlmrw0ZZq8MCFWeG7gVXdu4FV3buBVd27gFScun1SZLp9UmS6fVJk + un1SSr+AQAS/gEAEv4BABL+AQAS/gEAEv4BABL+AQAS/gEAEun1SSrp9UmS6fVJkun1SZLuAVJy7gVXd + u4FV3buBVd3AhVnh0ZZq8NGWavDRlmrw0ZZq8OmwhP7rsob/67KG/+uyhv/utYn/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+62iv/ptYn/6bWJ/+m1if/ptYn/6baI/+m2iP/ptoj/6baI/+63iv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+uyhv/rsob/67KG/+mwhP7Rlmrw0ZZq8NGWavDRlmrw + wIVZ4buBVd27gVXdu4FV3buAVJy6fVJkun1SZLp9UmS6fVJKv4BABL+AQAS/gEAEv4BABL+AQAG/gEAB + v4BAAb+AQAG6fVIUun1SG7p9Uhu6fVIbun9UK7p/VT26f1U9un9VPb6DWEzEiV6IxIleiMSJXojEiV6I + yo9j4MqPY+fKj2Pnyo9j59OZbPDXnXD0151w9NedcPTfpXn467GG/+uxhv/rsYb/7LKH//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+q1if/otYj/6LWI/+i1iP/RsYH/va16/72tev+9rXr/tqx4/6Opc/+jqXP/ + o6lz/6Opc/+jqnP/o6pz/6Oqc/+jqnP/t6x4/76tev++rXr/vq16/9Kxgf/otYj/6LWI/+i1iP/qtYn/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7LOG/+uyhf/rsoX/67KF/9+mefjXnXD0151w9NedcPTTmWzw + yo9j58qPY+fKj2Pnyo9j4MSJXojEiV6IxIleiMSJXoi+g1hMun9VPbp/VT26f1U9un9UK7p9Uhu6fVIb + un1SG7p9UhS/gEABv4BAAb+AQAG/gEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUB + qlVVA6pVVQOqVVUDt3lTFrl9U2K5fVNiuX1TYrl9U2K8gVXWvIFV3ryBVd68gVXeyI1h6s2TZvDNk2bw + zZNm8Nmfcvbpr4T/6a+E/+mvhP/qsIX/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/57WI/+W0h//ltIf/ + 5bSH/8avff+rqnT/q6p0/6uqdP+iqXL/iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/4mla/+jqXL/ + rKp0/6yqdP+sqnT/x699/+W0h//ltIf/5bSH/+e1iP/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsYT/ + 6bCD/+mwg//psIP/2Z9y9s2TZvDNk2bwzZNm8MiNYeq8gVXevIFV3ryBVd68gVXWuX1TYrl9U2K5fVNi + uX1TYrd5UxaqVVUDqlVVA6pVVQOqVVUBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKpVVQGqVVUDqlVVA6pVVQO3eVMWuX1TYrl9U2K5fVNi + uX1TYryBVda8gVXevIFV3ryBVd7IjWHqzZNm8M2TZvDNk2bw2Z9y9umvhP/pr4T/6a+E/+qwhf/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//ntYj/5bSH/+W0h//ltIf/xq99/6uqdP+rqnT/q6p0/6Kpcv+JpWv/ + iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/6Opcv+sqnT/rKp0/6yqdP/Hr33/5bSH/+W0h//ltIf/ + 57WI//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+qxhP/psIP/6bCD/+mwg//Zn3L2zZNm8M2TZvDNk2bw + yI1h6ryBVd68gVXevIFV3ryBVda5fVNiuX1TYrl9U2K5fVNit3lTFqpVVQOqVVUDqlVVA6pVVQEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + qlVVAapVVQOqVVUDqlVVA7d5Uxa5fVNiuX1TYrl9U2K5fVNivIFV1ryBVd68gVXevIFV3siNYerNk2bw + zZNm8M2TZvDZn3L26a+E/+mvhP/pr4T/6rCF//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+e1iP/ltIf/ + 5bSH/+W0h//Gr33/q6p0/6uqdP+rqnT/oqly/4mla/+JpWv/iaVr/4mla/+JpWv/iaVr/4mla/+JpWv/ + o6ly/6yqdP+sqnT/rKp0/8evff/ltIf/5bSH/+W0h//ntYj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6rGE/+mwg//psIP/6bCD/9mfcvbNk2bwzZNm8M2TZvDIjWHqvIFV3ryBVd68gVXevIFV1rl9U2K5fVNi + uX1TYrl9U2K3eVMWqlVVA6pVVQOqVVUDqlVVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUBqlVVAqpVVQKqVVUCt3lTDLl9UzS5fVM0 + uX1TNLl9UzS8gFVyvIBVd7yAVXe8gFV3xYpelsiOYaXIjmGlyI5hpc+UacHWnHDr1pxw69accOvXnXLt + 4KZ69uCmevbgpnr24KZ69uuyhv7ss4f/7LOH/+yzh//vtor/8LeL//C3i//wt4v/7reK/+u2if/rton/ + 67aJ/+m1if/RsYH/0bGB/9Gxgf/RsYH/v657/7qtev+6rXr/uq16/6yve/+fsXv/n7F7/5+xe/+csnz/ + kraA/5K2gP+StoD/kraA/5K2gP+StoD/kraA/5K2gP+csnz/n7F7/5+xe/+fsXv/rK97/7qtev+6rXr/ + uq16/7+ue//RsYH/0bGB/9Gxgf/RsYH/6bWJ/+u2if/rton/67aJ/+63iv/wt4v/8LeL//C3i//vtor/ + 7LOH/+yzh//ss4f/67KG/uCmevbgpnr24KZ69uCmevbXnnHt1pxw69accOvWnHDrz5VowciOYaXIjmGl + yI5hpcWKXpW8gVV2vIFVdryBVXa8gVVyuX1TNLl9UzS5fVM0uX1TNLd5UwyqVVUCqlVVAqpVVQKqVVUB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAH/AAAB/wAAAf8AAAG4elA1 + uHtRT7h7UU+4e1FPun9UhbuBVdW7gVXVu4FV1b2DV9jMkWXrzJFl68yRZevMkWXr5at//Oivg//or4P/ + 6K+D/+20iP/wt4v/8LeL//C3i//stor/5bSH/+W0h//ltIf/4bOG/62rdf+tq3X/rat1/62rdf+Qpm3/ + iaVr/4mla/+JpWv/jbB4/5G5g/+RuYP/kbmD/5S9if+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ + ncmY/5S9if+RuYP/kbmD/5G5g/+NsHj/iaVr/4mla/+JpWv/kKZt/62rdf+tq3X/rat1/62rdf/hs4b/ + 5bSH/+W0h//ltIf/7LaK//C3i//wt4v/8LeL/+20iP/or4P/6K+D/+ivg//lq3/8zJFl68yRZevMkWXr + zJFl672DV9i7gVXVu4FV1buBVdW6f1SFuHtRT7h7UU+4e1FPuHtRNQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA/wAAAf8AAAH/AAAB/wAAAbh6UDW4e1FPuHtRT7h7UU+6f1SFu4FV1buBVdW7gVXV + vYNX2MyRZevMkWXrzJFl68yRZevlq3/86K+D/+ivg//or4P/7bSI//C3i//wt4v/8LeL/+y2iv/ltIf/ + 5bSH/+W0h//hs4b/rat1/62rdf+tq3X/rat1/5Cmbf+JpWv/iaVr/4mla/+NsHj/kbmD/5G5g/+RuYP/ + lL2J/53JmP+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/lL2J/5G5g/+RuYP/kbmD/42weP+JpWv/ + iaVr/4mla/+Qpm3/rat1/62rdf+tq3X/rat1/+Gzhv/ltIf/5bSH/+W0h//stor/8LeL//C3i//wt4v/ + 7bSI/+ivg//or4P/6K+D/+Wrf/zMkWXrzJFl68yRZevMkWXrvYNX2LuBVdW7gVXVu4FV1bp/VIW4e1FP + uHtRT7h7UU+4e1E1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAB/wAAAf8AAAH/AAAB + uHpQNbh7UU+4e1FPuHtRT7p/VIW7gVXVu4FV1buBVdW9g1fYzJFl68yRZevMkWXrzJFl6+Wrf/zor4P/ + 6K+D/+ivg//ttIj/8LeL//C3i//wt4v/7LaK/+W0h//ltIf/5bSH/+Gzhv+tq3X/rat1/62rdf+tq3X/ + kKZt/4mla/+JpWv/iaVr/42weP+RuYP/kbmD/5G5g/+UvYn/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ + ncmY/53JmP+UvYn/kbmD/5G5g/+RuYP/jbB4/4mla/+JpWv/iaVr/5Cmbf+tq3X/rat1/62rdf+tq3X/ + 4bOG/+W0h//ltIf/5bSH/+y2iv/wt4v/8LeL//C3i//ttIj/6K+D/+ivg//or4P/5at//MyRZevMkWXr + zJFl68yRZeu9g1fYu4FV1buBVdW7gVXVun9Uhbh7UU+4e1FPuHtRT7h7UTUAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP8AAAH/AAAB/wAAAf8AAAG4elAquHtRP7h7UT+4e1E/un9UaruBVaq7gVWq + u4FVqr2DV67LkGTIy5BkyMuQZMjLkGTI3KV58N6oe/beqHv23qh79t6ugPvesoP93rKD/d6yg/3asYP+ + 0rGB/9Kxgf/SsYH/0LGB/6iuef+ornn/qK55/6iuef+TrXX/jax0/42sdP+NrHT/kbV+/5S8h/+UvIf/ + lLyH/5bAjP+dyZj/ncmY/53JmP+dyZj/ncmY/53JmP+dyZj/ncmY/5bAjP+UvIf/lLyH/5S8h/+RtX7/ + jax0/42sdP+NrHT/k611/6iuef+ornn/qK55/6iuef/QsYH/0rGB/9Kxgf/SsYH/2rGD/t6yg/3esoP9 + 3rKD/d6ugPveqHv23qh79t6oe/bcpXnwy5BkyMuQZMjLkGTIy5BkyL2DV667gVWqu4FVqruBVaq6f1Rq + uHtRP7h7UT+4e1E/uHtRKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtHtPCLR7Tzq0e086tHtPOrR7TzqwhVa/ + sIVW07CFVtOwhVbTnpNf6ZSbZPeUm2T3lJtk95CeZvqIpWv/iKVr/4ila/+Jpm3/k7uH/5O7h/+Tu4f/ + k7uH/5zGlf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/k7uH/5O7h/+Tu4f/ + k7uH/4mmbf+IpWv/iKVr/4ila/+Qnmb6lJtk95SbZPeUm2T3npNf6bCFVtOwhVbTsIVW07CFVr+0e086 + tHtPOrR7Tzq0e086tHtPCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAC0e08ItHtPOrR7Tzq0e086tHtPOrCFVr+whVbTsIVW07CFVtOek1/plJtk95SbZPeUm2T3 + kJ5m+oila/+IpWv/iKVr/4mmbf+Tu4f/k7uH/5O7h/+Tu4f/nMaV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zGlf+Tu4f/k7uH/5O7h/+Tu4f/iaZt/4ila/+IpWv/iKVr/5CeZvqUm2T3 + lJtk95SbZPeek1/psIVW07CFVtOwhVbTsIVWv7R7Tzq0e086tHtPOrR7Tzq0e08IAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR7Twi0e086tHtPOrR7Tzq0e086 + sIVWv7CFVtOwhVbTsIVW056TX+mUm2T3lJtk95SbZPeQnmb6iKVr/4ila/+IpWv/iaZt/5O7h/+Tu4f/ + k7uH/5O7h/+cxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5O7h/+Tu4f/ + k7uH/5O7h/+Jpm3/iKVr/4ila/+IpWv/kJ5m+pSbZPeUm2T3lJtk956TX+mwhVbTsIVW07CFVtOwhVa/ + tHtPOrR7Tzq0e086tHtPOrR7TwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAtHtPCLR7Tzq0e086tHtPOrR7TzqwhVa/sIVW07CFVtOwhVbTnpNf6ZSbZPeUm2T3 + lJtk95CeZvqIpWv/iKVr/4ila/+Jpm3/k7uH/5O7h/+Tu4f/k7uH/5zGlf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/k7uH/5O7h/+Tu4f/k7uH/4mmbf+IpWv/iKVr/4ila/+Qnmb6 + lJtk95SbZPeUm2T3npNf6bCFVtOwhVbTsIVW07CFVr+0e086tHtPOrR7Tzq0e086tHtPCAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHefYBF3n2Aqd59gKnefYCp5oGI8fKJlrnyiZa58omWu + fKJlroKla96DpWzmg6Vs5oOlbOaPtH/0lr2K/pa9iv6WvYr+mMCO/p3Hlv+dx5b/nceW/53Hlv+dyJj/ + nciY/53ImP+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/ + nciY/53ImP+dyJj/nceW/53Hlv+dx5b/nceW/5jAjv6WvYr+lr2K/pa9iv6PtH/0g6Vs5oOlbOaDpWzm + gqVr3nyiZa58omWufKJlrnyiZa55oGI8d59gKnefYCp3n2Aqd59gEQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + d59gEnefYC13n2Atd59gLXmhYj97o2W2e6NltnujZbZ7o2W2f6ds4ICnbeeAp23ngKdt5462gfWWv43+ + lr+N/pa/jf6ZwpH+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + mcKR/pa/jf6Wv43+lr+N/o62gfWAp23ngKdt54Cnbed/p2zge6NltnujZbZ7o2W2e6NltnmhYj93n2At + d59gLXefYC13n2ASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3n2ASd59gLXefYC13n2AteaFiP3ujZbZ7o2W2 + e6NltnujZbZ/p2zggKdt54CnbeeAp23njraB9Za/jf6Wv43+lr+N/pnCkf6eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+ZwpH+lr+N/pa/jf6Wv43+jraB9YCnbeeAp23n + gKdt53+nbOB7o2W2e6NltnujZbZ7o2W2eaFiP3efYC13n2Atd59gLXefYBIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHefYBJ3n2Atd59gLXefYC15oWI/e6NltnujZbZ7o2W2e6Nltn+nbOCAp23ngKdt54CnbeeOtoH1 + lr+N/pa/jf6Wv43+mcKR/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nCkf6Wv43+lr+N/pa/jf6OtoH1gKdt54CnbeeAp23nf6ds4HujZbZ7o2W2e6NltnujZbZ5oWI/ + d59gLXefYC13n2Atd59gEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHedXiV3nV4od51eKHedXih6oWRleqJlg3qiZYN6omWDfaRpk4CnbqyAp26sgKdurIOqcrSQuYTn + kLmE55C5hOeQuYTnlL6K9ZW+i/eVvov3lb6L95nDkfybxpX/m8aV/5vGlf+cx5b/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMeW/5vGlf+bxpX/m8aV/5nDkfyVvov3 + lb6L95W+i/eUvor1kLmE55C5hOeQuYTnkLmE54OqcrSAp26sgKdurICnbqx9pGmTeqJlg3qiZYN6omWD + eqFkZXedXih3nV4od51eKHedXiUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd51eOHedXjx3nV48d51ePHqhZJd6omXF + eqJlxXqiZcV9pWnUgahv64Gob+uBqG/rhKx07pfBj/+XwY//l8GP/5fBj/+dyJj/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+XwY//l8GP/5fBj/+XwY// + hKx07oGob+uBqG/rgahv632ladR6omXFeqJlxXqiZcV6oWSXd51ePHedXjx3nV48d51eOAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3nV44d51ePHedXjx3nV48eqFkl3qiZcV6omXFeqJlxX2ladSBqG/rgahv64Gob+uErHTu + l8GP/5fBj/+XwY//l8GP/53ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nciY/5fBj/+XwY//l8GP/5fBj/+ErHTugahv64Gob+uBqG/rfaVp1HqiZcV6omXF + eqJlxXqhZJd3nV48d51ePHedXjx3nV44AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXjh3nV48d51ePHedXjx6oWSX + eqJlxXqiZcV6omXFfaVp1IGob+uBqG/rgahv64SsdO6XwY//l8GP/5fBj/+XwY//nciY/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/l8GP/5fBj/+XwY// + l8GP/4SsdO6BqG/rgahv64Gob+t9pWnUeqJlxXqiZcV6omXFeqFkl3edXjx3nV48d51ePHedXjgAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd6BfDHegXxl3oF8Zd6BfGXmhYSR7omRR + e6JkUXuiZFF7omRRf6drf4Cna4KAp2uCgKdrgoavdr6IsXnciLF53IixedyKs3zljbaB8422gfONtoHz + j7iD9ZrEk/+axJP/msST/5rEk/+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/53ImP+axJP/msST/5rEk/+axJP/j7iD9Y22gfONtoHzjbaB84qzfOWIsXnc + iLF53IixedyGr3a+gKdrgoCna4KAp2uCf6drf3uiZFF7omRRe6JkUXuiZFF5oWEkd6BfGXegXxl3oF8Z + d6BfDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3oF8dd6BfPnegXz53oF8+eaFhWnuiZMt7omTLe6Jky3uiZMuDqm/qg6tw7IOrcOyDq3Ds + kbuH+ZjDkf+Yw5H/mMOR/5rFlP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/msWU/5jDkf+Yw5H/mMOR/5G7h/mDq3Dsg6tw7IOrcOyDqm/q + e6Jky3uiZMt7omTLe6Jky3mhYVp3oF8+d6BfPnegXz53oF8dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXx13oF8+d6BfPnegXz55oWFa + e6Jky3uiZMt7omTLe6Jky4Oqb+qDq3Dsg6tw7IOrcOyRu4f5mMOR/5jDkf+Yw5H/msWU/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+axZT/ + mMOR/5jDkf+Yw5H/kbuH+YOrcOyDq3Dsg6tw7IOqb+p7omTLe6Jky3uiZMt7omTLeaFhWnegXz53oF8+ + d6BfPnegXx0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAd6BfHXegXz53oF8+d6BfPnmhYVp7omTLe6Jky3uiZMt7omTLg6pv6oOrcOyDq3Ds + g6tw7JG7h/mYw5H/mMOR/5jDkf+axZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFlP+Yw5H/mMOR/5jDkf+Ru4f5g6tw7IOrcOyDq3Ds + g6pv6nuiZMt7omTLe6Jky3uiZMt5oWFad6BfPnegXz53oF8+d6BfHQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAgJ9gAYCfYAGAn2ABgJ9gAXacXxJ2nF8YdpxfGHacXxh4n2A2eKBhV3igYVd4oGFX + e6Nlb4Cna9KAp2vSgKdr0oCna9KGr3Xth69274evdu+Hr3bvk72J+pnEkv+ZxJL/mcSS/5vGlf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + m8aV/5nEkv+ZxJL/mcSS/5O9ifqHr3bvh69274evdu+Gr3XtgKdr0oCna9KAp2vSgKdr0nujZW94oGFX + eKBhV3igYVd3oGE1dp5gGHaeYBh2nmAYdp5gEoCfYAGAn2ABgJ9gAYCfYAGAn2AIgJ9gCICfYAiAn2AI + dpxfiHacX7d2nF+3dpxft3ieYtV6oGT4eqBk+HqgZPiAp235mMOR/5jDkf+Yw5H/mMOR/57JmP+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57JmP+YwpD/mMKQ/5jCkP+YwpD/f6dt+XmgZPh5oGT4eaBk+HifYtR2nmC1dp5gtXaeYLV2nmCH + gJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAh2nF+Idpxft3acX7d2nF+3eJ5i1XqgZPh6oGT4 + eqBk+ICnbfmYw5H/mMOR/5jDkf+Yw5H/nsmY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmY/5jCkP+YwpD/mMKQ/5jCkP9/p235 + eaBk+HmgZPh5oGT4eJ9i1HaeYLV2nmC1dp5gtXaeYIeAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AI + gJ9gCHacX4h2nF+3dpxft3acX7d4nmLVeqBk+HqgZPh6oGT4gKdt+ZjDkf+Yw5H/mMOR/5jDkf+eyZj/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZj/mMKQ/5jCkP+YwpD/mMKQ/3+nbfl5oGT4eaBk+HmgZPh4n2LUdp5gtXaeYLV2nmC1 + dp5gh4CfYAiAn2AIgJ9gCICfYAiAn2AIgJ9gCICfYAiAn2AIdpxfiHacX7d2nF+3dpxft3ieYtV6oGT4 + eqBk+HqgZPiAp235mMOR/5jDkf+Yw5H/mMOR/57JmP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+YwpD/mMKQ/5jCkP+YwpD/ + f6dt+XmgZPh5oGT4eaBk+HifYtR2nmC1dp5gtXaeYLV2nmCHgJ9gCICfYAiAn2AIgJ9gCICfYAGAn2AB + gJ9gAYCfYAF0nGAVdJxgHXScYB10nGAdd6BjR3mhY3h5oWN4eaFjeHujZo1/p2zif6ds4n+nbOJ/p2zi + irN88Yu0ffKLtH3yi7R98pbAjfubxpX/m8aV/5vGlf+cx5b/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+bxpX/m8aV/5vGlf+WwI37 + i7R98ou0ffKLtH3yirN88X+nbOJ/p2zif6ds4n+nbOJ7o2aNeKFjeHihY3h4oWN4eJ9iR3eaXBx3mlwc + d5pcHHeaXBWAn2ABgJ9gAYCfYAGAn2ABAAAAAAAAAAAAAAAAAAAAAGaZZgRmmWYFZplmBWaZZgV3oWMx + eKFjZHihY2R4oWNkeaFkfHuiZt17ombde6Jm3XuiZt2Hr3jviLB58IiwefCIsHnwlb6L+pvFlP+bxZT/ + m8WU/5zHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nMeW/5vFlP+bxZT/m8WU/5W+i/qIsHnwiLB58IiwefCHr3jve6Jm3XuiZt17ombd + e6Jm3XmhZHx4oWNkeKFjZHihY2R4oGExgIBABICAQASAgEAEgIBAAwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAZplmBGaZZgVmmWYFZplmBXehYzF4oWNkeKFjZHihY2R5oWR8e6Jm3XuiZt17ombd + e6Jm3YeveO+IsHnwiLB58IiwefCVvov6m8WU/5vFlP+bxZT/nMeW/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cx5b/m8WU/5vFlP+bxZT/ + lb6L+oiwefCIsHnwiLB58IeveO97ombde6Jm3XuiZt17ombdeaFkfHihY2R4oWNkeKFjZHigYTGAgEAE + gIBABICAQASAgEADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmmWYEZplmBWaZZgVmmWYF + d6FjMXihY2R4oWNkeKFjZHmhZHx7ombde6Jm3XuiZt17ombdh69474iwefCIsHnwiLB58JW+i/qbxZT/ + m8WU/5vFlP+cx5b/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zHlv+bxZT/m8WU/5vFlP+Vvov6iLB58IiwefCIsHnwh69473uiZt17ombd + e6Jm3XuiZt15oWR8eKFjZHihY2R4oWNkeKBhMYCAQASAgEAEgIBABICAQAMAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAGaZZgFmmWYCZplmAmaZZgJ3oWMUeKFjKHihYyh4oWMoeaFkMnqiZlp6omZa + eqJmWnqiZlqBqnCWgapwmoGqcJqBqnCah693z4ixeemIsXnpiLF56Yy0fu6QuoX1kLqF9ZC6hfWSvIf3 + nMeW/5zHlv+cx5b/nMeW/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5zHlv+cx5b/nMeW/5zHlv+SvIf2kbqF9ZG6hfWRuoX1jLV+7oixeemIsXnp + iLF56Yevd8+BqnCagapwmoGqcJqBqnCWe6JmWnuiZlp7omZae6JmWnmhZDJ4oWMoeKFjKHihYyh4oGEU + gIBAAoCAQAKAgEACgIBAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAABVqlUBVapVA1WqVQNVqlUDVapVA3agYVt2oGFhdqBhYXagYWF5oWOy + eqFk23qhZNt6oWTbf6ds44avd++Gr3fvhq9374mye/GaxZT/msWU/5rFlP+axZT/nciY/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/msWU/5rFlP+axZT/ + msWU/4qze/CHsHfuh7B37oewd+5/p2zjeqFk23qhZNt6oWTbeaFjsnagYWF2oGFhdqBhYXagYVuAgIAC + gICAAoCAgAKAgIACgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWqVQFVqlUD + VapVA1WqVQNVqlUDdqBhW3agYWF2oGFhdqBhYXmhY7J6oWTbeqFk23qhZNt/p2zjhq9374avd++Gr3fv + ibJ78ZrFlP+axZT/msWU/5rFlP+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/53ImP+axZT/msWU/5rFlP+axZT/irN78Iewd+6HsHfuh7B37n+nbON6oWTb + eqFk23qhZNt5oWOydqBhYXagYWF2oGFhdqBhW4CAgAKAgIACgICAAoCAgAKAgIAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVapVAVWqVQNVqlUDVapVA1WqVQN2oGFbdqBhYXagYWF2oGFh + eaFjsnqhZNt6oWTbeqFk23+nbOOGr3fvhq9374avd++JsnvxmsWU/5rFlP+axZT/msWU/53ImP+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/5rFlP+axZT/ + msWU/5rFlP+Ks3vwh7B37oewd+6HsHfuf6ds43qhZNt6oWTbeqFk23mhY7J2oGFhdqBhYXagYWF2oGFb + gICAAoCAgAKAgIACgICAAoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqlUA + VapVAlWqVQJVqlUCVapVAnagYTx2oGFBdqBhQXagYUF5oWN3eqFkknqhZJJ6oWSSf6ZrooSsc7qErHO6 + hKxzuoaud8GRuobxkbqG8ZG6hvGRuobxlb+M95bAjfiWwI34lsCN+JrEk/ycx5f/nMeX/5zHl/+dyJf/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciX/5zHl/+cx5f/ + nMeX/5rEk/yWwI34lsCN+JbAjfiVv4z3kbqG8ZG6hvGRuobxkbqG8Yevd8CFrXO5ha1zuYWtc7l/p2ui + eqFkknqhZJJ6oWSSeaFjd3agYUF2oGFBdqBhQXagYTyAgIABgICAAYCAgAGAgIABgICAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB3m14gd5teT3ebXk93m15PeJxgYXqgZdV6oGXVeqBl1XqgZdWEq3Ln + ha106oWtdOqFrXTqkbuH95nDkv+Zw5L/mcOS/5vFlP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+bxZT/mcOS/5nDkv+Zw5L/kbuH94WtdOqFrXTqha106oSrcud6oGXV + eqBl1XqgZdV6oGXVeJxgYXebXk93m15Pd5teT3ebXiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebXiB3m15P + d5teT3ebXk94nGBheqBl1XqgZdV6oGXVeqBl1YSrcueFrXTqha106oWtdOqRu4f3mcOS/5nDkv+Zw5L/ + m8WU/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+Zw5L/ + mcOS/5nDkv+Ru4f3ha106oWtdOqFrXTqhKty53qgZdV6oGXVeqBl1XqgZdV4nGBhd5teT3ebXk93m15P + d5teIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5teIHebXk93m15Pd5teT3icYGF6oGXVeqBl1XqgZdV6oGXV + hKty54WtdOqFrXTqha106pG7h/eZw5L/mcOS/5nDkv+bxZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8WU/5nDkv+Zw5L/mcOS/5G7h/eFrXTqha106oWtdOqEq3Ln + eqBl1XqgZdV6oGXVeqBl1XicYGF3m15Pd5teT3ebXk93m14gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3m14d + d5teSnebXkp3m15KeJxgWnqgZcd6oGXHeqBlx3qgZceDq3Lbha103oWtdN6FrXTekLqF8JfBkPuXwZD7 + l8GQ+5nDkvycx5f+nMeX/pzHl/6cx5f+nciY/53ImP+dyJj/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsiY/57ImP+eyJj/nsiY/5zHl/6cx5f+nMeX/pzHl/6Zw5L8 + l8GQ+5fBkPuXwZD7kLqF8IWtdN6FrXTeha103oOrctt6oGXHeqBlx3qgZcd6oGXHeJxgWnebXkp3m15K + d5teSnebXh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHacXi92nF42dpxeNnacXjZ6oGSNe6Flx3uhZcd7oWXHfqRp0oKqcemCqnHpgqpx6YOsc+qWwY7/ + lsGO/5bBjv+WwY7/nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+XwY7/ + l8GO/5fBjv+XwY7/hKxz6oKqcemCqnHpgqpx6X6kadJ7oWXHe6Flx3uhZcd6oGSNdpxeNnacXjZ2nF42 + dpxeLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdpxeL3acXjZ2nF42dpxeNnqgZI17oWXH + e6Flx3uhZcd+pGnSgqpx6YKqcemCqnHpg6xz6pbBjv+WwY7/lsGO/5bBjv+cx5f/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nceX/5fBjv+XwY7/l8GO/5fBjv+ErHPqgqpx6YKqcemCqnHp + fqRp0nuhZcd7oWXHe6Flx3qgZI12nF42dpxeNnacXjZ2nF4vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2nF4vdpxeNnacXjZ2nF42eqBkjXuhZcd7oWXHe6Flx36kadKCqnHpgqpx6YKqcemDrHPq + lsGO/5bBjv+WwY7/lsGO/5zHl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dx5f/ + l8GO/5fBjv+XwY7/l8GO/4Ssc+qCqnHpgqpx6YKqcel+pGnSe6Flx3uhZcd7oWXHeqBkjXacXjZ2nF42 + dpxeNnacXi8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHacXi92nF42dpxeNnacXjZ6oGSN + e6Flx3uhZcd7oWXHfqRp0oKqcemCqnHpgqpx6YOsc+qWwY7/lsGO/5bBjv+WwY7/nMeX/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+XwY7/l8GO/5fBjv+XwY7/hKxz6oKqcemCqnHp + gqpx6X6kadJ7oWXHe6Flx3uhZcd6oGSNdpxeNnacXjZ2nF42dpxeLwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdpxeCXacXgt2nF4LdpxeC3qgZBx7oWUoe6FlKHuhZSh8omc1faRpT32kaU99pGlP + fqVqV4GpcMWBqXDFgalwxYGpcMWGrXXkhq527IauduyGrnbsj7mD9pfBjv6XwY7+l8GO/pnDkf6eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5nDkf6XwY7+l8GO/pfBjv6PuYP2hq527IauduyGrnbs + hq115IKpcMWCqXDFgqlwxYKpcMV+pWpXfaRpT32kaU99pGlPfKJnNXuhZSh7oWUoe6FlKHqgZBx2nF4L + dpxeC3acXgt2nF4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAHabXQ52m10pdptdKXabXSl3nF8yeqBltnqgZbZ6oGW2eqBltn+ma92Ap2zn + gKds54CnbOeMtH3zlb+L/pW/i/6Vv4v+l8KP/p7Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + l8KP/pW/i/6Vv4v+lb+L/oy0ffOAp2zngKds54CnbOd/pmvdeqBltnqgZbZ6oGW2eqBltnecXzJ2m10p + dptdKXabXSl2m10OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdptdDnabXSl2m10p + dptdKXecXzJ6oGW2eqBltnqgZbZ6oGW2f6Zr3YCnbOeAp2zngKds54y0ffOVv4v+lb+L/pW/i/6Xwo/+ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+Xwo/+lb+L/pW/i/6Vv4v+jLR984CnbOeAp2zn + gKds53+ma916oGW2eqBltnqgZbZ6oGW2d5xfMnabXSl2m10pdptdKXabXQ4AAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB2m10OdptdKXabXSl2m10pd5xfMnqgZbZ6oGW2eqBltnqgZbZ/pmvd + gKds54CnbOeAp2znjLR985W/i/6Vv4v+lb+L/pfCj/6eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5fCj/6Vv4v+lb+L/pW/i/6MtH3zgKds54CnbOeAp2znf6Zr3XqgZbZ6oGW2eqBltnqgZbZ3nF8y + dptdKXabXSl2m10pdptdDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHabXQZ2m10T + dptdE3abXRN3nF8YeqBlVXqgZVV6oGVVeqBlVX6lanF/pWt4f6VreH+la3iGrnWiirJ7x4qye8eKsnvH + i7R90o22gPGNtoDxjbaA8Y22gPGNtoDxjbaA8Y22gPGNtoDxjLR90ouze8eLs3vHi7N7x4eudqJ/pWt4 + f6VreH+la3h+pWpxeqBlVXqgZVV6oGVVeqBlVXecXxh2m10TdptdE3abXRN2m10GAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + dJddEnSXXRZ0l10WdJddFnmfY1t6oGSXeqBkl3qgZJd7oWWsfaRo5X2kaOV9pGjlfaRo5X2kaOV9pGjl + faRo5X2kaOV8oWWrfKBklnygZJZ8oGSWe59jWnSXXRZ0l10WdJddFnSXXRIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0l10SdJddFnSXXRZ0l10WeZ9jW3qgZJd6oGSX + eqBkl3uhZax9pGjlfaRo5X2kaOV9pGjlfaRo5X2kaOV9pGjlfaRo5XyhZat8oGSWfKBklnygZJZ7n2Na + dJddFnSXXRZ0l10WdJddEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHSXXRJ0l10WdJddFnSXXRZ5n2NbeqBkl3qgZJd6oGSXe6FlrH2kaOV9pGjlfaRo5X2kaOV9pGjl + faRo5X2kaOV9pGjlfKFlq3ygZJZ8oGSWfKBklnufY1p0l10WdJddFnSXXRZ0l10SAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddDXSXXRB0l10QdJddEHmfY0N6oGRv + eqBkb3qgZG97oWV/faRorH2kaKx9pGisfaRorH2kaKx9pGisfaRorH2kaKx8oWV+fKBkbnygZG58oGRu + e59jQnSXXRB0l10QdJddEHSXXQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHeZZgR3mWYPd5lmD3eZZg93mWYP + baRbDm2kWw5tpFsObaRbDm2kWwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAd5lmBHeZZg93mWYPd5lmD3eZZg9tpFsObaRbDm2kWw5tpFsObaRbBAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3mWYEd5lmD3eZZg93mWYP + d5lmD22kWw5tpFsObaRbDm2kWw5tpFsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAHeZZgR3mWYPd5lmD3eZZg93mWYPbaRbDm2kWw5tpFsObaRbDm2kWwQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////g + B///////////////////4Af//////////////////+AH///////////////////gB/////////////// + ///gAAAH////////////////4AAAB////////////////+AAAAf////////////////gAAAH//////// + ///////AAAAAAAP/////////////wAAAAAAD/////////////8AAAAAAA//////////////AAAAAAAP/ + ///////////AAAAAAAAAA///////////wAAAAAAAAAP//////////8AAAAAAAAAD///////////AAAAA + AAAAA///////////wAAAAAAAAAP/////////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH///////+A + AAAAAAAAAAAB////////gAAAAAAAAAAAAf//////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf// + //+AAAAAAAAAAAAAAAH/////gAAAAAAAAAAAAAAB////AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAA + AAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP + 8AAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAA + AAAP///wAAAAAAAAAAAAAAAAD/////+AAAAAAAAAAAAB////////gAAAAAAAAAAAAf///////4AAAAAA + AAAAAAH///////+AAAAAAAAAAAAB////////+AAAAAAAAAAAH/////////gAAAAAAAAAAB/////////4 + AAAAAAAAAAAf////////+AAAAAAAAAAAH///////+AAAAAAAAAAAAAAf//////gAAAAAAAAAAAAAH/// + ///4AAAAAAAAAAAAAB//////+AAAAAAAAAAAAAAf////8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAA + AAAP///wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAA + AAAA//8AAAAAAAAAAAAAAAAAAP///4AAAAAAAAAAAAAAH/////+AAAAAAAAAAAAAAB//////gAAAAAAA + AAAAAAAf/////4AAAAAAAAAAAAAAH///////+AAAAAAAAAAAH/////////gAAAAAAAAAAB/////////4 + AAAAAAAAAAAf////////+AAAAAAAAAAAH////////4AAAAAAAAAAAAH///////+AAAAAAAAAAAAB//// + ////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH//////4AAAAAAAAAAAAAAAf////+AAAAAAAAAAAAA + AAH/////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf///wAAAAAAAAAAAAAAAAAA//8AAAAAAAAA + AAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAA + AAAAD/AAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAP///wAAAAAAAA + AAAAAAAAD///8AAAAAAAAAAAAAAAAA//////gAAAAAAAAAAAAf///////4AAAAAAAAAAAAH///////+A + AAAAAAAAAAAB////////gAAAAAAAAAAAAf/////////AAAAAAAAAA///////////wAAAAAAAAAP///// + /////8AAAAAAAAAD///////////AAAAAAAAAA///////////wAAAAAAAAAP////////////AAAAAAAP/ + ////////////wAAAAAAD/////////////8AAAAAAA//////////////AAAAAAAP//////////////+AA + AAf////////////////gAAAH////////////////4AAAB////////////////+AAAAf///////////// + ////4Af//////////////////+AH///////////////////gB///////////////////4Af///////// + KAAAAEAAAACAAAAAAQAgAAAAAAAAQAAAYQoAAGEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqAsy7qg/Mu6oPyLakDsi2pA7ItqQC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy7qgLMu6oP + zLuqD8i2pA7ItqQOyLakAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANG5ogjRuaIT + 0LqoMdC7q4PQvKuM0sCtyNLArcjSwK3I0sCtyNC8q4vPu6qC0LqoMdG5ohPRuaIIAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIJ0bmiFtC6qDjQu6uX0LyrodLAreXSwK3l0sCt5dLAreXQvKuhz7uqltC6qDjRuaIW + 0bmiCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADRuaIL0bmiENC8qkDQvKtq0r6shdPArazXxrS64NLE4OHUx+Pp4NP46eDT+Ong0/jp4NP4 + 4dTG49/SxN/XxrS608CtrNK+rIXQvKtq0LyqQNG5ohDRuaILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiD9G5ohbQvKpY0LyrkdK+rLLTwK3j2Me16ePXyvrl2s37 + 8erg//Hq4P/x6uD/8erg/+Xazfvj18r62Me16dPArePSvqyy0LyrkdC8qljRuaIW0bmiDwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAybmiEsm5ohTRvqxT0b6sY9PAroPUwa6T3My8tOHSxNLj1sjf + 5tvO9Ojd0Pbs49j97eTZ/fLr4f/y6+H/8uvh//Lr4f/t5Nn97OPY/ejd0Pbm287049bI3+HSxNLczLy0 + 1MGuk9PAroPRvaxj0b2sU8m5ohTJuaISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMm5oh/JuaIh0b6si9G+rKXTwK7Q + 1MGv5t/PwPLn28796+HW/vLr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh/+vh1v7n287938/A8tTBr+bTwK7Q0b2spdG9rIvJuaIhybmiHwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLWkBMy1pBXNt6YZ0b2rVdG9q1XTwrB7 + 08Kxfd7Qwb7f0sPP4tTG5uPWyPLo3dD47OLX/u7m2/7y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/u5tv+7OLX/ujd0Pjj1sjy4tTG5t/Rw8/ez8G+08KxfdPCsHvRvatV + 0b2rVc23phnMtaQVzLWkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy1pAnMtaQt + zbemNtG9q7bRvau21cSz5NXEs+fm28756uDU/u/n3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3f/q4NT+ + 5tvO+dXEs+fVxLPk0b2rttG9q7bNt6Y2zLWkLcy1pAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy3ognMt6IU + zrunI9C9qkLRvqxK1MGwbNXCsnPczL3O3My9zt/Sw+3f0sPv6uDU++3k2P7w6d7/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/w6d7/7eTY/urg1Pvf0sPv39LD7dzMvc7czL3O1cKyc9TBsGzRvqxK0L2qQs67pyPMt6IU + zLeiCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADMt6IczLeiPM67p2rQvarF0r+tzdfFtevYx7fs6+LW/+vi1v/y6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lq4P/r4tb/6+LW/9jHt+zXxbXr + 0r+tzdC9qsXOu6dqzLeiPMy3ohwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADOuaUJzrmlDNC9qh3Rvqsp0r+sQtK/rV/Vw7GF18e10djIt9fdzb7v3s/A8Ozk2P/s5Nj/ + 8uvg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+D/ + 7OTY/+zk2P/ez8Dw3c2+79jIt9fXx7XR1cOxhdK/rV/Sv6xC0b6rKdC9qh3OuaUMzrmlCQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzrmlLc65pT7QvaqT0b6ry9XDstrZyLjs4NLD8u3k2P/u5dr/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/u5dr/7eTY/+DSw/LZyLjs1cOy2tG+q8vQvaqT + zrmlPs65pS0AAAAAAAAAAAAAAAAAAAAAv7+fAb+/nwHNuKQLzbikDM66pjrOuqZK0sCtmtPBr87XxrXd + 28u77eHUxfPt5Nn/7uba//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7uba/+3k2f/h1MXz + 28u77dfGtd3Twa/O0sCtms66pkrOuqY6zrmlDM65pQu/v58Bv7+fAb+/nwi/v58IzbikoM24pLfPu6jn + 0Lyp+OLUxvzt5Nj/7+fc//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/v59z/7OPX/+HUxfzQvKr40Lup5s65pbXOuaWev7+fCL+/nwi/v58I + v7+fCM24pKDNuKS3z7uo59C8qfji1Mb87eTY/+/n3P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/7+fc/+zj1//h1MX80Lyq+NC7qebOuaW1 + zrmlnr+/nwi/v58Iv7+fAb+/nwHNvqEPzb6hEc+6qFXPuqhu0b6sstK/rt/YyLjo3tHC8eTZy/bv59z/ + 8Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8ene/+zi1f/p28z/1LCT/9Swk//UsJP/1LCT/+nbzP/s4tX/8ene//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+/n3P/k2cv23tHC8djIuOjSv63f + 0b6sss+6qG7PuqhVyrqrEMq6qw6/v58Bv7+fAQAAAAAAAAAAzMyZBMzMmQXPuqhLz7qoZNC8qq3QvKrd + 1sW15t3PwPDj18r17+fc//Do3f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Do3v/s4dT/6drL/9Ksjf/SrI3/0qyN/9Ksjf/p2sv/7OHU//Do3v/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Do3f/v59z/ + 49fK9d3PwPDWxbXm0Lyq3dC8qq3Puqhkz7qoSr+/vwS/v78DAAAAAAAAAAAAAAAAAAAAAMzMmQHMzJkB + z7qoD8+6qBTOu6okzruqL9K/rlPTwbB+1cOyn9fGteLZybnl4dTF8uLVx/Pv59z/7+fc//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh/+/l2f/s4NL/4867/9a0mf/TrpH/y557/82fe//apnz/2qZ8/9qlfP/apXz/ + zZ97/8ueev/TrpH/1rSZ/+POu//s4NL/7+XZ//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/v59z/ + 4tXH8uHUxfHZybnl18a14tXDsp/TwbB+07+uU9K6qS7Ruqgjz7qoFM+6qA+/v78Bv7+/AQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAqqqqgPMuKYvzbimYc+7qIrQvarb08Gu393Ovu/e0MDw + 7ubb/+7m2//y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/u5Nf/6t3O/9/Hsv/Ppof/zJ9+/8ONZf/GkGj/ + 3KR4/9ykeP/co3j/3KN4/8aQZ//DjWT/zJ9+/8+mh//fx7L/6t3O/+7k1//y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/u5tv/7ubb/97QwO/dzr7u08Gu39C9qtvPu6iKzbimYc63pS7/gIAC/4CAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqqqgGqqqoBzLimEM24piDPu6gu + 0L2qSdLArVXXxbSE2Ma1i9vMvOPbzLzj49bI8OPWyPHo3M786d3Q/+DIs//bvaX/1bGV/9Cnh//TpYL/ + 16N7/9mkfP/gqH7/4ql//+mxhf/psYX/6bCF/+mwhf/iqX7/4Kh9/9mkfP/Xo3v/06WC/9Cnh//VsZX/ + 272l/+DIs//p3dD/6NzO/OPWyPHj1sjw28y849vMvOPYxrWK18W0hNLArVXQvapJz7uoLs24piDOt6UP + /4CAAf+AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAADPuKUQz7ilT8+5pljPvarVz72q1drKuunby7vq49TF++XWx//Wtpz/ + z6aH/8mYdP/DjGP/zZRq/9uhdf/gp3v/77aK/++2iv/wt4v/8LeL//C3i//wt4v/77aK/++2iv/gp3v/ + 26F1/82Uav/DjGP/yZh0/8+mh//Wtpz/5dbH/+PUxfvby7vq2sq66c+9qtXPvarVz7mmWM+4pU/PuKUQ + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz7ilB8+4pSXOtqIryrCYfMqwmHzMqo3R + zKmM19Gsj/XSrY/91qiF/tilgP/ZpHz/26N4/9+nfP/mrYH/6a+D//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/6a+D/+atgf/fp3z/26N4/9mkfP/YpYD/1qiF/tKtj/3RrI/1zKmM18yqjdHKsJh8 + yrCYfM62oivPuKUlz7ilBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + t3pOA7d6Ti63ek4uvIdcvbyHXMfAiF7xwYhe+9WbcP7fpXn/6K+D//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//or4P/36V5/9WbcP7BiF77 + wIhe8byHXMe8h1y9t3pOLrd6Ti63ek4DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + uH1PCLh9Txi5f1Iku4FVULyBVVPAhlp7wIZae86Wa9fOl2zd05pv9tSbcP3gpnv+5qyA/+uyhv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 67KG/+asgP/gpnv+1Jtw/dOab/bOl2zdzpZr18CGWnvAhlp7vIFVU7yBVVC6f1IkuH1PGLh9TwgAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALh9TxS4fU89uX9SWbuBVci8glbLw4ld7sOJXe7iqHz+5Kp+/+60iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utIj/5Kp+/+KofP7DiV3uw4ld7r2CVsu8gVXJ + un9SWbh9Tz24fU8UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALV+UQu1flESuX9TJLqAVDi9g1dJwYdabMOKXYHJj2PXyZBk2dCWavPQlmrz + 5qyA/uetgf/utYn/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/+etgf/mrID+ + 0JZq89CWavPKkGTZyo9j18SKXYHBh1psvoNXSbqAVDi5f1MktX5RErV+UQsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEptX5RRbl/U4e6gFTSv4VZ28eOYu3OlWnx + 566C/+ivg//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/6K+D/+eugv/PlWjwyI5h7L+FWdu6gFTSuX9Th7V+UUW1flEp + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqoBVAaqAVQG5gFIMuYBSDryBVRq9gVYev4ZZQ7+HWlzBh1uW + wohc2MaMYODNlGjv05pu8+ivg//psIT/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+mwhP/or4P/05pt8s6UZ+/GjGDg + wohc2MGIW5a/h1pcvoZZQ72BVh68gVUauYBSDrmAUgyqgFUBqoBVAaqAVQaqgFUGuYBSXbmAUmq8gVXA + vYFW38qPY+rSl2vx3qR4+Ouyh//ttIj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7bSI/+uyh//dpHj40Zdq8smPYuq9gVbfvIFVwLmAUmq5gFJdqoBVBqqAVQaqgFUG + qoBVBrmAUl25gFJqvIFVwL2BVt/Kj2Pq0pdr8d6kePjrsof/7bSI//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+20iP/rsof/3aR4+NGXavLJj2LqvYFW37yBVcC5gFJq + uYBSXaqAVQaqgFUGv4BABL+AQAS6fVJXun1SZLuAVb27gVXdyY5i6NGWavDeo3f367KG/+20iP/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//vt4v/6bWJ/+m1if/ptoj/6baI/++3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//ttIj/67KG/96jd/fRlmrw + yY5i6LuBVd27gFW9un1SZLp9Ule/gEAEv4BABL+AQAS/gEAEun1SV7p9UmS7gFW9u4FV3cmOYujRlmrw + 3qN39+uyhv/ttIj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/77eL/+m1if/ptYn/6baI/+m2iP/vt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 7bSI/+uyhv/eo3f30ZZq8MmOYui7gVXdu4BVvbp9UmS6fVJXv4BABL+AQAS/gEABv4BAAbp9Ugy6fVIN + un1VG7p9VSC/g1lTwIRZdcKHW6jDiFziyI5i6NKYa/LXnXH16rCF/+qxhf/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/7LaK/+a0iP/ZsoP/tKx3/7Crdv+Wp2//lqdv/5anb/+Wp2// + sat2/7Wsd//ZsoP/5rSI/+y2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 6rGF/+qxhP/XnXD10phr8siOYujDiFziwodbqMCEWXW/g1lTun1VILp9VRu6fVINun1SDL+AQAG/gEAB + AAAAAAAAAAAAAAAAAAAAAKpVVQKqVVUDuXxTPLl9U2K7gFScvIFV3sKHW+TNk2bw05ls8+mvhP/psIT/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+y2if/ltIf/1rGC/6uqdP+mqXP/ + iaVr/4mla/+JpWv/iaVr/6epc/+sqnT/1rGC/+W0h//ston/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL/+mwhP/psIP/05ls882TZvDCh1vkvIFV3ruAVJy5fVNiuXxTPKpVVQOqVVUC + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUBqlVVAbl8UxC5fVMavH9UKr1/VDzAhFhR + w4hcesWKXo7Jj2PgypBk4daccPDWnHDw6bCE/uqxhf/vtor/8LeL/+u2if/otYj/0rGB/7+ue/+zrHj/ + oqly/5+sdv+YtX//mLaB/5i/jP+Yv4z/mL+M/5i/jP+YtoH/mLV//5+sdv+iqXL/s6x4/7+ue//SsYH/ + 6LWI/+u2if/wt4v/77aK/+qxhf/psIT+1pxw8NaccPDKkGThyY9j4MWKXo7DiFx6wIRZULyBVTu7gFQq + uX1TGrl8UxCqVVUBqlVVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAP8AAAD/AAABunhPG7h7UU+5fVNqu4FV1byCVtbMkWXrzJFl6+atgf7or4P/7rWJ//C3i//ptYj/ + 5bSH/8evff+tq3X/n6lx/4mla/+LqnH/kbmD/5O7hv+dyZj/ncmY/53JmP+dyZj/k7uG/5G5g/+LqnH/ + iaVr/5+pcf+tq3X/x699/+W0h//ptYj/8LeL/+61if/or4P/5q2B/syRZevMkWXrvIJW1ruBVdW5fVNq + uHtRT7h7URoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAALp4Twu4e1EguX1TKruBVVW8glZYxotfgcaLX4HJl2re + yZhq5bykcva6pnT6sal1/a2rdv+lsHv/nbWA/5q3g/+Wu4f/lr2J/5nDkP+Zw5H/nsmZ/57Jmf+eyZn/ + nsmZ/5nDkf+Zw5D/lr2J/5a7h/+at4P/nbWA/6Wwe/+tq3b/sal1/bqmdPq8pHL2yZhq5cmXat7Gi1+B + xotfgbyCVli7gVVVuX1TKrh7USC4e1ELAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tHtPBLR7Tzq0e086sIVWybCFVtOZl2LwlJtk94yiafyIpWv/jrF6/5O7h/+XwY7/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/l8GO/5O7h/+OsXr/iKVr/4yiafyUm2T3 + mZdi8LCFVtOwhVbJtHtPOrR7Tzq0e08EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3n2AEd59gFXydYBuKmF90iphfdJiWYdWZlmHclqhz9JWsd/qTs339kraA/5W8iP+Ywo// + msWT/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFk/+Ywo// + lbyI/5K2gP+Ts339lax3+paoc/SZlmHcmJZh1YqYX3SKmF90fJ1gG3efYBV3n2AEAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd59gCXefYC14oGE2e6NltnujZbaAp23kgKdt55K7h/mWv43+ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8aV/5a/jf6Su4f5gKdt54CnbeR7o2W2e6NltnigYTZ3n2At + d59gCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd51eCXedXhR5oGIjeqJlQnujZ0p+pmtsf6dsc4evds6Hr3bO + irN87Yuzfe+Wv437mcKR/pzHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+ZwpH+lr+N+4uzfe+Ks3zt + h692zoevds5/p2xzfqZrbHujZ0p6omVCeaBiI3edXhR3nV4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXhx3nV48eaBianqiZcV8o2fN + gahv64OqceyXwY//l8GP/57ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsiY/5fBj/+XwY//g6px7IGob+t8o2fNeqJlxXmgYmp3nV48d51eHAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXwl3oF8MeqJjHXuiZCl8o2ZC + faRnX3+nbIWBqnDRg6ty14eveO+IsHrwmMOR/5jDkf+eyZj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+Yw5H/mMOR/4iwevCHr3jvg6ty14GqcNF/p2yF + faRnX3yjZkJ7omQpeqJjHXegXwx3oF8JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8t + d6BfPnqiY5N7omTLf6dq2oOrcOyKs3zymMOR/5nEk/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nEk/+Yw5H/irN88oOrcOx/p2rae6Jky3qiY5N3oF8+d6BfLQAAAAAAAAAAAAAAAAAAAACAn2AB + gJ9gAXacXwt2nF8MeKBgOnigYEp8pGaafaVozoGpbd2FrXPtjLV+85jDkv+axZP/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+axZP/mMOS/4y1fvOFrXPtgalt3X2laM58pGaad6BgSnegYDp2nmAM + dp5gC4CfYAGAn2ABgJ9gCICfYAh2nF+gdpxft3mfY+d6oGT4jLV//JjDkf+bxpX/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+YwpD/ + jLV//HmgZPh4oGPmdp5gtXaeYJ6An2AIgJ9gCICfYAiAn2AIdpxfoHacX7d5n2PneqBk+Iy1f/yYw5H/ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+bxZT/mMKQ/4y1f/x5oGT4eKBj5naeYLV2nmCegJ9gCICfYAiAn2ABgJ9gAXKbYQ9ym2ER + eKFjVXihY258pGiyfaVp34OrcuiKsnvxkLmE9pvFlP+cxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+cxpX/m8WU/5C5hPaKsnvxg6ty6H2kad98pGiyeKFjbnigY1V4l1gQeJdYDoCfYAGAn2AB + AAAAAAAAAABmmWYEZplmBXihY0t4oWNkeqJlrXuiZt2BqW/miLB58I+3gvWbxZT/nMaV/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5vFlP+Pt4L1iLB58IGpb+Z7ombdeqJlrXihY2R4oWJK + gIBABICAQAMAAAAAAAAAAAAAAAAAAAAAZplmAWaZZgF4oWMPeKFjFHmiZSR5omUvfKVpU32man5/qGyf + galv4oOscuWLtH7yjLaA85vGlf+bxpX/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/m8aV/5vGlf+NtoDyjLV+8YSscuWBqW/if6hsn32man58pWlT + e6FnLnqhZiN4oWMUeKFiD4CAQAGAgEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqlUC + VapVA3WgYS92oGFheKFjinqhZNt9pGjfhq9374exefCaxZT/msWU/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5rFlP+axZT/iLF574ewd+59pGjf + eqFk23ihY4p2oGFhdp9iLoCAgAKAgIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAVapVAVWqVQF1oGEQdqBhIHihYy56oWRJfKNnVYCnbYSBqG6Lhq5344aud+ONtoDw + jreB8ZjCkfybxZT/nciX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciX/5vFlP+YwpH8jreB8Y22gPCGrnfj + hq5344GoboqBqG2EfKNnVXqhZEl4oWMudqBhIHafYg+AgIABgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHebXhB3m15P + d5xfWHqgZdV6oGXVhKxz6YWtdOqVv4z7mcOS/5zHl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHl/+Zw5L/ + lb+M+4WtdOqErHPpeqBl1XqgZdV3nF9Yd5teT3ebXhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3m14Hd5teJXecXyl6oGVjeqBlY4Gpb4eCqW+KirJ70IuzfeGOt4LtkLmF85W/jfqaxZP/ + m8aV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zGlf+axZP/ + lb+N+pC5hfOOt4Lti7N94Yqye9CCqW+Kgalvh3qgZWN6oGVjd5xfKXebXiV3m14HAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2nF4ydpxeNnuhZap7oWXH + gKdt3oKqcemNt4H1lsGO/5nEkv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+axJL/l8GO/463gfWCqnHpgKdt3nuhZcd7oWWqdpxeNnacXjIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + dpxeHnacXiB7oWVme6Fld3+mbJCBqG+ciLF6wY22geKPuYTqk7yI9ZW/i/iaxZP/m8aU/57Jmf+eyZn/ + nsmZ/57Jmf+bxpT/msWT/5W/i/iTvIj1kLmE6o62geKJsXrBgahvnH+mbJB7oWV3e6FlZnacXiB2nF4e + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2m10bdptdKXmfZHR6oGW2faNoyoCnbOeGrnXt + lb+L/pbAjf6eyZn/nsmZ/57Jmf+eyZn/lsCN/pW/i/6GrnXtgKds532jaMp6oGW2eZ9kdHabXSl2m10b + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdptdFHabXR55n2RV + eqBlhX2jaJaApmuvha1zvZC5hOORuoXllsCN+JbAjfiWwI34lsCN+JG6heWRuoTiha1zvYCma699o2iW + eqBlhXmfZFV2m10edptdFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB0l10JdJddFnidYjh6oGSXe6FloX2kaOV9pGjlfaRo5X2kaOV8oWWh + fKBklnqdYjh0l10WdJddCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddCHSXXRN4nWIxeqBkg3uhZYx9pGjI + faRoyH2kaMh9pGjIfKFli3ygZIJ6nWIxdJddE3SXXQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB3mWYCd5lmD3eZZg9tpFsObaRbDm2kWwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5lmAneZZg93mWYPbaRbDm2kWw5tpFsCAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////4H/////////gf//// + ////gAH///////+AAf//////+AAAH//////4AAAf/////4AAAAH/////gAAAAf////AAAAAAD///8AAA + AAAP//8AAAAAAAD//wAAAAAAAP/wAAAAAAAAD/AAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADAAAAAAAAAA8AAAAAAAAAD/AAAAAAAAD/8AAAAAAAAP//wAAAAAA////AAAAAAD////AAA + AAA////AAAAAAAP//8AAAAAAA//8AAAAAAAAP/wAAAAAAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAA/wAAAAAAAAD/8AAAAAAAP//wAAAAAAA////AAA + AAA////wAAAAAA////AAAAAAD///AAAAAAAA//8AAAAAAAD/8AAAAAAAAA/wAAAAAAAADwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAPAAAAAAAAAA/wAAAAAAAA//AAAAAAAAD//8AAA + AAAP///wAAAAAA////+AAAAB/////4AAAAH/////+AAAH//////4AAAf//////+AAf///////4AB//// + ////+B/////////4H////ygAAAAwAAAAYAAAAAEAIAAAAAAAACQAAGEKAABhCgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzLuqCcy7qg/ItqQOyLakCAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiB9C6qBPQu6s80b6sVdHArWXRv6xk0b6sVM+7qjzQuqcT + 0bmiBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0bmiEtC6qDDQu6uX0b6sxtLAreXSwK3l + 0b6sxc+7qpbQuqcw0bmiEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIB0bmiEdC7qTnQvKt007+trNbEs8Ph08bm + 593Q8uvi1/rr4tf6593Q8uDTxubWxLPD07+trNC8q3TQu6k50bmiEdG5ogEAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIBybmiB9C9qxbRvqwi07+rPtbDsmnXxban + 2cm429zNvezm28/77eTZ/fHq4P/x6uD/7eTZ/ebbz/vczb3s2cm429fFtqfWw7Jp07+rPtG9rCLQvasW + ybmiB8m5ogEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIHybmiIdC9q3DRvqyo + 1MGv49zMvO/n28798Ojd//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+fbzv3czLzv + 1MGv49G9rKjQvatwybmiIcm5ogcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQLzLWkG9G9q13Sv612 + 1MOymN7QwcDj1sjc59vO9Orf0/nu5dn+8erf//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8erf/+7l2f7q39P559vO9OPWyNze0MHA1MOymNK/rXbRvatdzLWkG8y1pAsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6ICzLijA9C9qgjOuaga + zrinNdK/rZ/Twa/C1sa16OPWyfXr4dX+8uvg//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvg/+vh1f7j1sn11sa16NPBr8LSv62fzrinNc65qBrQvaoI + zLijA8y3ogIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Ij + zLijP9C9qrfTwa/M18W14+fcz/fs49f88erf/vHq4P/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6uD/8erf/uzj1/zn3M/3 + 18W149PBr8zQvaq3zLijP8y3oiMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUU + z7uoJNG+q1HUwrBv1sSzht3Pv9jg0sPl4tXH8+zi1/3v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh/+/n3P/s4tf94tXH8+DSw+Xdz7/Y1sSzhtTCsG/RvqtRz7uoJM65pRQAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAADOuaUyz7uoWtG+q8vWxLPf2sm57ezj1/7v59z/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh/+/n3P/s49f+2sm57dbEs9/RvqvLz7uoWs65pTIAAAAA + AAAAAAAAAAC/v58GzLikPs24pJLPu6jG1cOy2uje0fXr4tb57eXa+/Hp3//x6uD/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hq4P/x6d//7eXa++vh1vno3dD1 + 1cOy2tC7qcbOuaWRzbmlPr+/nwa/v58GzLmkP824pJPPu6jM1cOy4Ojd0Pjs4tb67ubb/PHq4P/y6+D/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6d7/7uPW/+ze0P/s3tD/ + 7uPW//Hp3v/y6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4P/x6uD/ + 7ubb/Ovi1vrn3M/41cOy4NC7qczOuaWSzbmlPr+/nwYAAAAAzMyZAszMmQXPuqhRz7upfNC8qt3YyLjo + 3tDB8e7m2/7w6d7/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Hp3v/s4dT/ + 3MGp/9Ksjf/SrI3/3MGp/+zh1P/x6d7/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/u5tv+3tDB8djIuOjQvKrdz7upfM+6qFG/v78Ev7+/AgAAAAAAAAAAzMyZAczMmQLPuqgg + z7upMs+8qlrVw7OB18e3nt3PwObh1MXu5trN9e7l2v3w6d7/8uvh//Lr4f/y6+H/8uvh//Do3P/t49b/ + 4Mi0/9u+pv/Tr5H/1qqH/9ingP/Yp4D/1qqH/9Ovkf/bvqb/4Mi0/+3j1v/w6Nz/8uvh//Lr4f/y6+H/ + 8uvh//Dp3v/u5dr95trN9eHUxe7dz8Dm18e3ntXDs4DRu6la0LqpMs+6qCC/v78Cv7+/AQAAAAAAAAAA + AAAAAAAAAAAAAAAAqqqqAaqqqgPMuKY5zbimYtC9qs3VxLLb3c6+6Org1Pnu5tv98erg/vHq4P/x6uD/ + 8ejd/+3i1f/o2sr/1LCU/82hgP/Fj2f/05xx/92lef/dpHn/05tx/8WPZv/NoYD/1LCU/+jayv/t4tX/ + 8ejd//Hq4P/x6uD/8erg/u7m2/3q4NT53c6+59XEstrQvarNzbimYs63pTn/gIAC/4CAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqAKqqqgDMuKYCzbimBNC9qgnRu6go0buoVtG/rL3TwrDb + 3My96+LTxPfl1cb/0auN/8yfff/Fj2f/1p5z/96lef/ttIj/7rWK/++2iv/vtor/7rWJ/+20iP/epXn/ + 1p5z/8WPZ//Mn33/0auN/+XVxv/i08T33My969PCsNvRv6y90buoVtG7qCjQvaoJzbimBM63pQL/gIAA + /4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPuKUT + z7ilL8y1n37NtJ2h0LKZ3NS1nPDXtpz91aaD/9WifP/VnXP/4ad8/+asgP/vtor/8LeL//C3i//wt4v/ + 8LeL/++2iv/mrID/4ad8/9Wdc//Vonz/1aaD/9e2nP3UtZzw0LKZ3M20naHMtZ9+z7ilL8+4pRMAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAALd6TiW6gVVNvIdcx7+IXebCiV/73qR4/+asgP/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//mrID/3qR4/8KJX/u/iF3mvIdcx7qBVU23ek4l + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAuH1PArh9Ty+6gFNdu4FVoMGHW8DJj2PQ3aR49OOqfvrnroL+7LOH/+61if/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYn/7LOH/+eugv7jqn76 + 3aR49MmPY9DBh1vAvIFVobuAU164fU8vuH1PAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAtX5RA7V+UQ65gFMfuoBULL+FWF7DiV2Oxoxg08uRZevSmGz05q2B/+yzh//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//ss4f/5q2B/9KYbPTLkWXrxoxg1MSJXY7AhVheu4BULLmAUx+1flEOtX5RAwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtX5RDrV+UUW5gFOau4FV08eNYezUm2/0566C/+61if/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utYn/566C/9Wbb/THjWHru4FV07mAU5q1flFF + tX5RDgAAAAAAAAAAAAAAAAAAAACqgFUEuIBSHLmAUkC9gVZ4wYVajc2TZ6zWnHDT2qF17eCne/flrID7 + 7LOH/++2iv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//vtor/7LOH/+WsgPrgp3v3 + 2qF17dWccNPNk2atwYVajr2BVni5gFJAuIBSHKqAVQSqgFUGuIBSLrmAUmq9gVbIwYZa49KXa/HhqHz5 + 67KH//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/67KH/+GofPrRl2rywYZa472BVsi5gFJquIBSLqqAVQa/gEAEun1RKrp9UmS7gVXF + wIVZ4dGWavDhp3v567KG//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7LaK/+m1if/ptoj/7LaJ//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/67KG/+Gne/nRlmrwwIVZ4buBVcW6fVJkun1RKr+AQAS/gEAC + un1RGbp9Ujy7gFV3v4VZkMyRZbfVm2/a2qB08uKpfPnnrYH77bSI/++2iv/wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/7LaK/+e1iP/UsoL/yrB//8Ovff/Dr3z/yrB//9Wygv/ntYj/7LaK//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//vtor/7bSI/+eugfviqXz52qB08tWbb9rMkWW3v4VZkLuAVXe6fVI8 + un1RGb+AQAIAAAAAAAAAAAAAAACqVVUCt3lTFrl9U2K7gFWsvYJW38ySZe/Zn3L26a+E/++1iv/wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/57WI/9myg/+rqnT/l6dv/4mla/+JpWv/l6dv/6yqdP/asoP/ + 57WI//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//vton/6bCD/9mfcvbMkmXvvYJW37uAVay5fVNi + t3lTFqpVVQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqVVUAt3lTBLl9UxS8flMjvn9UMMGFWmzEiV2b + xoxg3dGXa+vYnnLy6rGF/+20iP/wt4v/6LWI/9Wygv+6rXn/oqly/5qrdP+WtoD/mL2J/5nCj/+Zwo// + mL2J/5a2gP+aq3T/oqly/7qtef/VsoL/6LWI//C3i//ttIj/6rGF/9iecvLRl2vrxoxg3cSJXZvBhVps + vIFVL7uAVSK5fVMUt3lTBKpVVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA + yF8/A7h7UT26f1Rqu4FVqsiNYcLPlWnR3qh79t6ugPvesoP907GB/8Gwfv+ornn/k611/46veP+UvIf/ + mcSR/53JmP+dyZj/mcSR/5S8h/+Or3j/k611/6iuef/BsH7/07GB/96yg/3eroD73qh79s+VadHIjWHC + u4FVqrp/VGq4e1E9uHtRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALR7Ty6ygFJZsIVW056TX+mTm2T3iKVr/4yudv+Tu4f/ + nMaV/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMaV/5O7h/+Mrnb/iKVr/5ObZPeek1/p + sIVW07KAUlm0e08uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3n2ALd59gG4ScYW+Jm2KXkppk35SodPCVsX37 + lbqG/5e+i/+aw5L/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nciY/5rDkv+Xvov/ + lbqG/5WxffuUqHTwkppk34mbYpeEnGFvd59gG3efYAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3nV4Cd55fA3qiZQh5oWMaeaFjNXykZ59+pmnC + galv6I63gvWXwI7+nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5fAjv6Ot4L1galv6H6macJ8pGefeaFjNXmhYxp6omUId55fA3edXgIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3nV4jd55fP3qiZbd9pWnM + gahv45K8iPeYwpD8nciX/p3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/nciX/pjCkPySvIj3gahv432lacx6omW3 + d55fP3edXiMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8UeaFhJHuiZFF+pmlv + gKhshoixediKs3zljbaB85fBj/2bxZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5vFlP+XwY/9 + jbaB84qzfOWIsXnYgKhshn6maW97omRReaFhJHegXxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3oF8y + eaFhWnuiZMuAqGzfhKxx7ZfCkP6axZT/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5rFlP+XwpD+hKxx7YCobN97omTLeaFhWnegXzIAAAAAAAAAAAAAAACAn2AG + d5xfPnacX5J5n2PGgKds2pO+ivWXwY75mcSS+53Il/+dyJj/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+dyJf/mcSS+5fBjvmTvYn1f6Zs2nigY8Z2nmCR + d55gPoCfYAaAn2AGd5xfP3acX5N5n2PMf6ds4JO9ifiXwY/6msST/J3ImP+eyZj/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57JmP+dyJj/msST/JfBj/qTvIn4 + f6Zs4HmgY8x2nmCSd55gPoCfYAYAAAAAZplmAmaZZgV4oWNReaFkfHuiZt2Dq3LoibF68ZrEk/6cx5b/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHlv+axJP+ + ibF68YOrcuh7ombdeaFkfHihY1GAgEAEgIBAAgAAAAAAAAAAZplmAWaZZgJ4oWMgeaFkMnqiZlp/qG2B + gqpwnoixeeaMtH7ukLqF9ZnEk/2cx5f/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/5zHl/+ZxJP9 + kbqF9Yy1fu6IsXnmgqpwnn+obYB7omZaeaFkMnihYyCAgEACgIBAAQAAAAAAAAAAAAAAAAAAAAAAAAAA + VapVAVWqVQN1oGE5dqBhYnqhZM1/p2zbhq936JXAjfmaxZP9nciY/p3ImP+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/ + nciY/prFk/2WwI35h7B353+nbNp6oWTNdqBhYnagYTmAgIACgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAVapVAFWqVQB1oGECdqBhBHqhZAl5nmEoeZ1hVnuhZ71+pWrbhq5265K7h/eZw5P/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/5nDk/+Su4f3hq52636latt7oWe9eZ1hVnmeYSh6oWQJdqBhBHagYQKAgIAAgICAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3m14Td5teL3qgZHB8o2iH + g6txoouzfcyPuIPpk72K9pbBjvqbxpX/nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nciY/5vGlf+XwY76k72K9o+4g+mLs33Mg6txonyjaId6oGRwd5teL3ebXhMAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2nF4LdpxeNnqgZI17oWbIgqpx6Iq0ffKWwY7/nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nceX/5fBjv+LtH3ygqpx6HuhZsh6oGSNdpxeNnacXgsAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAB2nF4CdpxeC3qgZBx7oWUpfaRpToCnbX6BqXDFhq115Iqye++XwY7+ + m8aV/57Jmf+eyZn/m8aV/5fBjv6Ksnvvhq115IKpcMWAp21+faRpTnuhZSl6oGQcdpxeC3acXgIAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2m10BdptdH3mfY056oGWS + f6ZrtISrcsaSu4bplb+M85jCkPqYwpD6lr+M85K7humEq3LGf6ZrtHqgZZJ5n2NOdptdH3abXQEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAdJddEnidYTB6oGSXfKNnxn2kaOV9pGjlfaNnxXygZJZ5nWEwdJddEgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddB3idYRN6oGQ8fKJnVXyjaGV8pGdkfKNmVHygZDx5nWET + dJddBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5lmCXeZZg9tpFsO + baRbCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///w///8AAP//4Af//wAA///gB///AAD//gAA + f/8AAP/wAAAP/wAA//AAAA//AAD/gAAAAf8AAPwAAAAAPwAA/AAAAAA/AADgAAAAAAcAAOAAAAAABwAA + AAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADwAAAAAA8AAPAAAAAADwAA/4AAAAH/AAD/4AAA + B/8AAP4AAAAAfwAA8AAAAAAPAADwAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 4AAAAAAHAADgAAAAAAcAAPwAAAAAfwAA/+AAAAf/AAD/gAAAAf8AAPwAAAAAPwAA/AAAAAA/AADgAAAA + AAcAAOAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADwAAAAAA8AAPAAAAAADwAA + /4AAAAH/AAD/8AAAD/8AAP/wAAAP/wAA//4AAH//AAD//+AH//8AAP//4Af//wAA///8P///AAAoAAAA + IAAAAEAAAAABACAAAAAAAAAQAABhCgAAYQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMu6oBzLuqD8i2pA7ItqQBAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIE0LqnJdC7q5LSwK3X0sCt18+7qpHQuqYk + 0bmiBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIG0LuoL9G9rIzVw7HN4tbJ7u3l2vzt5dr8 + 4tbJ7tXDsc3RvayM0LuoL9G5ogYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJuaIMz72qRdK/rZfZyLfI5trN6+3k2Prv593+ + 8uvh//Lr4f/v593+7eTY+ubazevZyLfI0r+tl8+8qkXJuaIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMtaQU0LyqV9PAr5rczr7H59zP7Ozi1/rw6N3/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8Ojd/+zi1/rn3M/s3M6+x9PAr5rQvKpXzLWkFAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMt6Idz7ypZdTBsJzf0MLL5tvP7uzi1/rw6d7/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Dp3v/s4tf65tvP7t/QwsvUwbCc + z7ypZcy3oh0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOuaUg0b6radbEs5rg0sPS5trN8ezi1/vx6d// + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/x6d// + 7OLX++bazfHg0sPS1sSzmtG+q2nOuaUgAAAAAAAAAAC/v58EzbikW8+7qJnf0cHZ5drM8u3k2Pzx6t// + 8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/ + 8uvh//Lr4f/y6+H/8erf/+3k2Pzl2czy3tDB2dC7qZnOuaVav7+fBL+/nwTNuKRe0LuoqN7PwOPm2872 + 7ubb/fHq4P/y6+H/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6uD/7uXZ/+POuv/jzrr/7uXZ//Lq4P/y6+H/ + 8uvh//Lr4f/y6+H/8uvh//Lr4f/x6uD/7ubb/ebbzvbdz7/j0LupqM65pVy/v58EAAAAAMzMmQPPuqg0 + 0Lyqd9jHt6rh1Mbd593Q9e3l2vzx6uD/8uvh//Lr4f/x6t//7eHU/+PNuv/bvqX/1qmF/9aohf/bvqX/ + 4826/+3h1P/x6t//8uvh//Lr4f/x6uD/7eXa/Ofd0PXh1Mbd2Me3qtC7qnfPuqg0v7+/AgAAAAAAAAAA + AAAAAAAAAACqqqoCzbimMM+8qXfXxrWq4dTF1+jd0fTs4tb769/R/+TPvP/bvKL/06N//9Occv/jqn7/ + 46p+/9Occv/To3//27yi/+TPvP/r39H/7OLW++jd0fTh1MXX18a1qc+8qXfNuKYw/4CAAQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM+4pSPOuKR10bqkw9e+p+zZuJ7+0qJ+/9ObcP/jqX3/ + 77aK//C3i//wt4v/77aK/+Opff/Tm3D/0qJ+/9m4nv7Xvqfs0bqkw864pHXPuKUjAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4fU8IuoBUHb2CVkDDi2CPyJBm49OZbv3mrID/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//mrID/05lu/ciQZuPDi2CPvYJWQLuAVB24fU8I + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1flEHuYBUF72DVkLBh1uexoxg4dedcffqsIT/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6rCE/9edcffHjGDh + wodbn72DVUK5gFQXtX5RBwAAAAAAAAAAAAAAAKqAVQC5gFIHvYFWDruDVkO+hFiyxo1h5tyjd/jss4f/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL/+yzh//do3f4x41g5b6EWLK7g1ZDvYFWDrmAUgeqgFUAqoBVBrmAUmO9gVbPzpNn7eWrgPvutYr/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//utYr/5KuA/M2TZu69gVbPuYBSY6qAVQa/gEAEun1SXruBVc3Nkmbs + 5Kt/++61if/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//ptYn/6baI//C3i//wt4v/ + 8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if/kq3/7zZJm7LuBVc26fVJev4BABL+AQAC6fVIG + uHpVELyAVlm/hFjBypBk69+levnttIj/8LeL//C3i//wt4v/8LeL/+62iv/fs4X/rat1/4+mbf+Ppm3/ + rqt1/9+zhf/utor/8LeL//C3i//wt4v/8LeL/+20iP/fpnn5ypBk67+EWMG8gFZZuHpVELp9Uga/gEAA + AAAAAAAAAACqVVUAuX1TC719Uxq/gldNwYdbq8qQZOXdo3f27LOH/+22iv/asoP/r6t2/5Wpcf+VuIL/ + msSS/5rEkv+VuIL/lalx/6+rdv/asoP/7baK/+yzh//do3f2ypBk5cGHW6u+gldNvIBVGbl9UwuqVVUA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAALh6UAu6gFQgv4VZRr6MXpizlmXno6Nu+5qsdv+Zuob/ + msKQ/5zGlf+eyZn/nsmZ/5zGlf+awpD/mbqG/5qsdv+jo277s5Zl576MXpi/hVlGuoBUILh7UQsAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHefYBR/n2Jfh59luZCoc+yWuYb9 + mcGP/5zGlf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+cxpX/mcGP/5a5hv2QqHPsh59luX+fYl93n2AU + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHedXh16oWRlfqVrnIqye8uSvIfu + l8GP+pzHlv+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nMeW/5fBj/qSvIfu + irJ7y36la5x6oWRld51eHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHegXyB7omRpgKhrmou0fdKRu4bx + l8KQ+53Hl/+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/53Hl/+XwpD7kbuG8Yu0fdKAqGuae6JkaXegXyAAAAAAAAAAAICfYAR2nF9beaBjmYmyetmQuoXy + mMOR/J3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+dyJj/mMOR/JC6hPKJsnrZeKBjmXaeYFqAn2AEgJ9gBHacX155oGOo + ibJ645K7h/aaxJP9nciY/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+axJP9kruH9omxeuN5oGOodp1fXICfYAQAAAAA + ZplmA3ihYzR6omZ3gqpxqoy1ft2TvIj1mcSS/J3ImP+eyZn/nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53ImP+ZxJL8k7yI9Yy1ft2CqnGqe6Jmd3ihYzSAgEAC + AAAAAAAAAAAAAAAAAAAAAFWqVQJ2oGEweaFjd4CobqqLtH/Xk72K9JnDkfudyJf/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Il/+Zw5H7k72K9Iy1f9eBqW6peaFjd3agYTCAgIAB + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd5teI3mfY25/pmyqi7N80JS9ivOYw5H7 + nMeX/57Jmf+eyZn/nsmZ/57Jmf+eyZn/nsmZ/53Hl/+Yw5H7lL2K84uzfNB/pmyqeZ9jbnebXiMAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHacXhR6oGNa + faRpq4evd8+TvYrymcOR+5zHlv+eyZn/nsmZ/5zHlv+Zw5H7lL2K8oevd899pGmreqBjWnacXhQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAB2m10MeJ5iRHuiZ6eDqnDQk72J8ZrFk/yaxZP8k72J8YOqcNB7omeneJ5iRHabXQwAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdJddBHecYSV6oGSSfaRo132kaNd8oGSReJxhJHSXXQQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHeZZgF3mWYPbaRbDm2kWwEAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8P///8A// + /8AD//8AAP/8AAA/8AAAD8AAAAMAAAAAAAAAAIAAAAHgAAAH/AAAP/gAAB/gAAAHAAAAAAAAAAAAAAAA + AAAAAMAAAAPwAAAf/AAAP/AAAA/AAAADAAAAAAAAAACAAAAB4AAAB/wAAD//AAD//8AD///wD////D// + KAAAABAAAAAgAAAAAQAgAAAAAAAABAAAYQoAAGEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAANG6pgrRvqxe0b6sXtC6pgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + zrypFNXDsWXg0sTQ7OPY+uzj2Prg0sTQ1cOxZc68qRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPu6ch + 2Ma2dOLVx9Lt5dn58erg//Lr4f/y6+H/8erg/+3l2fni1cfS2Ma2dM+7pyEAAAAAAAAAAMy4pBjWxbN/ + 49fJ1u3l2fvy6+D/8uvh//Lr4f/y6+H/8uvh//Lr4f/y6+H/8uvg/+3l2fvj18nW1sWzf825pRjMuaMZ + 1cOyjuTZy97u5tv88uvh//Lr4P/t4dT/4cav/+HGr//t4dT/8uvg//Lr4f/u5tv85NnL3tXDso7NuqYZ + AAAAAKqqqgDPu6gq2Mi3huDPvujewqr/2amE/+Wtgf/lrYH/2amE/97Cqv/gz77o2Mi3hs+7qCr/gIAA + AAAAAAAAAAC1flECvIJVGMOJXHfVnHHa5q2B/vC3i//wt4v/8LeL//C3i//mrYH+1Zxx2sOJXHe8glUY + tX5RAgAAAAC4gFIcxIleg9ifc+TqsYX98LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsYX9 + 2J9z5MSJXYS4gFIcun1RGsOIXYnZn3Pq67KG/vC3i//wt4v/67aJ/8Wvff/Gr33/67aJ//C3i//wt4v/ + 67KG/tmfc+rDiF2Jun1RGgAAAAC4e1MDvoBVHMWKXn3RoHPdwa58/p60f/+aw5D/msOQ/560f//Brnz+ + 0aBz3cWKXn29gVYcuHtTAwAAAAAAAAAAAAAAAHmgYyGDqXB2kbJ945rCkf6dyJj/nsmZ/57Jmf+dyJj/ + msKR/pGyfeODqXB2eaBjIQAAAAAAAAAAdpxfGICobX+OuILWmcOS+57JmP+eyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZj/mcOS+464gtaAqG1/dp5gGHacXxmAp22OkLmE3prEk/yeyZn/nsmZ/57Jmf+eyZn/ + nsmZ/57Jmf+eyZn/nsmZ/5rEk/yQuYTef6dtjnedXxkAAAAAVapVAHihYyqDqnKFj7iD2prEk/ueyZj/ + nsmZ/57Jmf+eyZj/msST+4+4g9qDq3KEeKFjKoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAHmfYhuBqG5y + jLV/2ZrFk/uaxZP7jbV/2YGobnJ5n2IbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHebYAp8omdefKNmXnibYAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8PwAA8A8AAMADAAAAAAAA + AAAAAIABAACAAQAAAAAAAAAAAACAAQAAwAMAAAAAAAAAAAAAgAEAAPAPAAD8PwAA + + + \ No newline at end of file diff --git a/QRValidation/Project/StateMachine/DisplayTextHandler.cs b/QRValidation/Project/StateMachine/DisplayTextHandler.cs new file mode 100644 index 0000000..f53724c --- /dev/null +++ b/QRValidation/Project/StateMachine/DisplayTextHandler.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Net; +using System.Text; +using System.Windows.Forms; + +namespace Project +{ + public partial class fMain + { + delegate void ShowLotTextHandler(string value); + + delegate void UpdateDMTextHandler(string value1); + + //void UpdateResultText(string value1) + //{ + // if (this.lbResult.InvokeRequired) + // { + // lbResult.BeginInvoke(new UpdateDMTextHandler(UpdateResultText), new object[] { value1 }); + // } + // else + // { + // lbResult.Text = value1; + // } + //} + + delegate void UpdateLabelTextHandler(Control ctl, string value); + void UpdateLabelText(Control ctl, string value) + { + if (ctl.InvokeRequired) + { + ctl.BeginInvoke(new UpdateLabelTextHandler(UpdateLabelText), new object[] { ctl, value }); + } + else + { + ctl.Text = value; + } + } + } +} diff --git a/QRValidation/Project/StateMachine/EnumStruct.cs b/QRValidation/Project/StateMachine/EnumStruct.cs new file mode 100644 index 0000000..e1da4cb --- /dev/null +++ b/QRValidation/Project/StateMachine/EnumStruct.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Project +{ + public partial class StateMachine + { + + public enum eMsgOpt : byte + { + NORMAL, + STEPCHANGE, + ERROR, + } + + + /// + /// 000~020 : System Define + /// 020~255 : User Define + /// + public enum eSMStep : byte + { + NOTSET = 0, + INIT, + IDLE, + REQSERVM, + REQSERV, + RUN, + /// + /// 작업완룡 + /// + FINISH, + /// + /// 왼쪽(출구)에서 자재를 투입합니다 + /// + LTAKE, + + /// + /// 오른쪽(입구)에서 자채를 투입합니다 + /// + //RTAKE, + + POSITION_RESET, + PAUSE, + /// + /// 시작명령을 기다리는중(PAUSE 상태에서 RESET시 설정 됨) + /// + WAITSTART, + ERROR, + UNLOADER_CHK, + OVERLOAD, + + RESET, + SAFTY, + EMERGENCY, + CLEAR, + HOME, + HOMECHK, + QHOME, + + + CLOSING, + CLOSEWAIT, + CLOSED, + } + } + + +} diff --git a/QRValidation/Project/StateMachine/EventArgs.cs b/QRValidation/Project/StateMachine/EventArgs.cs new file mode 100644 index 0000000..7a6c1ed --- /dev/null +++ b/QRValidation/Project/StateMachine/EventArgs.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Project +{ + public partial class StateMachine + { + public class StateMachineMessageEventArgs : EventArgs + { + public string Header { get; set; } + public string Message { get; set; } + public StateMachineMessageEventArgs(string header_, string message_) + { + this.Message = message_; + this.Header = header_; + } + } + public event EventHandler Message; + void RaiseMessage(string header, string msg) + { + if (Message != null) Message(this, new StateMachineMessageEventArgs(header, msg)); + } + + public class StepChangeEventArgs : EventArgs + { + public eSMStep Old { get; set; } + public eSMStep New { get; set; } + public StepChangeEventArgs(eSMStep old_,eSMStep new_) + { + this.Old = old_; + this.New = new_; + } + } + public class RunningEventArgs : EventArgs { + // public object sender { get; set; } + public Boolean isFirst { get; set; } + public eSMStep Step { get; set; } + public TimeSpan StepTime { get; set; } + public RunningEventArgs(eSMStep step_, Boolean isfirst_,TimeSpan steptime_) + { + this.isFirst = isfirst_; + this.Step = step_; + StepTime = steptime_; + // this.sender = sender_; + } + } + //public event EventHandler StepChanged; + //public event EventHandler SPS; + //public event EventHandler Running; + } + + +} diff --git a/QRValidation/Project/StateMachine/_BW_Conn.cs b/QRValidation/Project/StateMachine/_BW_Conn.cs new file mode 100644 index 0000000..e615c00 --- /dev/null +++ b/QRValidation/Project/StateMachine/_BW_Conn.cs @@ -0,0 +1,327 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using WatsonWebsocket; + +namespace Project +{ + public partial class fMain + { + + + Byte sendseq = 0; + DateTime[] cameraconntimechk = new DateTime[] { DateTime.Now, DateTime.Now }; + + private void bwConn_DoWork(object sender, DoWorkEventArgs e) + { + PUB.log_[0].Add("Device connection thread start"); + PUB.log_[1].Add("Device connection thread start"); + var logIdx = 0; + System.Diagnostics.Stopwatch wat = new System.Diagnostics.Stopwatch(); + int idx = 0; + while (bRunConnection && this.IsDisposed == false && this.Disposing == false) + { + //Check listener status + if (idx == 0) + { + //left socket listening + if (PUB.setting.CameraIndexL >= 0) + { + logIdx = 0; + if (PUB.wsock_[logIdx].IsListening == false) + { + var tsli = DateTime.Now - PUB.Time_WS_Listen_Try[PUB.setting.CameraIndexL]; + if (tsli.TotalSeconds > 5) + { + //Server retry + PUB.log_[logIdx].AddAT($"Server listen retry port:{PUB.setting.listenPortL}"); + + try + { + PUB.wsock_[logIdx] = new Class.WebSocket("localhost", PUB.setting.listenPortL); + PUB.wsock_[logIdx].Start(); + PUB.wsock_[logIdx].MessageReceived += Ws_DataArrival; + PUB.wsock_[logIdx].ClientConnected += Ws_Connected; + PUB.wsock_[logIdx].ClientDisconnected += Ws_Disconnected; + } + catch (Exception ex) + { + PUB.wsock_[logIdx].MessageReceived -= Ws_DataArrival; + PUB.wsock_[logIdx].ClientConnected -= Ws_Connected; + PUB.wsock_[logIdx].ClientDisconnected -= Ws_Disconnected; + PUB.log_[logIdx].AddE("Server retry listen failed:" + ex.Message); + } + PUB.Time_WS_Listen_Try[PUB.setting.CameraIndexL] = DateTime.Now; + } + } + } + idx += 1; + } + else if (idx == 1) + { + //right socket listening + if (PUB.setting.CameraIndexR >= 0) + { + logIdx = 1; + if (PUB.wsock_[logIdx].IsListening == false) + { + var tsli = DateTime.Now - PUB.Time_WS_Listen_Try[PUB.setting.CameraIndexR]; + if (tsli.TotalSeconds > 5) + { + //Server retry + PUB.log_[logIdx].AddAT($"Server listen retry port:{PUB.setting.listenPortR}"); + + try + { + PUB.wsock_[logIdx] = new Class.WebSocket("localhost", PUB.setting.listenPortR); + PUB.wsock_[logIdx].Start(); + PUB.wsock_[logIdx].MessageReceived += Ws_DataArrival; + PUB.wsock_[logIdx].ClientConnected += Ws_Connected; + PUB.wsock_[logIdx].ClientDisconnected += Ws_Disconnected; + } + catch (Exception ex) + { + PUB.wsock_[logIdx].MessageReceived -= Ws_DataArrival; + PUB.wsock_[logIdx].ClientConnected -= Ws_Connected; + PUB.wsock_[logIdx].ClientDisconnected -= Ws_Disconnected; + PUB.log_[logIdx].AddE("Server retry listen failed:" + ex.Message); + } + PUB.Time_WS_Listen_Try[PUB.setting.CameraIndexR] = DateTime.Now; + } + } + } + idx += 1; + } + else if (idx == 2) + { + //Initialization process + try + { + var status = PUB._virtualFG40.InitSystem(); + if (status != Crevis.VirtualFG40Library.VirtualFG40Library.MCAM_ERR_SUCCESS) + { + PUB.log_[0].AddE($"Crevis:System Initialize failed : {status}"); + PUB.log_[1].AddE($"Crevis:System Initialize failed : {status}"); + } + else Console.WriteLine("Camera init ok"); + } + catch (Exception ex) + { + Console.WriteLine($"Camera init error {ex.Message}"); + } + idx += 1; + } + + else if (idx == 3) + { + //open camera + if (camNum > 0 && PUB.setting.CameraIndexL >= 0 && PUB.setting.CameraIndexL < camNum) + { + bool initok = false; + PUB._virtualFG40.IsInitSystem(ref initok); + if (initok) + { + var camIdx = PUB.setting.CameraIndexL; + if (camIdx >= camNum) + { + //Card corresponding to specified index does not exist + } + else if (PUB._hDevice[camIdx] < 0) + { + //Camera index is 0,1 but vision index uses 0,2 as before. 1 is for central Keyence + PUB.log_[logIdx].Add($"Camera {camIdx} connection in progress"); + var Piv = camIdx == PUB.setting.CameraIndexL ? this.pivLeft : this.pIvRight; + if (CrevisOpen(camIdx)) PUB.CrevisGrab(camIdx, true, Piv); //Try to capture one image + cameraconntimechk[camIdx] = DateTime.Now; + } + else + { + //Has been connected before. + var ts = DateTime.Now - cameraconntimechk[camIdx]; + if (ts.TotalSeconds > 5) + { + bool iscon = false; + var rlt = PUB._virtualFG40.IsOpenDevice(PUB._hDevice[camIdx], ref iscon); + if (rlt == Crevis.VirtualFG40Library.VirtualFG40Library.MCAM_ERR_SUCCESS) + { + var status = PUB._virtualFG40.GetAvailableCameraNum(ref camNum); + if (iscon == false) + { + var Piv = camIdx == PUB.setting.CameraIndexL ? this.pivLeft : this.pIvRight; + if (CrevisOpen(camIdx)) PUB.CrevisGrab(camIdx, true, Piv); //Try to capture one image + } + else + { + //Already connected. + } + } + else if (rlt == Crevis.VirtualFG40Library.VirtualFG40Library.MCAM_ERR_NO_DEVICE) + { + //Device not found, refreshing list. + PUB._virtualFG40.UpdateDevice(); + var status = PUB._virtualFG40.GetAvailableCameraNum(ref camNum); + if (camNum <= camIdx) + { + PUB._virtualFG40.FreeSystem(); + PUB.log_[logIdx].AddE("The camera can not be connected."); + } + //else + //{ + PUB._hDevice[camIdx] = -1; //Induce reconnection work + //} + } + cameraconntimechk[camIdx] = DateTime.Now; + } + + } + } + + } + //Pub.flag.set(eFlag.CHECKCAMERA, false, "LOAD"); + idx += 1; + } + else if (idx == 4) + { + //open camera + bool initok = false; + try + { + PUB._virtualFG40.IsInitSystem(ref initok); + } + catch (Exception ex) + { + Console.WriteLine($"Error _virtualFG40.IsInitSystem : {ex.Message}"); + initok = false; + } + + if (initok) + { + var camIdx = PUB.setting.CameraIndexR; + if (camIdx >= camNum) + { + //지정한 인덱스에 해당하는 카드가 존재하지 않음 + } + else if (camIdx != PUB.setting.CameraIndexL) + { + if (PUB._hDevice[camIdx] < 0) + { + //Camera index is 0,1 but vision index uses 0,2 as before. 1 is for central Keyence + PUB.log_[logIdx].Add($"Camera {camIdx} connection in progress"); + var Piv = camIdx == PUB.setting.CameraIndexL ? this.pivLeft : this.pIvRight; + if (CrevisOpen(camIdx)) PUB.CrevisGrab(camIdx, true, Piv); //Try to capture one image + cameraconntimechk[camIdx] = DateTime.Now; + } + else + { + //최소 셋팅된 번호와 현재 카메라 번호가 다르면 초기화를 해준다. + if (FirstCrevisIndex[camIdx] != -1 && FirstCrevisIndex[camIdx] != PUB._hDevice[camIdx]) + { + PUB.log_[logIdx].AddE($"Camera Index({camIdx}) error"); + PUB._hDevice[camIdx] = -1; + } + else if(PUB._hDevice[0] == PUB._hDevice[1]) //error condition + { + PUB.log_[logIdx].AddE($"Camera Index({camIdx}) error init"); + PUB._hDevice[0] = -1; + PUB._hDevice[1] = -1; + FirstCrevisIndex[0] = -1; + FirstCrevisIndex[1] = -1; + } + else + { + //Has been connected before. + var ts = DateTime.Now - cameraconntimechk[camIdx]; + if (ts.TotalSeconds > 5) + { + bool iscon = false; + var rlt = PUB._virtualFG40.IsOpenDevice(PUB._hDevice[camIdx], ref iscon); + if (rlt == Crevis.VirtualFG40Library.VirtualFG40Library.MCAM_ERR_SUCCESS) + { + var status = PUB._virtualFG40.GetAvailableCameraNum(ref camNum); + if (iscon == false) + { + var Piv = camIdx == PUB.setting.CameraIndexL ? this.pivLeft : this.pIvRight; + if (CrevisOpen(camIdx)) PUB.CrevisGrab(camIdx, true, Piv); //Try to capture one image + } + else + { + //Already connected. + } + } + else if (rlt == Crevis.VirtualFG40Library.VirtualFG40Library.MCAM_ERR_NO_DEVICE) + { + //Device not found, refreshing list. + PUB._virtualFG40.UpdateDevice(); + var status = PUB._virtualFG40.GetAvailableCameraNum(ref camNum); + if (camNum <= camIdx) + { + PUB._virtualFG40.FreeSystem(); + PUB.log_[logIdx].AddE("The camera can not be connected."); + } + //else + //{ + PUB._hDevice[camIdx] = -1; //Induce reconnection work + //} + } + cameraconntimechk[camIdx] = DateTime.Now; + } + } + + + } + + } + } + + + // panMiniDisplay.Invalidate(); + //Pub.flag.set(eFlag.CHECKCAMERA, false, "LOAD"); + + idx += 1; + } + else + { + idx = 0; + } + if (sendseq == 0) + { + if (PUB.setting.CameraIndexL >= 0) + SendStatus(eTarget.Left); + sendseq += 1; + } + else if (sendseq == 1) + { + if (PUB.setting.CameraIndexR >= 0 && PUB.setting.CameraIndexR != PUB.setting.CameraIndexL) + SendStatus(eTarget.Right); + sendseq += 1; + } + else sendseq = 0; + + + if (idx > 4) idx = 0; + + //heartbeat + if (this.IsDisposed == false) + { + this.Invoke(new Action(() => + { + try + { + if (this.sbConnState.ForeColor == Color.LimeGreen) + this.sbConnState.ForeColor = Color.Green; + else + this.sbConnState.ForeColor = Color.LimeGreen; + } + catch { } + })); + } + + System.Threading.Thread.Sleep(250); + } + } + } +} \ No newline at end of file diff --git a/QRValidation/Project/StateMachine/_BW_Left.cs b/QRValidation/Project/StateMachine/_BW_Left.cs new file mode 100644 index 0000000..bb48fb6 --- /dev/null +++ b/QRValidation/Project/StateMachine/_BW_Left.cs @@ -0,0 +1,112 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using WatsonWebsocket; + +namespace Project +{ + public partial class fMain + { + private void bwLeft_DoWork(object sender, DoWorkEventArgs e) + { + var camIdx = PUB.setting.CameraIndexL; + var logIdx = 0; + + PUB.log_[logIdx].Add("Camera thread(L) start"); + System.Diagnostics.Stopwatch wat = new System.Diagnostics.Stopwatch(); + var framedelay = (int)(1000f / 12f);//Time required to get 1 frame 12f / 1000; + while (bRunConnection && this.IsDisposed == false && this.Disposing == false) + { + + wat.Restart(); + var _fpsms = framedelay;// IsTrigger ? Pub.setting.GrabDelayFast : Pub.setting.GrabDelaySlow; + + if (PUB.imgque == null || PUB.imgque.Any() == false) continue; + if (PUB.imgque.Peek().Equals(this.Name) == false) continue; + + if (camIdx < 0) + { + this.BeginInvoke(new Action(() => + { + sbConnCamL.ForeColor = Color.Red; + })); + System.Threading.Thread.Sleep(1000); + continue; + } + + + //If camera is not connected, do not process. + if (PUB._isCrevisOpen[camIdx] == false || PUB.IsLive[camIdx] == false || PUB.flag.get(eFlag.CAMERAINIT) == false) _fpsms = 1000; + else + { + //Data processing after image acquisition + var Piv = camIdx == PUB.setting.CameraIndexL ? this.pivLeft : this.pIvRight; + if (PUB.CrevisGrab(camIdx, true, Piv)) + { + if (PUB.IsProcess[camIdx] || PUB.IsTrigger[camIdx]) + PUB.CreavisProcess(camIdx, PUB.IsTrigger[camIdx], Piv); + } + + //this.BeginInvoke(new Action(() => { + // //Update current time + // if (iv[camIdx] != null) + // { + // if (iv[camIdx].Shapes.Count < 1) + // iv[camIdx].Shapes.AddText(100, 100, DateTime.Now.ToShortTimeString(), Color.Lime, 100); + // else + // iv[camIdx].Shapes[0].Title = DateTime.Now.ToShortTimeString(); + // iv[camIdx].Invalidate(); + // } + //})); + + if (PUB.IsTrigger[camIdx] && PUB.setting.TriggerTimeout > 0 && PUB.setting.TriggerTimeout < 999) + { + var ts = DateTime.Now - PUB.triggerTime[camIdx]; + if (ts.TotalSeconds > PUB.setting.TriggerTimeout) + { + PUB.log_[logIdx].Add($"Trigger maximum time({PUB.setting.TriggerTimeout}) exceeded, releasing"); + PUB.IsTrigger[camIdx] = false; + PUB.IsLive[camIdx] = false; + PUB.IsProcess[camIdx] = false; + } + } + } + wat.Stop(); + if (wat.ElapsedMilliseconds < _fpsms) + { + try + { + if (PUB.setting.AutoDeleteSeconds > 0 && PUB.setting.AutoDeleteSeconds < 99) + { + var di = new System.IO.DirectoryInfo(PUB.setting.ImageSavePath); + var ttime = DateTime.Now.AddSeconds(-PUB.setting.AutoDeleteSeconds); + var dellist = di.GetFiles().Where(t => t.CreationTime <= ttime).FirstOrDefault(); + if (dellist != null) dellist.Delete(); + } + } + catch { } + System.Threading.Thread.Sleep(_fpsms - (int)wat.ElapsedMilliseconds); + } + + //heart beat + this.BeginInvoke(new Action(() => + { + if (sbConnCamL.ForeColor == Color.Green) + sbConnCamL.ForeColor = Color.LimeGreen; + else + sbConnCamL.ForeColor = Color.Green; + })); + } + + + } + + + + + } +} \ No newline at end of file diff --git a/QRValidation/Project/StateMachine/_BW_Right.cs b/QRValidation/Project/StateMachine/_BW_Right.cs new file mode 100644 index 0000000..0543e92 --- /dev/null +++ b/QRValidation/Project/StateMachine/_BW_Right.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using WatsonWebsocket; + +namespace Project +{ + public partial class fMain + { + + + + private void bwRight_DoWork(object sender, DoWorkEventArgs e) + { + var camIdx = PUB.setting.CameraIndexR; + var logIdx = 1; + + PUB.log_[logIdx].Add("Camera thread(R) start"); + System.Diagnostics.Stopwatch wat = new System.Diagnostics.Stopwatch(); + var framedelay = (int)(1000f / 12f);//Time required to get 1 frame 12f / 1000; + while (bRunConnection && this.IsDisposed == false && this.Disposing == false) + { + + + wat.Restart(); + var _fpsms = framedelay;// IsTrigger ? Pub.setting.GrabDelayFast : Pub.setting.GrabDelaySlow; + + if (PUB.imgque == null || PUB.imgque.Any() == false) continue; + if (PUB.imgque.Peek().Equals(this.Name) == false) continue; + + if (camIdx < 0 || PUB.setting.CameraIndexL == PUB.setting.CameraIndexR) + { + this.BeginInvoke(new Action(() => + { + sbConnCamR.ForeColor = Color.Red; + })); + System.Threading.Thread.Sleep(1000); + continue; + } + + //If camera is not connected, do not process. + if (PUB._isCrevisOpen[camIdx] == false || PUB.IsLive[camIdx] == false || PUB.flag.get(eFlag.CAMERAINIT) == false) _fpsms = 1000; + else + { + //Data processing after image acquisition + var Piv = this.pIvRight; + if (PUB.CrevisGrab(camIdx, true, Piv)) + { + if (PUB.IsProcess[camIdx]) + PUB.CreavisProcess(camIdx, PUB.IsTrigger[camIdx], Piv); + } + + + if (PUB.setting.TriggerTimeout > 0 && PUB.setting.TriggerTimeout < 999) + { + var ts = DateTime.Now - PUB.triggerTime[camIdx]; + if (PUB.IsTrigger[camIdx] && ts.TotalSeconds > PUB.setting.TriggerTimeout) + { + PUB.log_[logIdx].Add($"Trigger maximum time({PUB.setting.TriggerTimeout}) exceeded, releasing"); + PUB.IsTrigger[camIdx] = false; + } + } + } + wat.Stop(); + if (wat.ElapsedMilliseconds < _fpsms) + { + try + { + if (PUB.setting.AutoDeleteSeconds > 0 && PUB.setting.AutoDeleteSeconds < 99) + { + var di = new System.IO.DirectoryInfo(PUB.setting.ImageSavePath); + var ttime = DateTime.Now.AddSeconds(-PUB.setting.AutoDeleteSeconds); + var dellist = di.GetFiles().Where(t => t.CreationTime <= ttime).FirstOrDefault(); + if (dellist != null) dellist.Delete(); + } + } + catch { } + System.Threading.Thread.Sleep(_fpsms - (int)wat.ElapsedMilliseconds); + } + + //heart beat + this.BeginInvoke(new Action(() => + { + if (sbConnCamR.ForeColor == Color.Green) + sbConnCamR.ForeColor = Color.LimeGreen; + else + sbConnCamR.ForeColor = Color.Green; + })); + + } + } + + } +} \ No newline at end of file diff --git a/QRValidation/Project/StateMachine/_Close.cs b/QRValidation/Project/StateMachine/_Close.cs new file mode 100644 index 0000000..9f29d35 --- /dev/null +++ b/QRValidation/Project/StateMachine/_Close.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace Project +{ + public partial class fMain + { + /// + /// Function executed once when closing the program + /// + private void _Close_Start() + { + //동작코드off + PUB.IsTrigger[0] = PUB.IsTrigger[1] = false; + PUB.IsProcess[0] = PUB.IsProcess[1] = false; + PUB.IsLive[0] = PUB.IsLive[1] = false; + + tmDisplay.Stop(); + PUB.log_[0].Add("Socket close"); + PUB.log_[1].Add("Socket close"); + try + { + PUB.wsock_[0].Stop(); + PUB.wsock_[1].Stop(); + } + catch { } + + //연결체크용 쓰레드 종료 + bRunConnection = false; + + PUB.log_[0].Add("Program Close"); + PUB.log_[1].Add("Program Close"); + PUB.LogFlush(); + + //크레비스OFF - 210203 + try + { + if (PUB._hDevice[PUB.setting.CameraIndexL] > 0) + PUB._virtualFG40.AcqStop(PUB._hDevice[PUB.setting.CameraIndexL]); + if (PUB._hDevice[PUB.setting.CameraIndexR] > 0) + PUB._virtualFG40.AcqStop(PUB._hDevice[PUB.setting.CameraIndexR]); + PUB._virtualFG40.FreeSystem(); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + + } + + } +} diff --git a/QRValidation/Project/StateMachine/_Crevis.cs b/QRValidation/Project/StateMachine/_Crevis.cs new file mode 100644 index 0000000..5002e6d --- /dev/null +++ b/QRValidation/Project/StateMachine/_Crevis.cs @@ -0,0 +1,258 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Crevis.VirtualFG40Library; +using Emgu.CV; +using Emgu.CV.CvEnum; +using Emgu.CV.Structure; +#if V22 +using Euresys.Open_eVision_22_12; +using Euresys.Open_eVision_22_12.Easy3D; +#else +using Euresys.Open_eVision_2_11; +#endif + +namespace Project +{ + public partial class fMain + { + + + UInt32 camNum = 0; + + + + + + /// + /// Crevis must be initialized in the main thread + /// + void _SM_RUN_INIT_CAMERA() + { + //Crevis Init + PUB._virtualFG40 = new VirtualFG40Library(); + Int32 status = VirtualFG40Library.MCAM_ERR_SUCCESS; + try + { + //System InitializSend_WSocke + + status = PUB._virtualFG40.InitSystem(); + if (status != VirtualFG40Library.MCAM_ERR_SUCCESS) + { + PUB.log_[0].AddE($"Crevis:System Initialize failed : {status}"); + PUB.log_[1].AddE($"Crevis:System Initialize failed : {status}"); + } + else + { + // Update Device List + //status = _virtualFG40.UpdateDevice(); + //if (status != VirtualFG40Library.MCAM_ERR_SUCCESS) + //{ + // _virtualFG40.FreeSystem(); + // throw new Exception(String.Format("Update Device list failed : {0}", status)); + //} + + status = PUB._virtualFG40.GetAvailableCameraNum(ref camNum); + if (camNum <= 0) + { + PUB._virtualFG40.FreeSystem(); + PUB.log_[0].AddE("The camera can not be connected."); + PUB.log_[1].AddE("The camera can not be connected."); + } + else Console.WriteLine($"Camera {camNum} Found"); + + //camNum = 1; + } + + //if (camNum > 0) + //{ + // //카메라 인덱스는 0,1 이지만 비젼인덱스는 기존대로 0,2번을 사용한다. 1번은 중앙 키엔스용이다 + // Pub.log.Add($"{Pub.setting.CameraIndex}번 카메라 연결 진행"); + // if (CrevisOpen(Pub.setting.CameraIndex)) CrevisGrab(true); //한장을 수집해본다 + //} + } + catch (Exception ex) + { + PUB.log_[0].AddE("Crevis:" + ex.Message); + PUB.log_[1].AddE("Crevis:" + ex.Message); + } + } + + int[] FirstCrevisIndex = new int[] { -1, -1 }; + + /// + /// Camera open + /// + /// + /// + Boolean CrevisOpen(int camIdx) + { + Int32 status = VirtualFG40Library.MCAM_ERR_SUCCESS; + var logIdx = camIdx == PUB.setting.CameraIndexL ? 0 : 1; + try + { + // camera open + status = PUB._virtualFG40.OpenDevice((uint)camIdx, ref PUB._hDevice[camIdx]); + if (status != VirtualFG40Library.MCAM_ERR_SUCCESS) + { + PUB._virtualFG40.FreeSystem(); + PUB.log_[logIdx].AddE($"Open device failed : {status}"); + PUB._isCrevisOpen[camIdx] = false; + + return false; + } + + if (FirstCrevisIndex[camIdx] == -1) + FirstCrevisIndex[camIdx] = PUB._hDevice[camIdx]; + + PUB._isCrevisOpen[camIdx] = true; + + // Call Set Feature + CrevisSetFeature((uint)camIdx); + + // Get Width + status = PUB._virtualFG40.GetIntReg(PUB._hDevice[camIdx], VirtualFG40Library.MCAM_WIDTH, ref PUB._width[camIdx]); + if (status != VirtualFG40Library.MCAM_ERR_SUCCESS) + { + throw new Exception(String.Format("Read Register MCAM_WIDTH failed : {0}", status)); + } + + // Get Height + status = PUB._virtualFG40.GetIntReg(PUB._hDevice[camIdx], VirtualFG40Library.MCAM_HEIGHT, ref PUB._height[camIdx]); + + if (status != VirtualFG40Library.MCAM_ERR_SUCCESS) + { + throw new Exception(String.Format("Read Register MCAM_HEIGHT failed : {0}", status)); + } + + // Get FPS + //status = _virtualFG40.GetIntReg(_hDevice, VirtualFG40Library.MCAM_ACQUISITION_FRAME_COUNT, ref _fps); + //if (status != VirtualFG40Library.MCAM_ERR_SUCCESS) + //{ + // throw new Exception(String.Format("Read Register MCAM_ACQUISITION_FRAME_COUNT failed : {0}", status)); + //} + + + PUB.log_[logIdx].AddI($"Camera({camIdx}) connection complete({PUB._width[camIdx]}x{PUB._height[camIdx]})"); + + uint grabtimeout = 0; + status = PUB._virtualFG40.GetGrabTimeout(PUB._hDevice[camIdx], ref grabtimeout); + if (status != VirtualFG40Library.MCAM_ERR_SUCCESS) + { + throw new Exception(String.Format("Read TimeOut failed : {0}", status)); + } + else PUB._virtualFG40.SetGrabTimeout(PUB._hDevice[camIdx], 1000); //타임아웃 1초로 지정(기본값:5초) 210113 + + + + // Image buffer allocation + PUB._bufferSize[camIdx] = PUB._width[camIdx] * PUB._height[camIdx]; + PUB.camPtr[camIdx] = Marshal.AllocHGlobal(PUB._bufferSize[camIdx]); + + //데이터를 받을 저장소 초기화(흑백) + var bitsPerPixel = 8; + PUB._stride[camIdx] = (Int32)((PUB._width[camIdx] * bitsPerPixel + 7) / 8); + //var imgRect = new Rectangle(0, 0, _width[camIdx], _height[camIdx]); + //OrgBitmap = new Bitmap(_width, _height, _stride, PixelFormat.Format8bppIndexed, _pImage); + // SetGrayscalePalette(OrgBitmap); + + //오픈이비젼은 사용가능하면 처리한다 + //if (OrgEImage[camIdx] != null) OrgEImage[camIdx].Dispose(); + //OrgEImage[camIdx] = new EImageBW8(); + //OrgEImage[camIdx].SetImagePtr(_width[camIdx], _height[camIdx], pImage); + + //openCv 이미지 처리 + // OrgImage = new Image(_width, _height, _stride, _pImage); + //OrgCImage = new Image(_width, _height, new Bgr(Color.Black)); + + //데이터를 표시할 저장소 초기화 (컬러) + //OrgBitmapC = new Bitmap(_width, _height, PixelFormat.Format24bppRgb); + //var lockColor = OrgBitmapC.LockBits(imgRect, ImageLockMode.ReadOnly, OrgBitmapC.PixelFormat); + //OrgImageC = new Image(_width, _height, lockColor.Stride, lockColor.Scan0); + //OrgBitmapC.UnlockBits(lockColor); + + } + catch (Exception ex) + { + + PUB._isCrevisOpen[camIdx] = false; + MakeBlankImage(camIdx, "ERROR"); //빈 이미지 설정 + PUB.log_[logIdx].AddE("Crevis Error:" + ex.Message);// MessageBox.Show(ex.Message); + } + + PUB.flag.set(eFlag.CAMERAINIT, PUB._isCrevisOpen[camIdx], ""); + //이미지를 화면에 표시한다. + //ivL.Image = OrgEImage; ivL.ZoomFit(); + return PUB._isCrevisOpen[camIdx]; + } + + void MakeBlankImage(int camIdx, string title = "") + { + PUB._width[camIdx] = 1024; + PUB._height[camIdx] = 768; + + if (PUB.mre[camIdx].WaitOne(100)) + { + PUB.mre[camIdx].Reset(); + PUB.OrgImage[camIdx] = new EImageBW8(); + PUB.OrgImage[camIdx].SetSize(PUB._width[camIdx], PUB._height[camIdx]); + PUB.mre[camIdx].Set(); + } + } + + private void CrevisSetFeature(uint camIdx) + { + Int32 status = VirtualFG40Library.MCAM_ERR_SUCCESS; + var logIdx = camIdx == PUB.setting.CameraIndexL ? 0 : 1; + try + { + // Set Trigger Mode + status = PUB._virtualFG40.SetEnumReg(PUB._hDevice[camIdx], VirtualFG40Library.MCAM_TRIGGER_MODE, VirtualFG40Library.TRIGGER_MODE_OFF); + if (status != VirtualFG40Library.MCAM_ERR_SUCCESS) + { + throw new Exception(String.Format("Write Register failed : {0}", status)); + } + + // Set PixelFormat + status = PUB._virtualFG40.SetEnumReg(PUB._hDevice[camIdx], VirtualFG40Library.MCAM_PIXEL_FORMAT, VirtualFG40Library.PIXEL_FORMAT_MONO8); + if (status != VirtualFG40Library.MCAM_ERR_SUCCESS) + { + throw new Exception(String.Format("Write Register failed : {0}", status)); + } + } + catch (Exception ex) + { + //MessageBox.Show(ex.Message); + PUB.log_[logIdx].AddE(ex.Message); + } + } + + + + + + + + //private void SetGrayscalePalette(Bitmap bitmap) + //{ + // ColorPalette GrayscalePalette = bitmap.Palette; + // for (int i = 0; i < 255; i++) + // { + // GrayscalePalette.Entries[i] = Color.FromArgb(i, i, i); + // } + // bitmap.Palette = GrayscalePalette; + //} + + + + + + } +} diff --git a/QRValidation/Project/StateMachine/_Socket.cs b/QRValidation/Project/StateMachine/_Socket.cs new file mode 100644 index 0000000..6300124 --- /dev/null +++ b/QRValidation/Project/StateMachine/_Socket.cs @@ -0,0 +1,177 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Newtonsoft.Json.Linq; +using WatsonWebsocket; + +namespace Project +{ + public partial class fMain + { + + public object listlock = new object(); + public List ClientList = new List(); + + private void Ws_Disconnected(object sender, ClientDisconnectedEventArgs e) + { + var ws = sender as Class.WebSocket; + var ip = e.IpPort; + var logIdx = ws.Target == eTarget.Left ? 0 : 1; + PUB.Time_WS_Disconnected[ws.TargetIdx] = DateTime.Now; + PUB.log_[logIdx].AddAT("Host connection terminated"); + lock (ClientList) + { + if (ClientList.Contains(ip)) + ClientList.Remove(ip); + } + + } + + private void Ws_Connected(object sender, ClientConnectedEventArgs e) + { + var ws = sender as Class.WebSocket; + var logIdx = ws.Target == eTarget.Left ? 0 : 1; + PUB.Time_WS_Connected[ws.TargetIdx] = DateTime.Now; + PUB.log_[logIdx].AddAT("Host connection completed"); + lock (ClientList) + { + if (ClientList.Contains(e.IpPort)) + ClientList.Add(e.IpPort); + } + } + + + + void SendStatus(eTarget cam) + { + var camIdx = cam == eTarget.Left ? PUB.setting.CameraIndexL : PUB.setting.CameraIndexR; + var logIdx = cam == eTarget.Left ? 0 : 1; + var camTarget = PUB.GetTarget(camIdx); + if (camTarget == eTarget.None) return; + //데이터 생성 + var msg = new + { + command = "status", + camera = PUB._isCrevisOpen[camIdx] ? "1" : "0", + live = PUB.IsLive[camIdx] ? "1" : "0", + stream = PUB.setting.DisableStreamData ? "0" : "1", + listen = PUB.wsock_[logIdx].IsListening ? "1" : "0", + trig = PUB.IsTrigger[camIdx] ? "1" : "0", + license = PUB.VisionLicense ? "1" : "0", + reel = PUB.DetectReel[camIdx] ? "1" : "0", + conv = "0", + }; + var json = Newtonsoft.Json.JsonConvert.SerializeObject(msg); + try + { + //PUB.log_[logIdx].Add("상태전송:" + msg); + PUB.lastsendStatus[camIdx] = DateTime.Now; + PUB.Send_WSock(camTarget, json); + //PUB.ws[camIdx].ListClients().ToList().ForEach(t => PUB.ws[camIdx].SendAsync(t, json).Wait()); + } + catch (Exception ex) + { + PUB.log_[logIdx].AddE($"(STATUS) send failed {ex.Message}"); + } + } + + + + private void Ws_DataArrival(object sender, MessageReceivedEventArgs e) + { + var ws = sender as Class.WebSocket; + var ip = e.IpPort; + var raw = Encoding.UTF8.GetString(e.Data); + var logIdx = ws.Target == eTarget.Left ? 0 : 1; + var camIdx = ws.TargetIdx; + var camTarget = PUB.GetTarget(camIdx); + + PUB.log_[logIdx].Add($"Received:{raw}"); + + PUB.Time_WS_Recv[camIdx] = DateTime.Now; + + var jvalue = JObject.Parse(raw); + + //데이터 생성 + var msg = new + { + guid = jvalue.Value("guid"), + command = jvalue.Value("command"), + data = jvalue.Value("data") + }; + + if (msg.command == "ON" || msg.command == "BCDIN") + { + PUB.RequestNewRead = true; + PUB.triggerTime[ws.TargetIdx] = DateTime.Now; + PUB.lastguid[ws.TargetIdx] = msg.guid; + PUB.lastcmd[ws.TargetIdx] = msg.command; + PUB.lastdata[ws.TargetIdx] = msg.data; + PUB.lastip[ws.TargetIdx] = e.IpPort; + if (string.IsNullOrEmpty(PUB.lastlogbarcode)) PUB.lastlogbarcode = string.Empty; + PUB.IsTrigger[ws.TargetIdx] = true; + PUB.TriggerStart = DateTime.Now; + PUB.log_[logIdx].Add("Clearing existing data due to barcode GUID reception, value=" + PUB.lastlogbarcode); + PUB.lastlogbarcode = string.Empty; //211206 + PUB.parsetime = DateTime.Now; + } + else if (msg.command == "TRIG") + { + PUB.RequestNewRead = true; + PUB.triggerTime[ws.TargetIdx] = DateTime.Now; + PUB.lastguid[ws.TargetIdx] = msg.guid; + PUB.lastcmd[ws.TargetIdx] = msg.command; + PUB.lastdata[ws.TargetIdx] = msg.data; + PUB.lastip[ws.TargetIdx] = e.IpPort; + if (string.IsNullOrEmpty(PUB.lastlogbarcode)) PUB.lastlogbarcode = string.Empty; + PUB.IsTrigger[ws.TargetIdx] = true; + PUB.TriggerStart = DateTime.Now; + PUB.log_[logIdx].Add("Clearing existing data due to barcode GUID reception, value=" + PUB.lastlogbarcode); + PUB.lastlogbarcode = string.Empty; //211206 + PUB.parsetime = DateTime.Now; + PUB.IsLive[ws.TargetIdx] = true; + PUB.IsProcess[ws.TargetIdx] = true; + } + else if (msg.command == "LIVEON") + { + PUB.IsLive[ws.TargetIdx] = true; + PUB.log_[logIdx].Add("live on received"); + } + else if (msg.command == "LIVEOFF") + { + PUB.IsLive[ws.TargetIdx] = false; + PUB.log_[logIdx].Add("live off received"); + } + else if (msg.command == "STREAMOFF") + { + PUB.setting.DisableStreamData = true; + PUB.setting.Save(); + } + else if (msg.command == "STREAMON") + { + PUB.setting.DisableStreamData = false; + PUB.setting.Save(); + } + else if (msg.command == "OFF") + { + PUB.IsTrigger[ws.TargetIdx] = false; + PUB.log_[logIdx].Add("OFF 수신으로 트리거상태를 해제 합니다"); + PUB.IsLive[ws.TargetIdx] = false; + PUB.IsProcess[ws.TargetIdx] = false; + } + else if (msg.command == "STATUS") + { + //나의 상태값을 전송 해야한다 + SendStatus(camTarget); + + } + else + { + PUB.log_[logIdx].AddAT($"Unknown command({msg.command})"); + } + + } + } +} diff --git a/QRValidation/Project/StateMachine/_TMDisplay.cs b/QRValidation/Project/StateMachine/_TMDisplay.cs new file mode 100644 index 0000000..4ab6cba --- /dev/null +++ b/QRValidation/Project/StateMachine/_TMDisplay.cs @@ -0,0 +1,145 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using WatsonWebsocket; + +namespace Project +{ + public partial class fMain + { + DateTime tm1minute = DateTime.Now.AddDays(-1); + DateTime tm5minute = DateTime.Now; + Boolean displayOn = false; + DateTime tmPaint = DateTime.Now; + + private void tmDisplay_Tick(object sender, EventArgs e) + { + if (displayOn == false) displayOn = true; + else + { + //Pub.log.AddAT("Display Timer Overlab");// Console.WriteLine("display overlab"); + return; + } + + //메인화면3초에 한번씩 업데이트한다 + var tsPaint = DateTime.Now - tmPaint; + if (tsPaint.TotalSeconds > 3) + { + //panMiniDisplay.Invalidate(); + tmPaint = DateTime.Now; + } + + + + //트리거버튼 + btTrigL.BackColor = PUB.IsTrigger[PUB.setting.CameraIndexL] ? Color.Lime : SystemColors.Control; + btTrigR.BackColor = PUB.IsTrigger[PUB.setting.CameraIndexR] ? Color.Lime : SystemColors.Control; + + //라이브상태표시 + if (PUB.setting.CameraIndexL >= 0) + btLiveL.BackColor = PUB.IsLive[PUB.setting.CameraIndexL] ? Color.Lime : SystemColors.Control; + else btLiveL.BackColor = SystemColors.Control; + + if (PUB.setting.CameraIndexR >= 0 && PUB.setting.CameraIndexR != PUB.setting.CameraIndexL) + btLiveR.BackColor = PUB.IsLive[PUB.setting.CameraIndexR] ? Color.Lime : SystemColors.Control; + else btLiveR.BackColor = SystemColors.Control; + + //프로세스버튼 + btProcessL.BackColor = PUB.IsProcess[PUB.setting.CameraIndexL] ? Color.Lime : SystemColors.Control; + btProcessR.BackColor = PUB.IsProcess[PUB.setting.CameraIndexR] ? Color.Lime : SystemColors.Control; + + //데이터정보 + lbGuidL.Text = $"GUID : {PUB.lastguid[PUB.setting.CameraIndexL]}"; + lbGuidR.Text = $"GUID : {PUB.lastguid[PUB.setting.CameraIndexR]}"; + lbTimeL.Text = $"TIME : " + PUB.Time_WS_Recv[PUB.setting.CameraIndexL].ToString("yyyy-MM-dd HH:mm:ss.fff"); + lbTimeR.Text = $"TIME : " + PUB.Time_WS_Recv[PUB.setting.CameraIndexR].ToString("yyyy-MM-dd HH:mm:ss.fff"); + lbDataL.Text = $"DATA : " + PUB.lastdata[PUB.setting.CameraIndexL]; + lbDataR.Text = $"DATA : " + PUB.lastdata[PUB.setting.CameraIndexR]; + + lbproctimel.Text = $"(Analysis {PUB.ProcessTime[PUB.setting.CameraIndexL]}ms)"; + lbproctimer.Text = $"(Analysis {PUB.ProcessTime[PUB.setting.CameraIndexR]}ms)"; + + label1.Text = $"STAT: {PUB.lastsendStatus[PUB.setting.CameraIndexL].ToString("HH:mm:ss.fff")}"; + label8.Text = $"STAT : {PUB.lastsendStatus[PUB.setting.CameraIndexR].ToString("HH:mm:ss.fff")}"; + + label2.Text = $"SEND: {PUB.lastsend[PUB.setting.CameraIndexL].ToString("HH:mm:ss.fff")}"; + label9.Text = $"SEND : {PUB.lastsend[PUB.setting.CameraIndexR].ToString("HH:mm:ss.fff")}"; + + + //sbMemMapL.ForeColor = swplc[PUB.setting.CameraIndexL].Init ? Color.Lime : Color.Red; + //sbMemMapR.ForeColor = swplc[PUB.setting.CameraIndexR].Init ? Color.Lime : Color.Red; + + if (PUB.setting.CameraIndexL >= 0) + { + sbConnCamL.ForeColor = PUB._isCrevisOpen[PUB.setting.CameraIndexL] ? Color.Green : Color.Red; + sbLiveL.ForeColor = PUB.IsLive[PUB.setting.CameraIndexL] ? Color.Green : Color.Red; + sbDetectReelL.ForeColor = PUB.DetectReel[PUB.setting.CameraIndexL] ? Color.Lime : Color.Black; + sbDetectCVL.ForeColor = PUB.DetectConv[PUB.setting.CameraIndexL] ? Color.Lime : Color.Black; + sbTrigL.ForeColor = PUB.IsTrigger[PUB.setting.CameraIndexL] ? Color.Green : Color.Red; + } + else + { + var c = Color.DimGray; + sbConnCamL.ForeColor =c; + sbLiveL.ForeColor =c; + sbDetectReelL.ForeColor =c; + sbDetectCVL.ForeColor =c; + sbTrigL.ForeColor = c; + } + if (PUB.setting.CameraIndexR >= 0) + { + sbConnCamR.ForeColor = PUB._isCrevisOpen[PUB.setting.CameraIndexR] ? Color.Green : Color.Red; + sbLiveR.ForeColor = PUB.IsLive[PUB.setting.CameraIndexR] ? Color.Green : Color.Red; + sbDetectReelR.ForeColor = PUB.DetectReel[PUB.setting.CameraIndexR] ? Color.Lime : Color.Black; + sbDetectCVR.ForeColor = PUB.DetectConv[PUB.setting.CameraIndexR] ? Color.Lime : Color.Black; + sbTrigR.ForeColor = PUB.IsTrigger[PUB.setting.CameraIndexR] ? Color.Green : Color.Red; + } + else + { + var c = Color.DimGray; + sbConnCamR.ForeColor = c; + sbLiveR.ForeColor = c; + sbDetectReelR.ForeColor = c; + sbDetectCVR.ForeColor = c; + sbTrigR.ForeColor = c; + } + + sbConnHostL.ForeColor = PUB.wsock_[0].ListClients().Count() > 0 ? Color.Green : Color.Red; + sbConnHostR.ForeColor = PUB.wsock_[1].ListClients().Count() > 0 ? Color.Green : Color.Red; + sbStream.ForeColor = PUB.setting.DisableStreamData ? Color.Red : Color.Green; + sbListenL.ForeColor = PUB.wsock_[0].IsListening ? Color.Green : Color.Red; + sbListenR.ForeColor = PUB.wsock_[1].IsListening ? Color.Green : Color.Red; + sbLicense.ForeColor = PUB.VisionLicense ? Color.Green : Color.Red; + + #region retgion"1분 time 루틴" + var ts = DateTime.Now - tm1minute; + if (ts.TotalMinutes >= 1) + { + //리셋카운트 + + tm1minute = DateTime.Now; + } + #endregion + + #region retgion"5분 time 루틴" + ts = DateTime.Now - tm5minute; + if (ts.TotalMinutes >= 5) + { + //남은디스크확인 + + tm5minute = DateTime.Now; + } + #endregion + + //wat.Stop(); + //Console.WriteLine("disp time : " + wat.ElapsedMilliseconds.ToString() + "ms"); + displayOn = false; + } + + + + + } +} diff --git a/QRValidation/Project/Util.cs b/QRValidation/Project/Util.cs new file mode 100644 index 0000000..54bac4a --- /dev/null +++ b/QRValidation/Project/Util.cs @@ -0,0 +1,301 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Net; +using System.Runtime.Serialization.Formatters.Binary; +using System.Text; +using System.Windows.Forms; +using System.Data; +using AR; +namespace Project +{ + + public static class Util + { + + + public static void SaveBugReport(string content, string subdirName = "BugReport") + { + try + { + var path = CurrentPath + subdirName; + if (!System.IO.Directory.Exists(path)) System.IO.Directory.CreateDirectory(path); + var file = path + "\\" + DateTime.Now.ToString("yyyyMMdd_HHmmss_fff") + ".txt"; + System.IO.File.WriteAllText(file, content, System.Text.Encoding.UTF8); + } + catch + { + //nothing + } + } + + + /// + /// Returns the currently executing folder. + /// + public static string CurrentPath + { + get + { + return AppDomain.CurrentDomain.BaseDirectory; + } + } + + + #region "convert" + public static string RectToStr(Rectangle rect) + { + return string.Format("{0};{1};{2};{3}", rect.X, rect.Y, rect.Width, rect.Height); + } + public static string RectToStr(RectangleF rect) + { + return string.Format("{0};{1};{2};{3}", rect.X, rect.Y, rect.Width, rect.Height); + } + public static string PointToStr(Point pt) + { + return string.Format("{0};{1}", pt.X, pt.Y); + } + public static string PointToStr(PointF pt) + { + return string.Format("{0};{1}", pt.X, pt.Y); + } + public static Rectangle StrToRect(string str) + { + if (str.isEmpty() || str.Split(';').Length != 4) str = "0;0;0;0"; + var roibuf1 = str.Split(';'); + return new System.Drawing.Rectangle( + int.Parse(roibuf1[0]), + int.Parse(roibuf1[1]), + int.Parse(roibuf1[2]), + int.Parse(roibuf1[3])); + } + public static RectangleF StrToRectF(string str) + { + if (str.isEmpty() || str.Split(';').Length != 4) str = "0;0;0;0"; + var roibuf1 = str.Split(';'); + return new System.Drawing.RectangleF( + float.Parse(roibuf1[0]), + float.Parse(roibuf1[1]), + float.Parse(roibuf1[2]), + float.Parse(roibuf1[3])); + } + public static Point StrToPoint(string str) + { + if (str.isEmpty() || str.Split(';').Length != 2) str = "0;0"; + var roibuf1 = str.Split(';'); + return new System.Drawing.Point( + int.Parse(roibuf1[0]), + int.Parse(roibuf1[1])); + } + public static PointF StrToPointF(string str) + { + if (str.isEmpty() || str.Split(';').Length != 2) str = "0;0"; + var roibuf1 = str.Split(';'); + return new System.Drawing.PointF( + float.Parse(roibuf1[0]), + float.Parse(roibuf1[1])); + } + #endregion + + #region "NIC" + + /// + /// Checks if the specified NIC card exists in the current list. + /// + /// + public static Boolean ExistNIC(string NICName) + { + if (string.IsNullOrEmpty(NICName)) return false; + foreach (string NetName in NICCardList()) + { + if (NetName.ToLower() == NICName.ToLower()) + { + return true; + } + } + return false; + } + + /// + /// Sets the Ethernet Card to disabled. (Administrator privileges required) + /// + /// + public static Boolean NICDisable(string NICName) + { + //해당 nic 가 현재 목록에 존재하는지 확인한다. + + string cmd = "interface set interface " + NICName + " disable"; + Process prc = new Process(); + ProcessStartInfo si = new ProcessStartInfo("netsh", cmd); + si.WindowStyle = ProcessWindowStyle.Hidden; + prc.StartInfo = si; + prc.Start(); + + ////목록에서 사라질때까지 기다린다. + DateTime SD = DateTime.Now; + Boolean timeout = false; + while ((true)) + { + + bool FindNetwork = false; + foreach (string NetName in NICCardList()) + { + if (NetName == NICName.ToLower()) + { + FindNetwork = true; + break; // TODO: might not be correct. Was : Exit For + } + } + + if (!FindNetwork) + break; // TODO: might not be correct. Was : Exit While + + System.Threading.Thread.Sleep(1000); + TimeSpan ts = DateTime.Now - SD; + if (ts.TotalSeconds > 10) + { + timeout = true; + break; // TODO: might not be correct. Was : Exit While + } + } + return !timeout; + } + + public static List NICCardList() + { + List Retval = new List(); + foreach (System.Net.NetworkInformation.NetworkInterface Net in System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()) + { + if (Net.NetworkInterfaceType == System.Net.NetworkInformation.NetworkInterfaceType.Ethernet) + { + Retval.Add(Net.Name.ToUpper()); + } + } + return Retval; + } + + /// + /// Sets the Ethernet card to enabled. + /// + /// + public static Boolean NICEnable(string NICName) + { + string cmd = "interface set interface " + NICName + " enable"; + System.Diagnostics.Process prc = new System.Diagnostics.Process(); + System.Diagnostics.ProcessStartInfo si = new System.Diagnostics.ProcessStartInfo("netsh", cmd); + si.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; + prc.StartInfo = si; + prc.Start(); + + + ////목록에생길떄까지 대기 + DateTime SD = DateTime.Now; + while ((true)) + { + + bool FindNetwork = false; + foreach (string NetName in NICCardList()) + { + if (NetName.ToLower() == NICName.ToLower()) + { + FindNetwork = true; + break; // TODO: might not be correct. Was : Exit For + } + } + + if (FindNetwork) + break; // TODO: might not be correct. Was : Exit While + + System.Threading.Thread.Sleep(1000); + TimeSpan ts = DateTime.Now - SD; + if (ts.TotalSeconds > 10) + { + return false; + } + } + + ////결이 완료될떄까지 기다린다. + SD = DateTime.Now; + while ((true)) + { + + bool FindNetwork = false; + foreach (System.Net.NetworkInformation.NetworkInterface Net in System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()) + { + if (Net.NetworkInterfaceType != System.Net.NetworkInformation.NetworkInterfaceType.GigabitEthernet && + Net.NetworkInterfaceType != System.Net.NetworkInformation.NetworkInterfaceType.Ethernet) continue; + if (Net.Name.ToLower() == NICName.ToLower()) + { + //string data = Net.GetIPProperties().GatewayAddresses[0].ToString(); + + if (Net.OperationalStatus == System.Net.NetworkInformation.OperationalStatus.Up) + { + + FindNetwork = true; + break; // TODO: might not be correct. Was : Exit For + } + } + } + if (FindNetwork) + return true; + + System.Threading.Thread.Sleep(1000); + TimeSpan ts = DateTime.Now - SD; + if (ts.TotalSeconds > 10) + { + return false; + } + } + + } + + #endregion + + public static void RunExplorer(string arg) + { + System.Diagnostics.ProcessStartInfo si = new ProcessStartInfo("explorer"); + si.Arguments = arg; + System.Diagnostics.Process.Start(si); + } + + + + #region "web function" + /// + /// Receives a string from URL. + /// + /// + /// + /// + public static string GetStrfromurl(string url, out Boolean isError) + { + isError = false; + string result = ""; + try + { + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url)); + request.Timeout = 60000; + request.ReadWriteTimeout = 60000; + + request.MaximumAutomaticRedirections = 4; + request.MaximumResponseHeadersLength = 4; + request.Credentials = CredentialCache.DefaultCredentials; + var response = request.GetResponse() as HttpWebResponse; + var txtReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); + result = txtReader.ReadToEnd(); + } + catch (Exception ex) + { + isError = true; + result = ex.Message.ToString(); + } + return result; + } + + #endregion + + } +} diff --git a/QRValidation/Project/Util_Vision.cs b/QRValidation/Project/Util_Vision.cs new file mode 100644 index 0000000..24d6ed1 --- /dev/null +++ b/QRValidation/Project/Util_Vision.cs @@ -0,0 +1,676 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Runtime.InteropServices; +using AR; +#if EMGU +using Emgu.CV; +using Emgu.CV.Structure; +#endif +#if V22 +using Euresys.Open_eVision_22_12; +#else +using Euresys.Open_eVision_2_11; +#endif + +namespace Project +{ + public static class Util_Vision + { + public struct SCodeData + { + public Point[] corner; + public string data; + public string model; + public string version; + public string level; + public string sid; + public void SetSID(string sid_) { sid = sid_; } + public Rectangle rect + { + get + { + if (corner == null || corner.Length != 4) return Rectangle.Empty; + var minx = corner.Min(t => t.X); + var maxx = corner.Max(t => t.X); + var miny = corner.Min(t => t.Y); + var maxy = corner.Max(t => t.Y); + return new Rectangle((int)minx, (int)miny, (int)(maxx - minx), (int)(maxy - miny)); + } + } + public float intersectPerc(Rectangle r) + { + //입력한 영역이 얼마나 겹쳐있는지 + if (rect.IsEmpty) return 0f; + + //현재 영역이랑 겹치는 영역이 없다면 0f + if (rect.IntersectsWith(r) == false) return 0f; + + var cx = r.Left + r.Width / 2f; + var cy = r.Top + r.Height / 2f; + if (rect.Contains((int)cx, (int)cy)) return 1f; + if (rect.Contains(r)) return 1f; + + return 0f; + } + } + + public static void DisplayQRData(List DataArr, Rectangle roi, arCtl.ImageBoxEvision iv) + { + iv.Shapes.Clear(); + foreach (var item in DataArr) + { + var p = new PointF[4]; + p[0] = new PointF(item.corner[0].X + roi.Left, item.corner[0].Y + roi.Top); + p[1] = new PointF(item.corner[1].X + roi.Left, item.corner[1].Y + roi.Top); + p[2] = new PointF(item.corner[2].X + roi.Left, item.corner[2].Y + roi.Top); + p[3] = new PointF(item.corner[3].X + roi.Left, item.corner[3].Y + roi.Top); + + iv.Shapes.AddLine(p[0], p[1], Color.Gold, 5); + iv.Shapes.AddLine(p[1], p[2], Color.Gold, 5); + iv.Shapes.AddLine(p[2], p[3], Color.Gold, 5); + iv.Shapes.AddLine(p[3], p[0], Color.Gold, 5); + + if (item.data.isEmpty() == false) + { + iv.Shapes.AddText(item.corner[1], item.data, Color.Black, 200f); + } + } + } + + private static List GetGainOffsetList(string gainstr) + { + var retval = new List(); + var list = gainstr.Split(';'); + foreach (var item in list) + { + var ptitem = item.Split(','); + if (ptitem.Length == 2) + { + retval.Add(new System.Drawing.PointF(float.Parse(ptitem[0]), float.Parse(ptitem[1]))); + } + } + return retval; + } + + // static SoftekBarcodeNet.BarcodeReader barcode = null;// new SoftekBarcodeNet.BarcodeReader(); + + static List ReadQR_EVision(EImageBW8 TargetImage, EQRCodeReader EQRCode1, RectangleF rect) + { + var retval = new System.Collections.Generic.List(); + EQRCode1.SearchField = TargetImage; + var EQRCode2Result = EQRCode1.Read(); + for (int j = 0; j < EQRCode2Result.Length; j++) + { + var QrData = EQRCode2Result[j]; + if (QrData.IsDecodingReliable) + { + var geo = QrData.Geometry; + var pos = geo.Position; + var cornous = pos.Corners; + + var resultData = new Util_Vision.SCodeData(); + + //테두리좌표 읽기 + var resultcorns = new List(); + for (int k = 0; k < cornous.Length; k++) + { + var con = cornous[k]; + resultcorns.Add(new Point((int)(con.X + rect.X), (int)(con.Y + rect.Y))); + con.Dispose(); + } + resultData.corner = resultcorns.ToArray(); + + //데이터읽기 + resultData.model = QrData.Model.ToString(); + resultData.version = QrData.Version.ToString(); + resultData.level = QrData.Level.ToString(); + resultData.sid = string.Empty; + + //바코드데이터확인 + var decodestr = QrData.DecodedStream; + resultData.data = string.Empty; + foreach (var item in decodestr.DecodedStreamParts) + { + resultData.data += System.Text.Encoding.Default.GetString(item.DecodedData); + item.Dispose(); + } + + //var c = new Class.CAmkorSTDBarcode(resultData.data); + //if (c.isValid) resultData.sid = c.SID; + //else resultData.sid = string.Empty; + //if (c.isValid) break; + //else resultData.data = string.Empty; + + //결과데이터 추가 + if (resultData.data.isEmpty() == false) + { + if (retval.Where(t => t.data == resultData.data).Any() == false) + { + retval.Add(resultData); + } + } + + decodestr.Dispose(); + decodestr = null; + + cornous = null; + pos.Dispose(); + geo.Dispose(); + } + QrData.Dispose(); + } + return retval; + } + //static List ReadQR_Softtek(EImageBW8 Image, RectangleF roi, Boolean useMedianfilter = false, int timeout = 50) + //{ + + // if (barcode == null) + // { + // barcode = new SoftekBarcodeNet.BarcodeReader(); + // barcode.LicenseKey = "PC6q6K38G6bG9EWMlQxDr4O8aQzJWPSB"; + // Pub.log.Add("softtek barcode init"); + + // // Turn on the barcode types you want to read. + // // Turn off the barcode types you don't want to read (this will increase the speed of your application) + // barcode.ReadCode128 = false; + // barcode.ReadCode39 = false; + // barcode.ReadCode25 = false; + // barcode.ReadEAN13 = false; + // barcode.ReadEAN8 = false; + // barcode.ReadUPCA = false; + // barcode.ReadUPCE = false; + // barcode.ReadCodabar = false; + // barcode.ReadPDF417 = false; + // barcode.ReadDataMatrix = true; + // barcode.ReadDatabar = false; + // barcode.ReadMicroPDF417 = false; + // barcode.ReadQRCode = true; + + // // If you want to read more than one barcode then set Multiple Read to 1 + // // Setting MutlipleRead to False will make the recognition faster + // barcode.MultipleRead = false; + // barcode.MaxBarcodesPerPage = 1; + // barcode.UseFastScan = true; + + // // You may need to set a small quiet zone if your barcodes are close to text and pictures in the image. + // // A value of zero uses the default. + // barcode.QuietZoneSize = 0; //사용하면 느려짐 + + // // LineJump controls the frequency at which scan lines in an image are sampled. + // // The default is 9 - decrease this for difficult barcodes. + // barcode.LineJump = 3; //속도가 빨라지나 결과 검출 영향 많이 줌 + // // The value is a mask where 1 = Left to Right, 2 = Top to Bottom, 4 = Right To Left, 8 = Bottom to Top + // barcode.ScanDirection = 15; //방향을 조정해주면 속도 가 빨라짐 + + // barcode.ColorProcessingLevel = 2; + // barcode.MinLength = 4; + // barcode.MaxLength = 9999; + // } + + // barcode.MedianFilter = useMedianfilter;//Pub.setting.CameraMeanFilter; + // barcode.TimeOut = timeout;// 50;// Pub.setting.CameraTimeOut; + + // int nBarCode; + // var retval = new List(); + + // var Scan0 = Image.GetImagePtr(); + // using (var bmp = new Bitmap(Image.Width, Image.Height, Image.RowPitch, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, Scan0)) + // { + // //비트맵 개체로 데이터를 읽어본다 + // nBarCode = barcode.ScanBarCodeFromBitmap(bmp); + + // if (nBarCode <= -6) + // { + // //Result.Text += "License key error: either an evaluation key has expired or the license key is not valid for processing pdf documents\r\n"; + // } + // else if (nBarCode < 0) + // { + // //Result.Text += "ScanBarCode returned error number "; + // //Result.Text += nBarCode.ToString(); + // //Result.Text += "\r\n"; + // //Result.Text += "Last Softek Error Number = "; + // //Result.Text += barcode.GetLastError().ToString(); + // //Result.Text += "\r\n"; + // //Result.Text += "Last Windows Error Number = "; + // //Result.Text += barcode.GetLastWinError().ToString(); + // //Result.Text += "\r\n"; + // } + // else if (nBarCode == 0) + // { + // //Result.Text += "No barcode found on this image\r\n"; + // } + // else + // { + // //Result.Text += "\r\n"; + // for (int i = 1; i <= nBarCode; i++) + // { + // var rect = barcode.GetBarStringRect(i); + + // var resultData = new SCodeData() + // { + // corner = new Point[] { + // new Point((int)(rect.Left+roi.X),(int)(rect.Top + roi.Y)), + // new Point((int)(rect.Right+roi.X),(int)(rect.Top+roi.Y)), + // new Point((int)(rect.Left+roi.X),(int)(rect.Bottom+roi.Y)), + // new Point((int)(rect.Right+roi.X),(int)(rect.Bottom+roi.Y)) + // }, + // data = barcode.GetBarString(i), + // level = string.Empty, + // model = string.Empty, + // sid = string.Empty, + // version = string.Empty, + // }; + + // //결과데이터 추가 + // if (resultData.data.isEmpty() == false) + // { + // if (retval.Where(t => t.data == resultData.data).Any() == false) + // { + // retval.Add(resultData); + // } + // } + // } + // } + // return retval; + // } + //} + + public static Tuple, List, List, double> DetectQR( + EImageBW8 EBW8Image4, + arCtl.ImageBoxEvision iv1, int idx, + out string Message, + string erodevaluestr = "3,1", + string gainoffsetlist = "2,1", + uint blob_area_min = 20000, + uint blob_area_max = 70000, + float blob_sigmaxy = 500f, + float blob_sigmayy = 500f, + float blob_sigmaxx = 5000f, + float blob_minw = 50, + float blob_maxw = 350, + float blob_minh = 50, + float blob_maxh = 350, + //bool addSofttekRead = false, + string maskfile = "", + string finddata = ""//, + // Image DispImage = null + ) + { + Message = string.Empty; + var pts = new System.Collections.Generic.List(); + System.Diagnostics.Stopwatch wat = new System.Diagnostics.Stopwatch(); + wat.Restart(); + + List ros = new List(); + List whiterects = new List(); + + uint objectCountT = 0; + //Blob 으로 바코드영역을 찾는다 + using (ECodedImage2 codedImage4 = new ECodedImage2()) // ECodedImage2 instance + { + using (EImageEncoder codedImage4Encoder = new EImageEncoder()) // EIma + { + using (EObjectSelection codedImage4ObjectSelection = new EObjectSelection()) + { + codedImage4ObjectSelection.FeretAngle = 0.00f; + + //기본이미지에서 흰색영역을 찾아서 해당 영역만 처리한다. + using (var psegment = codedImage4Encoder.GrayscaleSingleThresholdSegmenter) //.BlackLayerEncoded = true; + { + psegment.BlackLayerEncoded = false; + psegment.WhiteLayerEncoded = true; + psegment.Mode = EGrayscaleSingleThreshold.MaxEntropy; + } + + //마스크적용 - 210209 + if (maskfile.isEmpty() == false && System.IO.File.Exists(maskfile)) + { + using (var maskmig = new EImageBW8()) + { + maskmig.Load(maskfile);//이미지불러오지 + EasyImage.Oper(EArithmeticLogicOperation.BitwiseAnd, EBW8Image4, maskmig, EBW8Image4); + } + } + + + + //흰색데이터강조 + using (var deilimage = new EImageBW8(EBW8Image4.Width, EBW8Image4.Height)) + { + EasyImage.DilateBox(EBW8Image4, deilimage, 30); + codedImage4Encoder.Encode(deilimage, codedImage4); + codedImage4ObjectSelection.Clear(); + codedImage4ObjectSelection.AddObjects(codedImage4); + codedImage4ObjectSelection.RemoveUsingUnsignedIntegerFeature(EFeature.Area, 50000, ESingleThresholdMode.LessEqual); + for (uint i = 0; i < codedImage4ObjectSelection.ElementCount; i++) + { + var elm = codedImage4ObjectSelection.GetElement(i); + var x = elm.BoundingBoxCenterX - elm.BoundingBoxWidth / 2f; + var y = elm.BoundingBoxCenterY - elm.BoundingBoxHeight / 2f; + var w = elm.BoundingBoxWidth; + var h = elm.BoundingBoxHeight; + whiterects.Add(new Rectangle((int)x, (int)y, (int)w, (int)h)); + elm.Dispose(); + } + } + + //침식해서 바코드영역이 뭉치도록 한다. (바코드는 검은색 영역이 된다) + List erodevalues = new List(); + var erodebuffer = erodevaluestr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + foreach (var erbuf in erodebuffer) erodevalues.Add(uint.Parse(erbuf)); + using (var psegment = codedImage4Encoder.GrayscaleSingleThresholdSegmenter) //.BlackLayerEncoded = true; + { + psegment.BlackLayerEncoded = true; + psegment.WhiteLayerEncoded = false; + } + + //QR코드예상위치를 저장할 영역변수 + + //찾은 흰색영역에서 작업을 진행한다 + foreach (var roi in whiterects) + { + //각영역을 erod 처리하여 추가 영역을 찾는다 + using (EROIBW8 roimage = new EROIBW8()) + { + roimage.Attach(EBW8Image4); + roimage.SetPlacement(roi.X, roi.Y, roi.Width, roi.Height); + + for (int maxtype = 0; maxtype < 2; maxtype++) + { + //침식데이터도 여러개를 사용한다. + foreach (var erodevalue in erodevalues) + { + //Erode image + using (var ErodeImageBW8 = new EImageBW8(roimage.Width, roimage.Height)) + { + EasyImage.ErodeBox(roimage, ErodeImageBW8, erodevalue); + + + using (var psegment = codedImage4Encoder.GrayscaleSingleThresholdSegmenter) + { + if (maxtype == 0) + psegment.Mode = EGrayscaleSingleThreshold.MinResidue; + else if (maxtype == 1) + psegment.Mode = EGrayscaleSingleThreshold.MaxEntropy; + else if (maxtype == 2) + psegment.Mode = EGrayscaleSingleThreshold.IsoData; + } + + codedImage4Encoder.Encode(ErodeImageBW8, codedImage4); + codedImage4ObjectSelection.Clear(); + codedImage4ObjectSelection.AddObjects(codedImage4); + codedImage4ObjectSelection.AttachedImage = ErodeImageBW8; + + //너무큰 개체를 제거한다. + codedImage4ObjectSelection.RemoveUsingUnsignedIntegerFeature(EFeature.Area, blob_area_min, ESingleThresholdMode.LessEqual); + codedImage4ObjectSelection.RemoveUsingUnsignedIntegerFeature(EFeature.Area, blob_area_max, ESingleThresholdMode.GreaterEqual); + + codedImage4ObjectSelection.RemoveUsingFloatFeature(EFeature.BoundingBoxWidth, blob_minw, ESingleThresholdMode.LessEqual); + codedImage4ObjectSelection.RemoveUsingFloatFeature(EFeature.BoundingBoxWidth, blob_maxw, ESingleThresholdMode.GreaterEqual); + + codedImage4ObjectSelection.RemoveUsingFloatFeature(EFeature.BoundingBoxHeight, blob_minh, ESingleThresholdMode.LessEqual); + codedImage4ObjectSelection.RemoveUsingFloatFeature(EFeature.BoundingBoxHeight, blob_maxh, ESingleThresholdMode.GreaterEqual); + + //개체제거 + codedImage4ObjectSelection.RemoveUsingFloatFeature(EFeature.SigmaXY, blob_sigmaxy, ESingleThresholdMode.GreaterEqual); + //codedImage4ObjectSelection.RemoveUsingFloatFeature(EFeature.SigmaYY, blob_sigmayy, ESingleThresholdMode.LessEqual); + codedImage4ObjectSelection.RemoveUsingFloatFeature(EFeature.SigmaXX, blob_sigmaxx, ESingleThresholdMode.GreaterEqual); + + //찾은데이터수량 + var objectCount = codedImage4ObjectSelection.ElementCount; + + objectCountT += objectCount; + + //데이터표시 + //찾은영역을 표시한다. + for (uint i = 0; i < objectCount; i++) + { + //각 요소를 가져와서 처리한다. + using (var elm = codedImage4ObjectSelection.GetElement(i)) + { + var x = elm.BoundingBoxCenterX - elm.BoundingBoxWidth / 2f; + var y = elm.BoundingBoxCenterY - elm.BoundingBoxHeight / 2f; + var w = elm.BoundingBoxWidth; + var h = elm.BoundingBoxHeight; + + //절대좌표로 변경( + x += roimage.TotalOrgX; + y += roimage.TotalOrgY; + + var rect = new RectangleF(x, y, w, h); + + //이전 ROS에 겹치는 영역이 있다면 해당 ROS값을 확장해준다 + bool find = false; + for (int j = 0; j < ros.Count; j++) + { + if (ros[j].IntersectsWith(rect)) + { + //겹쳐있으니 영역을 확장해준다. + var x1 = Math.Min(ros[j].X, rect.X); + var y1 = Math.Min(ros[j].Y, rect.Y); + var w1 = Math.Max(ros[j].Right, rect.Right) - x1; + var h1 = Math.Max(ros[j].Bottom, rect.Bottom) - y1; + ros[j] = new RectangleF(x1, y1, w1, h1); + find = true; + break; + } + } + if (find == false) ros.Add(rect); //겹치는 영역이 없으니 추가한다. + + + } + } + + } + + } + } + + } + } + + //whitelist 에서 QR을 검색한다.(밝기조정없음) + var find2 = false; + + //ROS에서 QR을 검색한다(밝기조정함) + if (find2 == false) + { + foreach (var roi in ros) + { + //대상자료를 찾았다면 멈춘다 + if (ReadQRData(EBW8Image4, roi.toRect(), gainoffsetlist, ref pts, finddata)) + { + find2 = true; + break; + } + + } + } + + if (find2 == false) + { + foreach (var roi in whiterects) + { + //대상자료를 찾았다면 멈춘다 + if (ReadQRData(EBW8Image4, roi, "1,0", ref pts, finddata)) + { + find2 = true; //대상을 찾았다면 더 진행하지 않는다 + break; + } + } + } + + + } + + } + } + + wat.Stop(); + + //검사시간 저장 + var rosrect = ros.Select(t => new Rectangle((int)t.X, (int)t.Y, (int)t.Width, (int)t.Height)).ToList(); + return new Tuple, List, List, double>(pts, whiterects, rosrect, wat.ElapsedMilliseconds); + } + + /// + /// 지정한 영역에서 QR코드를 검색합니다. + /// + /// + /// 검색영역 + /// 밝기변경값 + /// 결과저장소 + /// 특정검색데이터 + /// + static bool ReadQRData(EImageBW8 EBW8Image4, Rectangle rect, string gainoffsetlist, ref List pts, string finddata = "") + { + var retval = false; + var GainOffsetList = GetGainOffsetList(gainoffsetlist); + + //해당영역을 ROI로 잡고 이미지를 검색한다 + var RoiImage2 = new EROIBW8(); + RoiImage2.Attach(EBW8Image4); + + //ROI로 사용할 영역의 오류를 체크해야한다 + var rLeft = (int)rect.Left; + var rTop = (int)rect.Top; + if (rLeft < 0) rLeft = 0; + if (rTop < 0) rTop = 0; + + var rWid = (int)rect.Width; + var rHei = (int)rect.Height; + + //roi 오류수정 210621 + if (rLeft + rWid > EBW8Image4.Width) rWid = EBW8Image4.Width - rLeft - 1; + if (rTop + rHei > EBW8Image4.Height) rHei = EBW8Image4.Height - rTop - 1; + + var rourect = new Rectangle(rLeft, rTop, rWid, rHei); + RoiImage2.SetPlacement(rourect.Left, rourect.Top, rourect.Width, rourect.Height); //ROI적용 + + var TargetImage = new EImageBW8(RoiImage2.Width, RoiImage2.Height); + + //밝기를 변경해서 처리해야한다 + //int processCount = 9; + + foreach (var param in GainOffsetList) //원본, gain +-, offset +- 5가지 색상처리함 + { + //크기를 동일하게 맞춰야 한다 + EasyImage.ScaleRotate(RoiImage2, + RoiImage2.Width / 2f, RoiImage2.Height / 2f, + TargetImage.Width / 2f, TargetImage.Height / 2f, + 1.0f, 1.0f, 0f, TargetImage); + //EasyImage.Copy(RoiImage, TargetImage); + + //밝기를 변경해서 사용할 것이므로 해당 변경된 밝기를 저장할 이미지를 생성한다. 210128 + //var roiimg = new EImageBW8(TargetImage); + //var param = Util_Vision.GetGainOffset(bright); + if (param.X != 1.0f || param.Y != 0.0f) EasyImage.GainOffset(TargetImage, TargetImage, param.X, param.Y); + //else RoiImage.CopyTo(TargetImage); ;// TargetImage.CopyTo(roiimg); //변경하지 않고 그대로 사용한다 + + using (EQRCodeReader EQRCode1 = new EQRCodeReader()) + { + //EQRCode1.DetectionMethod = 15; //모든방법으로 데이터를 찾는다 + EQRCode1.TimeOut = 1000 * 1000; //timeout (1초) + + if (TargetImage.Width < 500 || TargetImage.Height < 500) + EQRCode1.ForegroundDetectionThreshold = 3; + + var datas = ReadQR_EVision(TargetImage, EQRCode1, rect); + if (datas.Any()) + { + //중복데이터는 제거한다 211211 + foreach (var dataitem in datas) + { + if (pts.Where(t => t.data == dataitem.data).Any() == false) + pts.Add(dataitem); + else if (pts.Where(t => t.intersectPerc(dataitem.rect) > 0f).Any() == false) + pts.Add(dataitem); + + //해당 데이터가 찾는 데이터라면 진행을 멈춘다 + if (finddata.isEmpty() == false && dataitem.data.Equals(finddata)) + { + //검색대상 자료이므로 진행을 멈춘다 + retval = true; + break; + } + + //해당데이터가 amkor standard 라면 문제없이 진행한다. + var splitbuf = dataitem.data.Split(';'); + if (splitbuf.Length > 6 && splitbuf[0].StartsWith("10")) + { + //amkor std 라벨이므로 진행하지 않습니다. + retval = true; + break; + } + } + //pts.AddRange(datas); + } + + //sDisplayQRInfo(datas, iv1); + } + if (retval == true) break; //대상자료르 찾았다면 진행을 멈춘다 + } + RoiImage2.Dispose(); + TargetImage.Dispose(); + TargetImage = null; + return retval; + } + +#if EMGU + static void DisplayQRInfo(List datas, arImageViewer.EVision.UI.CustomControl1 iv1) +#else + static void DisplayQRInfo(List datas, arCtl.ImageBoxEvision iv1) +#endif + { + if (iv1 == null) return; + var idx = 0; + foreach (var resultData in datas) + { + //var c = new Class.CAmkorSTDBarcode(resultData.data); + //if (c.isValid) resultData.SetSID(c.SID); // = c.SID; + //else resultData.SetSID(string.Empty); + + //결과데이터 추가 + if (resultData.data.isEmpty() == false) + { + + //자료가잇다면 표시한다. + var dispvalue = $"#{idx}";// resultData.data; + //if (c.isValid == false) dispvalue += "\n" + c.Message; + //else if (c.DateError) dispvalue += "\n** Date Error **"; + + iv1.Shapes.AddText(resultData.corner[1].X + 1, resultData.corner[1].Y + 1, dispvalue, Color.Black, 50); + iv1.Shapes.AddText(resultData.corner[1].X, resultData.corner[1].Y, dispvalue, Color.Yellow, 50); + + + //if (DispImage != null) + // CvInvoke.PutText(DispImage, + // dispvalue, + // new Point(resultData.corner[1].X, resultData.corner[1].Y), FontFace.HersheyDuplex, 2, + // new Bgr(Color.Tomato).MCvScalar, 2); + + //찾은테두리를 화면에 표시한다. + foreach (var pt in resultData.corner) + { + iv1.Shapes.AddPoint(pt, Color.Lime, 20f); + //if (DispImage != null) + //{ + // CvInvoke.Line(DispImage, + // new Point(pt.X - 10, pt.Y - 10), + // new Point(pt.X + 10, pt.Y + 10), + // new Bgr(Color.Lime).MCvScalar, 2); + + // CvInvoke.Line(DispImage, + // new Point(pt.X + 10, pt.Y - 10), + // new Point(pt.X - 10, pt.Y + 10), + // new Bgr(Color.Lime).MCvScalar, 2); + //} + } + } + idx++; + } + } + } +} diff --git a/QRValidation/Project/VisionCrevis_v2.csproj b/QRValidation/Project/VisionCrevis_v2.csproj new file mode 100644 index 0000000..2c19b35 --- /dev/null +++ b/QRValidation/Project/VisionCrevis_v2.csproj @@ -0,0 +1,304 @@ + + + + + Debug + AnyCPU + {65F3E762-800C-499E-862F-A535642EC59F} + WinExe + Project + CrevisQRCode + v4.7 + 512 + 게시\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + False + False + False + OnBuildSuccess + False + False + False + obj\$(Configuration)\ + + + + x86 + true + Full + False + ..\..\..\..\..\amkor\ReelSorter\ + DEBUG;TRACE + prompt + 4 + false + + + AnyCPU + pdbonly + true + ..\..\..\ManualMapEditor\ + TRACE + prompt + 4 + false + + + icons8_iris_scan_80_XQd_icon.ico + + + LocalIntranet + + + false + + + + true + ..\..\..\..\CrevisQRCode%28L%29\ + TRACE;DEBUG;V2,EMGU + full + x86 + prompt + MinimumRecommendedRules.ruleset + false + + + bin\ + TRACE + true + pdbonly + x86 + prompt + MinimumRecommendedRules.ruleset + false + + + Project + False + obj\ + + + 4194304 + False + Auto + + + + ..\DLL\ArLog.Net4.dll + + + False + ..\DLL\ArSetting.Net4.dll + + + ..\DLL\ChilkatDotNet4.dll + + + False + ..\DLL\Crevis\x86\Crevis.VirtualFG40Library.dll + + + False + ..\DLL\Emgu\Emgu.CV.DebuggerVisualizers.VS2017.dll + + + False + ..\DLL\Emgu\Emgu.CV.UI.dll + + + False + ..\DLL\Emgu\Emgu.CV.World.dll + + + ..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll + + + False + C:\Program Files (x86)\Euresys\Open eVision 2.11\Bin32\Open_eVision_NetApi_2_11.dll + + + ..\DLL\SoftekBarcodeNet.dll + + + + + + + + + + + + + + + + + + + ..\DLL\WatsonWebsocket.dll + + + + + + + + + Form + + + fTeach.cs + + + Form + + + fLog.cs + + + Form + + + fErrorException.cs + + + Form + + + fMain.cs + + + Form + + + fSetting.cs + + + + + + + + + Form + + + + Form + + + Form + + + Form + + + + Form + + + fTeach.cs + + + fLog.cs + + + fErrorException.cs + + + fMain.cs + Designer + + + fSetting.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + False + Microsoft .NET Framework 4%28x86 및 x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 4.5 + true + + + + + {9264cd2e-7cf8-4237-a69f-dcda984e0613} + UIControl + + + {f31c242c-1b15-4518-9733-48558499fe4b} + arControl + + + {a16c9667-5241-4313-888e-548375f85d29} + arFrameControl + + + {c42cd2f4-5adb-4728-b654-ad9c2e1b22e7} + arImageViewer.EVision_v22 + + + {140af52a-5986-4413-bf02-8ea55a61891b} + MemoryMapCore + + + {14e8c9a5-013e-49ba-b435-ffffff7dd623} + arCommUtil + + + + + + + \ No newline at end of file diff --git a/QRValidation/Project/VisionCrevis_v22.csproj b/QRValidation/Project/VisionCrevis_v22.csproj new file mode 100644 index 0000000..b1d70f5 --- /dev/null +++ b/QRValidation/Project/VisionCrevis_v22.csproj @@ -0,0 +1,294 @@ + + + + + Debug + AnyCPU + {65F3E762-800C-499E-862F-A535642EC500} + WinExe + Project + CrevisQRCode + v4.8 + 512 + 게시\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + False + False + False + OnBuildSuccess + False + False + False + obj\$(Configuration)\ + + + + x86 + true + Full + False + ..\..\..\..\..\amkor\ReelSorter\ + DEBUG;TRACE + prompt + 4 + false + + + AnyCPU + pdbonly + true + ..\..\..\ManualMapEditor\ + TRACE + prompt + 4 + false + + + icons8_iris_scan_80_XQd_icon.ico + + + LocalIntranet + + + false + + + + true + ..\..\..\..\..\amkor\CrevisQRCode\ + TRACE;DEBUG;V22 + full + x64 + prompt + MinimumRecommendedRules.ruleset + false + + + bin\ + TRACE + true + pdbonly + x86 + prompt + MinimumRecommendedRules.ruleset + false + + + Project + False + obj\ + + + 4194304 + False + Auto + + + + False + ..\DLL\arCommUtil.dll + + + ..\DLL\ChilkatDotNet4.dll + + + False + C:\Program Files\CREVIS\Cameras\MCam40\bin\x64\Crevis.VirtualFG40Library.dll + + + False + ..\DLL\Emgu\Emgu.CV.DebuggerVisualizers.VS2017.dll + + + False + ..\DLL\Emgu\Emgu.CV.UI.dll + + + False + ..\DLL\Emgu\Emgu.CV.World.dll + + + ..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll + + + False + C:\Program Files (x86)\Euresys\Open eVision 22.12\Bin64\Open_eVision_NetApi_22_12.dll + + + + + + + + + + + + + + + + + + + ..\DLL\WatsonWebsocket.dll + + + + + + + + + + Form + + + fviewer.cs + + + Form + + + fTeach.cs + + + Form + + + fErrorException.cs + + + Form + + + fMain.cs + + + Component + + + LogTextBox.cs + + + Form + + + fSetting.cs + + + + + + + + + Form + + + Form + + + Form + + + Form + + + + Form + + + Form + + + Form + + + + Form + + + fviewer.cs + + + fTeach.cs + + + fErrorException.cs + + + fMain.cs + Designer + + + fSetting.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + False + Microsoft .NET Framework 4%28x86 및 x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 4.5 + true + + + + + {c42cd2f4-5adb-4728-b654-ad9c2e1b22e7} + arImageViewer.EVision_v22 + + + + + + + \ No newline at end of file diff --git a/QRValidation/Project/app.config b/QRValidation/Project/app.config new file mode 100644 index 0000000..d53753e --- /dev/null +++ b/QRValidation/Project/app.config @@ -0,0 +1,27 @@ + + + + +
+ + +
+ + + + + + + BLUPRT.CBX012020_rzDFf7pQAsCS + + + + + + + http://k1xip00.amkor.co.kr:50000/XISOAPAdapter/MessageServlet?senderParty=&senderService=eCIM_ATK&receiverParty=&receiverService=&interface=ZK_RFID_TRANS_SEQ&interfaceNamespace=urn%3Asap-com%3Adocument%3Asap%3Arfc%3Afunctions + + + + diff --git a/QRValidation/Project/fMain.Designer.cs b/QRValidation/Project/fMain.Designer.cs new file mode 100644 index 0000000..87aa5e7 --- /dev/null +++ b/QRValidation/Project/fMain.Designer.cs @@ -0,0 +1,2472 @@ +namespace Project +{ + partial class fMain + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fMain)); + this.tmDisplay = new System.Windows.Forms.Timer(this.components); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.systemParameterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripSeparator(); + this.demoRunToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.messageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.errorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.informationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.attentionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.setHomeSetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveDataToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.sMHistoryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.unitHistoryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.frontToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.rearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.cmOpenDir = new System.Windows.Forms.ContextMenuStrip(this.components); + this.맵데이터보기ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.저장폴더열기ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.캡처ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.저장ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.이미지ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.수량ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.cmGrid = new System.Windows.Forms.ContextMenuStrip(this.components); + this.sendSPNToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.sendSPN2dAPCToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.sendSPNRejectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.sendSPNRejectAPCToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.sendBinDataToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.sendBinDataRejectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.displayBinDataToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); + this.setNewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.setBlinkToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.setNormalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.setRejectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.setErrorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem5 = new System.Windows.Forms.ToolStripSeparator(); + this.cmDebug = new System.Windows.Forms.ContextMenuStrip(this.components); + this.countToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.sMResetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.debugModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.sAPSID목록보기ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.exceptionTestToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem8 = new System.Windows.Forms.ToolStripSeparator(); + this.motionEmulatorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.dIOEmulatorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.dIOMonitorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.refreshControklToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.sceanToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.normalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.motorHomeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.작업선택화면ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.unlaoderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.stateReadyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.setPortNoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem6 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem10 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem13 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem14 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem15 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem16 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem17 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem18 = new System.Windows.Forms.ToolStripMenuItem(); + this.setSizeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem11 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem12 = new System.Windows.Forms.ToolStripMenuItem(); + this.clearZoneItemToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.clearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.addInputZoneToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.addBCDZoneToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.addPLCZoneToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.addJobItemToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.addSidItemToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.addBcdItemToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.historyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.testToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.detectCountToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.menusToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.sampleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.clearToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.screenToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.jOBStartToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.debugWindowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.motionParameterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.axis0ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.axis1ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.axis2ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.axis3ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.axis4ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.processListToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.errorHandleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.idxDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.stripIdDataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.oKDataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.nGDataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.mISSDataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.fileMapDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataPathDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.mapOriginDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.mapArrayDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.testmenuToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.pLeft = new System.Windows.Forms.Panel(); + this.pivLeft = new System.Windows.Forms.Panel(); + this.statusStrip3 = new System.Windows.Forms.StatusStrip(); + this.sbConnCamL = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel30 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbConnHostL = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel34 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbLiveL = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel38 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbTrigL = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel42 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbMemMapL = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel44 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbDetectReelL = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel46 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbDetectCVL = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbListenL = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel3 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStrip2 = new System.Windows.Forms.ToolStrip(); + this.toolStripButton9 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton11 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton12 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton3 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton13 = new System.Windows.Forms.ToolStripButton(); + this.toolStrip4 = new System.Windows.Forms.ToolStrip(); + this.btTeachL = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripDropDownButton1 = new System.Windows.Forms.ToolStripDropDownButton(); + this.toolStripMenuItem7 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem19 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem20 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.btLiveL = new System.Windows.Forms.ToolStripButton(); + this.btProcessL = new System.Windows.Forms.ToolStripButton(); + this.btTrigL = new System.Windows.Forms.ToolStripButton(); + this.tabControl2 = new System.Windows.Forms.TabControl(); + this.tabPage3 = new System.Windows.Forms.TabPage(); + this.rtLeft = new System.Windows.Forms.RichTextBox(); + this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.lbTimeL = new System.Windows.Forms.Label(); + this.lbGuidL = new System.Windows.Forms.Label(); + this.lbDataL = new System.Windows.Forms.Label(); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.tabPage4 = new System.Windows.Forms.TabPage(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.sbLicense = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel8 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbStream = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel7 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbConnState = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel6 = new System.Windows.Forms.ToolStripStatusLabel(); + this.lbproctimel = new System.Windows.Forms.ToolStripStatusLabel(); + this.lbproctimer = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.toolStripButton7 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton4 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton5 = new System.Windows.Forms.ToolStripButton(); + this.cmMini = new System.Windows.Forms.ContextMenuStrip(this.components); + this.toolStripMenuItem81 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); + this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.pRight = new System.Windows.Forms.Panel(); + this.pIvRight = new System.Windows.Forms.Panel(); + this.statusStrip2 = new System.Windows.Forms.StatusStrip(); + this.sbConnCamR = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel12 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbConnHostR = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel16 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbLiveR = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel20 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbTrigR = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel24 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbMemMapR = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel26 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbDetectReelR = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel28 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbDetectCVR = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel(); + this.sbListenR = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel4 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStrip3 = new System.Windows.Forms.ToolStrip(); + this.toolStripButton14 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton15 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton16 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton17 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton18 = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton19 = new System.Windows.Forms.ToolStripButton(); + this.toolStrip5 = new System.Windows.Forms.ToolStrip(); + this.btTeachR = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripDropDownButton2 = new System.Windows.Forms.ToolStripDropDownButton(); + this.toolStripMenuItem21 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem22 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem23 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.btLiveR = new System.Windows.Forms.ToolStripButton(); + this.btProcessR = new System.Windows.Forms.ToolStripButton(); + this.btTrigR = new System.Windows.Forms.ToolStripButton(); + this.tabControl3 = new System.Windows.Forms.TabControl(); + this.tabPage5 = new System.Windows.Forms.TabPage(); + this.rtRight = new System.Windows.Forms.RichTextBox(); + this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel(); + this.groupBox7 = new System.Windows.Forms.GroupBox(); + this.label8 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.lbTimeR = new System.Windows.Forms.Label(); + this.lbGuidR = new System.Windows.Forms.Label(); + this.lbDataR = new System.Windows.Forms.Label(); + this.tabPage6 = new System.Windows.Forms.TabPage(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.bwLeft = new System.ComponentModel.BackgroundWorker(); + this.bwRight = new System.ComponentModel.BackgroundWorker(); + this.bwConn = new System.ComponentModel.BackgroundWorker(); + this.cmOpenDir.SuspendLayout(); + this.cmGrid.SuspendLayout(); + this.cmDebug.SuspendLayout(); + this.pLeft.SuspendLayout(); + this.statusStrip3.SuspendLayout(); + this.toolStrip2.SuspendLayout(); + this.toolStrip4.SuspendLayout(); + this.tabControl2.SuspendLayout(); + this.tabPage3.SuspendLayout(); + this.tableLayoutPanel3.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.groupBox5.SuspendLayout(); + this.statusStrip1.SuspendLayout(); + this.toolStrip1.SuspendLayout(); + this.cmMini.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.pRight.SuspendLayout(); + this.statusStrip2.SuspendLayout(); + this.toolStrip3.SuspendLayout(); + this.toolStrip5.SuspendLayout(); + this.tabControl3.SuspendLayout(); + this.tabPage5.SuspendLayout(); + this.tableLayoutPanel4.SuspendLayout(); + this.groupBox7.SuspendLayout(); + this.groupBox4.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.SuspendLayout(); + // + // tmDisplay + // + this.tmDisplay.Interval = 150; + this.tmDisplay.Tick += new System.EventHandler(this.tmDisplay_Tick); + // + // systemParameterToolStripMenuItem + // + this.systemParameterToolStripMenuItem.Font = new System.Drawing.Font("Cambria", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.systemParameterToolStripMenuItem.Name = "systemParameterToolStripMenuItem"; + this.systemParameterToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.systemParameterToolStripMenuItem.Text = "System Parameter"; + // + // toolStripMenuItem4 + // + this.toolStripMenuItem4.Name = "toolStripMenuItem4"; + this.toolStripMenuItem4.Size = new System.Drawing.Size(209, 6); + // + // demoRunToolStripMenuItem + // + this.demoRunToolStripMenuItem.Font = new System.Drawing.Font("Cambria", 10F, System.Drawing.FontStyle.Bold); + this.demoRunToolStripMenuItem.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0))))); + this.demoRunToolStripMenuItem.Name = "demoRunToolStripMenuItem"; + this.demoRunToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.demoRunToolStripMenuItem.Text = "Demo Run"; + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(209, 6); + // + // messageToolStripMenuItem + // + this.messageToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.errorToolStripMenuItem, + this.informationToolStripMenuItem, + this.attentionToolStripMenuItem}); + this.messageToolStripMenuItem.Font = new System.Drawing.Font("Cambria", 10F, System.Drawing.FontStyle.Bold); + this.messageToolStripMenuItem.Name = "messageToolStripMenuItem"; + this.messageToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.messageToolStripMenuItem.Text = "Message"; + // + // errorToolStripMenuItem + // + this.errorToolStripMenuItem.Name = "errorToolStripMenuItem"; + this.errorToolStripMenuItem.Size = new System.Drawing.Size(155, 22); + this.errorToolStripMenuItem.Text = "Error"; + // + // informationToolStripMenuItem + // + this.informationToolStripMenuItem.Name = "informationToolStripMenuItem"; + this.informationToolStripMenuItem.Size = new System.Drawing.Size(155, 22); + this.informationToolStripMenuItem.Text = "Information"; + // + // attentionToolStripMenuItem + // + this.attentionToolStripMenuItem.Name = "attentionToolStripMenuItem"; + this.attentionToolStripMenuItem.Size = new System.Drawing.Size(155, 22); + this.attentionToolStripMenuItem.Text = "Attention"; + // + // setHomeSetToolStripMenuItem + // + this.setHomeSetToolStripMenuItem.Name = "setHomeSetToolStripMenuItem"; + this.setHomeSetToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.setHomeSetToolStripMenuItem.Text = "Set HomeSet"; + // + // saveDataToolStripMenuItem + // + this.saveDataToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.sMHistoryToolStripMenuItem, + this.unitHistoryToolStripMenuItem}); + this.saveDataToolStripMenuItem.Name = "saveDataToolStripMenuItem"; + this.saveDataToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.saveDataToolStripMenuItem.Text = "Save Data"; + // + // sMHistoryToolStripMenuItem + // + this.sMHistoryToolStripMenuItem.Name = "sMHistoryToolStripMenuItem"; + this.sMHistoryToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.sMHistoryToolStripMenuItem.Text = "SM : History"; + // + // unitHistoryToolStripMenuItem + // + this.unitHistoryToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.frontToolStripMenuItem, + this.rearToolStripMenuItem}); + this.unitHistoryToolStripMenuItem.Name = "unitHistoryToolStripMenuItem"; + this.unitHistoryToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.unitHistoryToolStripMenuItem.Text = "Unit History"; + // + // frontToolStripMenuItem + // + this.frontToolStripMenuItem.Name = "frontToolStripMenuItem"; + this.frontToolStripMenuItem.Size = new System.Drawing.Size(114, 22); + this.frontToolStripMenuItem.Text = "Front"; + // + // rearToolStripMenuItem + // + this.rearToolStripMenuItem.Name = "rearToolStripMenuItem"; + this.rearToolStripMenuItem.Size = new System.Drawing.Size(114, 22); + this.rearToolStripMenuItem.Text = "Rear"; + // + // cmOpenDir + // + this.cmOpenDir.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.맵데이터보기ToolStripMenuItem, + this.저장폴더열기ToolStripMenuItem, + this.캡처ToolStripMenuItem1, + this.저장ToolStripMenuItem, + this.이미지ToolStripMenuItem, + this.수량ToolStripMenuItem}); + this.cmOpenDir.Name = "cmLot1"; + this.cmOpenDir.Size = new System.Drawing.Size(121, 136); + // + // 맵데이터보기ToolStripMenuItem + // + this.맵데이터보기ToolStripMenuItem.Name = "맵데이터보기ToolStripMenuItem"; + this.맵데이터보기ToolStripMenuItem.Size = new System.Drawing.Size(120, 22); + this.맵데이터보기ToolStripMenuItem.Text = "Program"; + this.맵데이터보기ToolStripMenuItem.Click += new System.EventHandler(this.맵데이터보기ToolStripMenuItem_Click); + // + // 저장폴더열기ToolStripMenuItem + // + this.저장폴더열기ToolStripMenuItem.Name = "저장폴더열기ToolStripMenuItem"; + this.저장폴더열기ToolStripMenuItem.Size = new System.Drawing.Size(120, 22); + this.저장폴더열기ToolStripMenuItem.Text = "Log"; + this.저장폴더열기ToolStripMenuItem.Click += new System.EventHandler(this.저장폴더열기ToolStripMenuItem_Click); + // + // 캡처ToolStripMenuItem1 + // + this.캡처ToolStripMenuItem1.Name = "캡처ToolStripMenuItem1"; + this.캡처ToolStripMenuItem1.Size = new System.Drawing.Size(120, 22); + this.캡처ToolStripMenuItem1.Text = "Capture"; + this.캡처ToolStripMenuItem1.Click += new System.EventHandler(this.캡처ToolStripMenuItem1_Click); + // + // 저장ToolStripMenuItem + // + this.저장ToolStripMenuItem.Name = "저장ToolStripMenuItem"; + this.저장ToolStripMenuItem.Size = new System.Drawing.Size(120, 22); + this.저장ToolStripMenuItem.Text = "Save"; + this.저장ToolStripMenuItem.Click += new System.EventHandler(this.저장ToolStripMenuItem_Click); + // + // 이미지ToolStripMenuItem + // + this.이미지ToolStripMenuItem.Name = "이미지ToolStripMenuItem"; + this.이미지ToolStripMenuItem.Size = new System.Drawing.Size(120, 22); + this.이미지ToolStripMenuItem.Text = "Image"; + this.이미지ToolStripMenuItem.Click += new System.EventHandler(this.이미지ToolStripMenuItem_Click); + // + // 수량ToolStripMenuItem + // + this.수량ToolStripMenuItem.Name = "수량ToolStripMenuItem"; + this.수량ToolStripMenuItem.Size = new System.Drawing.Size(120, 22); + this.수량ToolStripMenuItem.Text = "Quantity"; + this.수량ToolStripMenuItem.Click += new System.EventHandler(this.수량ToolStripMenuItem_Click); + // + // cmGrid + // + this.cmGrid.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.sendSPNToolStripMenuItem1, + this.sendSPN2dAPCToolStripMenuItem, + this.sendSPNRejectToolStripMenuItem, + this.sendSPNRejectAPCToolStripMenuItem, + this.sendBinDataToolStripMenuItem, + this.sendBinDataRejectToolStripMenuItem, + this.displayBinDataToolStripMenuItem, + this.toolStripMenuItem2, + this.setNewToolStripMenuItem, + this.setBlinkToolStripMenuItem, + this.setNormalToolStripMenuItem, + this.setRejectToolStripMenuItem, + this.setErrorToolStripMenuItem, + this.toolStripMenuItem5}); + this.cmGrid.Name = "cmVision"; + this.cmGrid.Size = new System.Drawing.Size(200, 280); + // + // sendSPNToolStripMenuItem1 + // + this.sendSPNToolStripMenuItem1.Name = "sendSPNToolStripMenuItem1"; + this.sendSPNToolStripMenuItem1.Size = new System.Drawing.Size(199, 22); + this.sendSPNToolStripMenuItem1.Text = "Send SPN(2D)"; + // + // sendSPN2dAPCToolStripMenuItem + // + this.sendSPN2dAPCToolStripMenuItem.Name = "sendSPN2dAPCToolStripMenuItem"; + this.sendSPN2dAPCToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.sendSPN2dAPCToolStripMenuItem.Text = "Send SPN(2d) - APC"; + // + // sendSPNRejectToolStripMenuItem + // + this.sendSPNRejectToolStripMenuItem.Name = "sendSPNRejectToolStripMenuItem"; + this.sendSPNRejectToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.sendSPNRejectToolStripMenuItem.Text = "Send SPN(Reject)"; + // + // sendSPNRejectAPCToolStripMenuItem + // + this.sendSPNRejectAPCToolStripMenuItem.Name = "sendSPNRejectAPCToolStripMenuItem"; + this.sendSPNRejectAPCToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.sendSPNRejectAPCToolStripMenuItem.Text = "Send SPN(Reject) - APC"; + // + // sendBinDataToolStripMenuItem + // + this.sendBinDataToolStripMenuItem.Name = "sendBinDataToolStripMenuItem"; + this.sendBinDataToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.sendBinDataToolStripMenuItem.Text = "Send BinData(2D)"; + // + // sendBinDataRejectToolStripMenuItem + // + this.sendBinDataRejectToolStripMenuItem.Name = "sendBinDataRejectToolStripMenuItem"; + this.sendBinDataRejectToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.sendBinDataRejectToolStripMenuItem.Text = "Send BinData(Reject)"; + // + // displayBinDataToolStripMenuItem + // + this.displayBinDataToolStripMenuItem.Name = "displayBinDataToolStripMenuItem"; + this.displayBinDataToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.displayBinDataToolStripMenuItem.Text = "Display BinData"; + // + // toolStripMenuItem2 + // + this.toolStripMenuItem2.Name = "toolStripMenuItem2"; + this.toolStripMenuItem2.Size = new System.Drawing.Size(196, 6); + // + // setNewToolStripMenuItem + // + this.setNewToolStripMenuItem.Name = "setNewToolStripMenuItem"; + this.setNewToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.setNewToolStripMenuItem.Tag = "3"; + this.setNewToolStripMenuItem.Text = "Set New"; + // + // setBlinkToolStripMenuItem + // + this.setBlinkToolStripMenuItem.Name = "setBlinkToolStripMenuItem"; + this.setBlinkToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.setBlinkToolStripMenuItem.Tag = "2"; + this.setBlinkToolStripMenuItem.Text = "Set Empty"; + // + // setNormalToolStripMenuItem + // + this.setNormalToolStripMenuItem.Name = "setNormalToolStripMenuItem"; + this.setNormalToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.setNormalToolStripMenuItem.Tag = "5"; + this.setNormalToolStripMenuItem.Text = "Set Normal"; + // + // setRejectToolStripMenuItem + // + this.setRejectToolStripMenuItem.Name = "setRejectToolStripMenuItem"; + this.setRejectToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.setRejectToolStripMenuItem.Tag = "6"; + this.setRejectToolStripMenuItem.Text = "Set Limit"; + // + // setErrorToolStripMenuItem + // + this.setErrorToolStripMenuItem.Name = "setErrorToolStripMenuItem"; + this.setErrorToolStripMenuItem.Size = new System.Drawing.Size(199, 22); + this.setErrorToolStripMenuItem.Tag = "4"; + this.setErrorToolStripMenuItem.Text = "Set Error"; + // + // toolStripMenuItem5 + // + this.toolStripMenuItem5.Name = "toolStripMenuItem5"; + this.toolStripMenuItem5.Size = new System.Drawing.Size(196, 6); + // + // cmDebug + // + this.cmDebug.Font = new System.Drawing.Font("Cambria", 10F, System.Drawing.FontStyle.Bold); + this.cmDebug.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.countToolStripMenuItem, + this.sMResetToolStripMenuItem, + this.systemParameterToolStripMenuItem, + this.toolStripMenuItem4, + this.debugModeToolStripMenuItem, + this.demoRunToolStripMenuItem, + this.toolStripMenuItem1, + this.sAPSID목록보기ToolStripMenuItem, + this.setHomeSetToolStripMenuItem, + this.messageToolStripMenuItem, + this.saveDataToolStripMenuItem, + this.exceptionTestToolStripMenuItem, + this.toolStripMenuItem8, + this.motionEmulatorToolStripMenuItem, + this.dIOEmulatorToolStripMenuItem, + this.dIOMonitorToolStripMenuItem, + this.refreshControklToolStripMenuItem, + this.sceanToolStripMenuItem, + this.작업선택화면ToolStripMenuItem, + this.unlaoderToolStripMenuItem, + this.clearZoneItemToolStripMenuItem, + this.historyToolStripMenuItem, + this.menusToolStripMenuItem, + this.screenToolStripMenuItem, + this.motionParameterToolStripMenuItem, + this.processListToolStripMenuItem, + this.errorHandleToolStripMenuItem}); + this.cmDebug.Name = "cmVision"; + this.cmDebug.Size = new System.Drawing.Size(213, 550); + // + // countToolStripMenuItem + // + this.countToolStripMenuItem.Name = "countToolStripMenuItem"; + this.countToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.countToolStripMenuItem.Text = "Debug Window"; + // + // sMResetToolStripMenuItem + // + this.sMResetToolStripMenuItem.Name = "sMResetToolStripMenuItem"; + this.sMResetToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.sMResetToolStripMenuItem.Text = "S/M Reset"; + // + // debugModeToolStripMenuItem + // + this.debugModeToolStripMenuItem.Name = "debugModeToolStripMenuItem"; + this.debugModeToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.debugModeToolStripMenuItem.Text = "Debug Mode"; + // + // sAPSID목록보기ToolStripMenuItem + // + this.sAPSID목록보기ToolStripMenuItem.Name = "sAPSID목록보기ToolStripMenuItem"; + this.sAPSID목록보기ToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.sAPSID목록보기ToolStripMenuItem.Text = "SAP SID 목록 보기"; + // + // exceptionTestToolStripMenuItem + // + this.exceptionTestToolStripMenuItem.Name = "exceptionTestToolStripMenuItem"; + this.exceptionTestToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.exceptionTestToolStripMenuItem.Text = "Exception Test"; + this.exceptionTestToolStripMenuItem.Click += new System.EventHandler(this.exceptionTestToolStripMenuItem_Click); + // + // toolStripMenuItem8 + // + this.toolStripMenuItem8.Name = "toolStripMenuItem8"; + this.toolStripMenuItem8.Size = new System.Drawing.Size(209, 6); + // + // motionEmulatorToolStripMenuItem + // + this.motionEmulatorToolStripMenuItem.Name = "motionEmulatorToolStripMenuItem"; + this.motionEmulatorToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.motionEmulatorToolStripMenuItem.Text = "Motion Emulator"; + // + // dIOEmulatorToolStripMenuItem + // + this.dIOEmulatorToolStripMenuItem.Name = "dIOEmulatorToolStripMenuItem"; + this.dIOEmulatorToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.dIOEmulatorToolStripMenuItem.Text = "DIO Emulator"; + // + // dIOMonitorToolStripMenuItem + // + this.dIOMonitorToolStripMenuItem.Name = "dIOMonitorToolStripMenuItem"; + this.dIOMonitorToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.dIOMonitorToolStripMenuItem.Text = "DIO Monitor"; + // + // refreshControklToolStripMenuItem + // + this.refreshControklToolStripMenuItem.Name = "refreshControklToolStripMenuItem"; + this.refreshControklToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.refreshControklToolStripMenuItem.Text = "Refresh Controkl"; + // + // sceanToolStripMenuItem + // + this.sceanToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.normalToolStripMenuItem, + this.motorHomeToolStripMenuItem}); + this.sceanToolStripMenuItem.Name = "sceanToolStripMenuItem"; + this.sceanToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.sceanToolStripMenuItem.Text = "Scean"; + // + // normalToolStripMenuItem + // + this.normalToolStripMenuItem.Name = "normalToolStripMenuItem"; + this.normalToolStripMenuItem.Size = new System.Drawing.Size(158, 22); + this.normalToolStripMenuItem.Text = "Normal"; + // + // motorHomeToolStripMenuItem + // + this.motorHomeToolStripMenuItem.Name = "motorHomeToolStripMenuItem"; + this.motorHomeToolStripMenuItem.Size = new System.Drawing.Size(158, 22); + this.motorHomeToolStripMenuItem.Text = "Motor Home"; + // + // 작업선택화면ToolStripMenuItem + // + this.작업선택화면ToolStripMenuItem.Name = "작업선택화면ToolStripMenuItem"; + this.작업선택화면ToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.작업선택화면ToolStripMenuItem.Text = "Data Buffer (History)"; + // + // unlaoderToolStripMenuItem + // + this.unlaoderToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.stateReadyToolStripMenuItem, + this.setPortNoToolStripMenuItem, + this.setSizeToolStripMenuItem}); + this.unlaoderToolStripMenuItem.Name = "unlaoderToolStripMenuItem"; + this.unlaoderToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.unlaoderToolStripMenuItem.Text = "Unlaoder"; + // + // stateReadyToolStripMenuItem + // + this.stateReadyToolStripMenuItem.Name = "stateReadyToolStripMenuItem"; + this.stateReadyToolStripMenuItem.Size = new System.Drawing.Size(159, 22); + this.stateReadyToolStripMenuItem.Text = "State = ready"; + // + // setPortNoToolStripMenuItem + // + this.setPortNoToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem6, + this.toolStripMenuItem10, + this.toolStripMenuItem13, + this.toolStripMenuItem14, + this.toolStripMenuItem15, + this.toolStripMenuItem16, + this.toolStripMenuItem17, + this.toolStripMenuItem18}); + this.setPortNoToolStripMenuItem.Name = "setPortNoToolStripMenuItem"; + this.setPortNoToolStripMenuItem.Size = new System.Drawing.Size(159, 22); + this.setPortNoToolStripMenuItem.Text = "Set Port No"; + // + // toolStripMenuItem6 + // + this.toolStripMenuItem6.Name = "toolStripMenuItem6"; + this.toolStripMenuItem6.Size = new System.Drawing.Size(95, 22); + this.toolStripMenuItem6.Text = "11"; + // + // toolStripMenuItem10 + // + this.toolStripMenuItem10.Name = "toolStripMenuItem10"; + this.toolStripMenuItem10.Size = new System.Drawing.Size(95, 22); + this.toolStripMenuItem10.Text = "12"; + // + // toolStripMenuItem13 + // + this.toolStripMenuItem13.Name = "toolStripMenuItem13"; + this.toolStripMenuItem13.Size = new System.Drawing.Size(95, 22); + this.toolStripMenuItem13.Text = "21"; + // + // toolStripMenuItem14 + // + this.toolStripMenuItem14.Name = "toolStripMenuItem14"; + this.toolStripMenuItem14.Size = new System.Drawing.Size(95, 22); + this.toolStripMenuItem14.Text = "22"; + // + // toolStripMenuItem15 + // + this.toolStripMenuItem15.Name = "toolStripMenuItem15"; + this.toolStripMenuItem15.Size = new System.Drawing.Size(95, 22); + this.toolStripMenuItem15.Text = "31"; + // + // toolStripMenuItem16 + // + this.toolStripMenuItem16.Name = "toolStripMenuItem16"; + this.toolStripMenuItem16.Size = new System.Drawing.Size(95, 22); + this.toolStripMenuItem16.Text = "32"; + // + // toolStripMenuItem17 + // + this.toolStripMenuItem17.Name = "toolStripMenuItem17"; + this.toolStripMenuItem17.Size = new System.Drawing.Size(95, 22); + this.toolStripMenuItem17.Text = "41"; + // + // toolStripMenuItem18 + // + this.toolStripMenuItem18.Name = "toolStripMenuItem18"; + this.toolStripMenuItem18.Size = new System.Drawing.Size(95, 22); + this.toolStripMenuItem18.Text = "42"; + // + // setSizeToolStripMenuItem + // + this.setSizeToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem11, + this.toolStripMenuItem12}); + this.setSizeToolStripMenuItem.Name = "setSizeToolStripMenuItem"; + this.setSizeToolStripMenuItem.Size = new System.Drawing.Size(159, 22); + this.setSizeToolStripMenuItem.Text = "Set Size"; + // + // toolStripMenuItem11 + // + this.toolStripMenuItem11.Name = "toolStripMenuItem11"; + this.toolStripMenuItem11.Size = new System.Drawing.Size(95, 22); + this.toolStripMenuItem11.Text = "7"; + // + // toolStripMenuItem12 + // + this.toolStripMenuItem12.Name = "toolStripMenuItem12"; + this.toolStripMenuItem12.Size = new System.Drawing.Size(95, 22); + this.toolStripMenuItem12.Text = "13"; + // + // clearZoneItemToolStripMenuItem + // + this.clearZoneItemToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.clearToolStripMenuItem, + this.addInputZoneToolStripMenuItem, + this.addBCDZoneToolStripMenuItem, + this.addPLCZoneToolStripMenuItem, + this.addJobItemToolStripMenuItem, + this.addSidItemToolStripMenuItem, + this.addBcdItemToolStripMenuItem}); + this.clearZoneItemToolStripMenuItem.Name = "clearZoneItemToolStripMenuItem"; + this.clearZoneItemToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.clearZoneItemToolStripMenuItem.Text = " ZoneItem"; + // + // clearToolStripMenuItem + // + this.clearToolStripMenuItem.Name = "clearToolStripMenuItem"; + this.clearToolStripMenuItem.Size = new System.Drawing.Size(175, 22); + this.clearToolStripMenuItem.Text = "Clear"; + // + // addInputZoneToolStripMenuItem + // + this.addInputZoneToolStripMenuItem.Name = "addInputZoneToolStripMenuItem"; + this.addInputZoneToolStripMenuItem.Size = new System.Drawing.Size(175, 22); + this.addInputZoneToolStripMenuItem.Text = "Add Input Zone"; + // + // addBCDZoneToolStripMenuItem + // + this.addBCDZoneToolStripMenuItem.Name = "addBCDZoneToolStripMenuItem"; + this.addBCDZoneToolStripMenuItem.Size = new System.Drawing.Size(175, 22); + this.addBCDZoneToolStripMenuItem.Text = "Add BCD Zone"; + // + // addPLCZoneToolStripMenuItem + // + this.addPLCZoneToolStripMenuItem.Name = "addPLCZoneToolStripMenuItem"; + this.addPLCZoneToolStripMenuItem.Size = new System.Drawing.Size(175, 22); + this.addPLCZoneToolStripMenuItem.Text = "Add PLC Zone"; + // + // addJobItemToolStripMenuItem + // + this.addJobItemToolStripMenuItem.Name = "addJobItemToolStripMenuItem"; + this.addJobItemToolStripMenuItem.Size = new System.Drawing.Size(175, 22); + this.addJobItemToolStripMenuItem.Text = "Add Job Item"; + // + // addSidItemToolStripMenuItem + // + this.addSidItemToolStripMenuItem.Name = "addSidItemToolStripMenuItem"; + this.addSidItemToolStripMenuItem.Size = new System.Drawing.Size(175, 22); + this.addSidItemToolStripMenuItem.Text = "Add Sid Item"; + // + // addBcdItemToolStripMenuItem + // + this.addBcdItemToolStripMenuItem.Name = "addBcdItemToolStripMenuItem"; + this.addBcdItemToolStripMenuItem.Size = new System.Drawing.Size(175, 22); + this.addBcdItemToolStripMenuItem.Text = "Add Bcd Item"; + // + // historyToolStripMenuItem + // + this.historyToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.testToolStripMenuItem, + this.detectCountToolStripMenuItem}); + this.historyToolStripMenuItem.Name = "historyToolStripMenuItem"; + this.historyToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.historyToolStripMenuItem.Text = "History"; + // + // testToolStripMenuItem + // + this.testToolStripMenuItem.Name = "testToolStripMenuItem"; + this.testToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.testToolStripMenuItem.Text = "test"; + // + // detectCountToolStripMenuItem + // + this.detectCountToolStripMenuItem.Name = "detectCountToolStripMenuItem"; + this.detectCountToolStripMenuItem.Size = new System.Drawing.Size(160, 22); + this.detectCountToolStripMenuItem.Text = "Detect Count"; + // + // menusToolStripMenuItem + // + this.menusToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.sampleToolStripMenuItem, + this.clearToolStripMenuItem1}); + this.menusToolStripMenuItem.Name = "menusToolStripMenuItem"; + this.menusToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.menusToolStripMenuItem.Text = "Menus"; + // + // sampleToolStripMenuItem + // + this.sampleToolStripMenuItem.Name = "sampleToolStripMenuItem"; + this.sampleToolStripMenuItem.Size = new System.Drawing.Size(111, 22); + this.sampleToolStripMenuItem.Text = "Add"; + // + // clearToolStripMenuItem1 + // + this.clearToolStripMenuItem1.Name = "clearToolStripMenuItem1"; + this.clearToolStripMenuItem1.Size = new System.Drawing.Size(111, 22); + this.clearToolStripMenuItem1.Text = "Clear"; + // + // screenToolStripMenuItem + // + this.screenToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.jOBStartToolStripMenuItem, + this.debugWindowToolStripMenuItem}); + this.screenToolStripMenuItem.Name = "screenToolStripMenuItem"; + this.screenToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.screenToolStripMenuItem.Text = "Screen"; + // + // jOBStartToolStripMenuItem + // + this.jOBStartToolStripMenuItem.Name = "jOBStartToolStripMenuItem"; + this.jOBStartToolStripMenuItem.Size = new System.Drawing.Size(174, 22); + this.jOBStartToolStripMenuItem.Text = "JOB Start"; + // + // debugWindowToolStripMenuItem + // + this.debugWindowToolStripMenuItem.Name = "debugWindowToolStripMenuItem"; + this.debugWindowToolStripMenuItem.Size = new System.Drawing.Size(174, 22); + this.debugWindowToolStripMenuItem.Text = "Debug Window"; + // + // motionParameterToolStripMenuItem + // + this.motionParameterToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.axis0ToolStripMenuItem, + this.axis1ToolStripMenuItem, + this.axis2ToolStripMenuItem, + this.axis3ToolStripMenuItem, + this.axis4ToolStripMenuItem}); + this.motionParameterToolStripMenuItem.Name = "motionParameterToolStripMenuItem"; + this.motionParameterToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.motionParameterToolStripMenuItem.Text = "Motion Parameter"; + // + // axis0ToolStripMenuItem + // + this.axis0ToolStripMenuItem.Name = "axis0ToolStripMenuItem"; + this.axis0ToolStripMenuItem.Size = new System.Drawing.Size(116, 22); + this.axis0ToolStripMenuItem.Text = "Axis 0"; + // + // axis1ToolStripMenuItem + // + this.axis1ToolStripMenuItem.Name = "axis1ToolStripMenuItem"; + this.axis1ToolStripMenuItem.Size = new System.Drawing.Size(116, 22); + this.axis1ToolStripMenuItem.Text = "Axis 1"; + // + // axis2ToolStripMenuItem + // + this.axis2ToolStripMenuItem.Name = "axis2ToolStripMenuItem"; + this.axis2ToolStripMenuItem.Size = new System.Drawing.Size(116, 22); + this.axis2ToolStripMenuItem.Text = "Axis 2"; + // + // axis3ToolStripMenuItem + // + this.axis3ToolStripMenuItem.Name = "axis3ToolStripMenuItem"; + this.axis3ToolStripMenuItem.Size = new System.Drawing.Size(116, 22); + this.axis3ToolStripMenuItem.Text = "Axis 3"; + // + // axis4ToolStripMenuItem + // + this.axis4ToolStripMenuItem.Name = "axis4ToolStripMenuItem"; + this.axis4ToolStripMenuItem.Size = new System.Drawing.Size(116, 22); + this.axis4ToolStripMenuItem.Text = "Axis 4"; + // + // processListToolStripMenuItem + // + this.processListToolStripMenuItem.Name = "processListToolStripMenuItem"; + this.processListToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.processListToolStripMenuItem.Text = "Process List"; + this.processListToolStripMenuItem.Click += new System.EventHandler(this.processListToolStripMenuItem_Click); + // + // errorHandleToolStripMenuItem + // + this.errorHandleToolStripMenuItem.Name = "errorHandleToolStripMenuItem"; + this.errorHandleToolStripMenuItem.Size = new System.Drawing.Size(212, 22); + this.errorHandleToolStripMenuItem.Text = "Error Handle"; + this.errorHandleToolStripMenuItem.Click += new System.EventHandler(this.errorHandleToolStripMenuItem_Click); + // + // idxDataGridViewTextBoxColumn + // + this.idxDataGridViewTextBoxColumn.DataPropertyName = "idx"; + this.idxDataGridViewTextBoxColumn.HeaderText = "idx"; + this.idxDataGridViewTextBoxColumn.Name = "idxDataGridViewTextBoxColumn"; + this.idxDataGridViewTextBoxColumn.Width = 5; + // + // stripIdDataGridViewTextBoxColumn2 + // + this.stripIdDataGridViewTextBoxColumn2.DataPropertyName = "StripId"; + this.stripIdDataGridViewTextBoxColumn2.HeaderText = "StripId"; + this.stripIdDataGridViewTextBoxColumn2.Name = "stripIdDataGridViewTextBoxColumn2"; + this.stripIdDataGridViewTextBoxColumn2.Width = 5; + // + // oKDataGridViewTextBoxColumn2 + // + this.oKDataGridViewTextBoxColumn2.DataPropertyName = "OK"; + this.oKDataGridViewTextBoxColumn2.HeaderText = "OK"; + this.oKDataGridViewTextBoxColumn2.Name = "oKDataGridViewTextBoxColumn2"; + this.oKDataGridViewTextBoxColumn2.Width = 5; + // + // nGDataGridViewTextBoxColumn2 + // + this.nGDataGridViewTextBoxColumn2.DataPropertyName = "NG"; + this.nGDataGridViewTextBoxColumn2.HeaderText = "NG"; + this.nGDataGridViewTextBoxColumn2.Name = "nGDataGridViewTextBoxColumn2"; + this.nGDataGridViewTextBoxColumn2.Width = 5; + // + // mISSDataGridViewTextBoxColumn2 + // + this.mISSDataGridViewTextBoxColumn2.DataPropertyName = "MISS"; + this.mISSDataGridViewTextBoxColumn2.HeaderText = "MISS"; + this.mISSDataGridViewTextBoxColumn2.Name = "mISSDataGridViewTextBoxColumn2"; + this.mISSDataGridViewTextBoxColumn2.Width = 5; + // + // fileMapDataGridViewTextBoxColumn + // + this.fileMapDataGridViewTextBoxColumn.DataPropertyName = "FileMap"; + this.fileMapDataGridViewTextBoxColumn.HeaderText = "FileMap"; + this.fileMapDataGridViewTextBoxColumn.Name = "fileMapDataGridViewTextBoxColumn"; + this.fileMapDataGridViewTextBoxColumn.Width = 5; + // + // dataPathDataGridViewTextBoxColumn + // + this.dataPathDataGridViewTextBoxColumn.DataPropertyName = "DataPath"; + this.dataPathDataGridViewTextBoxColumn.HeaderText = "DataPath"; + this.dataPathDataGridViewTextBoxColumn.Name = "dataPathDataGridViewTextBoxColumn"; + this.dataPathDataGridViewTextBoxColumn.Width = 5; + // + // mapOriginDataGridViewTextBoxColumn + // + this.mapOriginDataGridViewTextBoxColumn.DataPropertyName = "MapOrigin"; + this.mapOriginDataGridViewTextBoxColumn.HeaderText = "MapOrigin"; + this.mapOriginDataGridViewTextBoxColumn.Name = "mapOriginDataGridViewTextBoxColumn"; + this.mapOriginDataGridViewTextBoxColumn.Width = 5; + // + // mapArrayDataGridViewTextBoxColumn + // + this.mapArrayDataGridViewTextBoxColumn.DataPropertyName = "MapArray"; + this.mapArrayDataGridViewTextBoxColumn.HeaderText = "MapArray"; + this.mapArrayDataGridViewTextBoxColumn.Name = "mapArrayDataGridViewTextBoxColumn"; + this.mapArrayDataGridViewTextBoxColumn.Width = 5; + // + // testmenuToolStripMenuItem + // + this.testmenuToolStripMenuItem.Name = "testmenuToolStripMenuItem"; + this.testmenuToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.testmenuToolStripMenuItem.Text = "testmenu"; + // + // pLeft + // + this.pLeft.BackColor = System.Drawing.SystemColors.Control; + this.pLeft.Controls.Add(this.pivLeft); + this.pLeft.Controls.Add(this.statusStrip3); + this.pLeft.Controls.Add(this.toolStrip2); + this.pLeft.Controls.Add(this.toolStrip4); + this.pLeft.Controls.Add(this.tabControl2); + this.pLeft.Dock = System.Windows.Forms.DockStyle.Fill; + this.pLeft.Location = new System.Drawing.Point(3, 3); + this.pLeft.Name = "pLeft"; + this.pLeft.Size = new System.Drawing.Size(578, 621); + this.pLeft.TabIndex = 139; + // + // pivLeft + // + this.pivLeft.BackColor = System.Drawing.Color.Magenta; + this.pivLeft.Dock = System.Windows.Forms.DockStyle.Fill; + this.pivLeft.Location = new System.Drawing.Point(0, 31); + this.pivLeft.Name = "pivLeft"; + this.pivLeft.Size = new System.Drawing.Size(578, 343); + this.pivLeft.TabIndex = 143; + this.pivLeft.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pivLeft_MouseClick); + // + // statusStrip3 + // + this.statusStrip3.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.sbConnCamL, + this.toolStripStatusLabel30, + this.sbConnHostL, + this.toolStripStatusLabel34, + this.sbLiveL, + this.toolStripStatusLabel38, + this.sbTrigL, + this.toolStripStatusLabel42, + this.sbMemMapL, + this.toolStripStatusLabel44, + this.sbDetectReelL, + this.toolStripStatusLabel46, + this.sbDetectCVL, + this.toolStripStatusLabel1, + this.sbListenL, + this.toolStripStatusLabel3}); + this.statusStrip3.Location = new System.Drawing.Point(0, 374); + this.statusStrip3.Name = "statusStrip3"; + this.statusStrip3.Size = new System.Drawing.Size(578, 24); + this.statusStrip3.TabIndex = 145; + this.statusStrip3.Text = "statusStrip3"; + // + // sbConnCamL + // + this.sbConnCamL.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbConnCamL.Name = "sbConnCamL"; + this.sbConnCamL.Size = new System.Drawing.Size(23, 19); + this.sbConnCamL.Text = "●"; + // + // toolStripStatusLabel30 + // + this.toolStripStatusLabel30.Name = "toolStripStatusLabel30"; + this.toolStripStatusLabel30.Size = new System.Drawing.Size(48, 19); + this.toolStripStatusLabel30.Text = "Camera"; + // + // sbConnHostL + // + this.sbConnHostL.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbConnHostL.Name = "sbConnHostL"; + this.sbConnHostL.Size = new System.Drawing.Size(23, 19); + this.sbConnHostL.Text = "●"; + // + // toolStripStatusLabel34 + // + this.toolStripStatusLabel34.Name = "toolStripStatusLabel34"; + this.toolStripStatusLabel34.Size = new System.Drawing.Size(57, 19); + this.toolStripStatusLabel34.Text = "Host(WS)"; + // + // sbLiveL + // + this.sbLiveL.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbLiveL.Name = "sbLiveL"; + this.sbLiveL.Size = new System.Drawing.Size(23, 19); + this.sbLiveL.Text = "●"; + // + // toolStripStatusLabel38 + // + this.toolStripStatusLabel38.Name = "toolStripStatusLabel38"; + this.toolStripStatusLabel38.Size = new System.Drawing.Size(28, 19); + this.toolStripStatusLabel38.Text = "Live"; + // + // sbTrigL + // + this.sbTrigL.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbTrigL.Name = "sbTrigL"; + this.sbTrigL.Size = new System.Drawing.Size(23, 19); + this.sbTrigL.Text = "●"; + // + // toolStripStatusLabel42 + // + this.toolStripStatusLabel42.Name = "toolStripStatusLabel42"; + this.toolStripStatusLabel42.Size = new System.Drawing.Size(44, 19); + this.toolStripStatusLabel42.Text = "Trigger"; + // + // sbMemMapL + // + this.sbMemMapL.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbMemMapL.Name = "sbMemMapL"; + this.sbMemMapL.Size = new System.Drawing.Size(23, 19); + this.sbMemMapL.Text = "●"; + // + // toolStripStatusLabel44 + // + this.toolStripStatusLabel44.Name = "toolStripStatusLabel44"; + this.toolStripStatusLabel44.Size = new System.Drawing.Size(59, 19); + this.toolStripStatusLabel44.Text = "Memmap"; + // + // sbDetectReelL + // + this.sbDetectReelL.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbDetectReelL.Name = "sbDetectReelL"; + this.sbDetectReelL.Size = new System.Drawing.Size(23, 19); + this.sbDetectReelL.Text = "●"; + // + // toolStripStatusLabel46 + // + this.toolStripStatusLabel46.Name = "toolStripStatusLabel46"; + this.toolStripStatusLabel46.Size = new System.Drawing.Size(29, 19); + this.toolStripStatusLabel46.Text = "Reel"; + // + // sbDetectCVL + // + this.sbDetectCVL.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbDetectCVL.Name = "sbDetectCVL"; + this.sbDetectCVL.Size = new System.Drawing.Size(23, 19); + this.sbDetectCVL.Text = "●"; + // + // toolStripStatusLabel1 + // + this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; + this.toolStripStatusLabel1.Size = new System.Drawing.Size(35, 19); + this.toolStripStatusLabel1.Text = "Conv"; + // + // sbListenL + // + this.sbListenL.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbListenL.Name = "sbListenL"; + this.sbListenL.Size = new System.Drawing.Size(23, 19); + this.sbListenL.Text = "●"; + // + // toolStripStatusLabel3 + // + this.toolStripStatusLabel3.Name = "toolStripStatusLabel3"; + this.toolStripStatusLabel3.Size = new System.Drawing.Size(38, 19); + this.toolStripStatusLabel3.Text = "Listen"; + // + // toolStrip2 + // + this.toolStrip2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.toolStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripButton9, + this.toolStripButton11, + this.toolStripButton12, + this.toolStripButton2, + this.toolStripButton3, + this.toolStripButton13}); + this.toolStrip2.Location = new System.Drawing.Point(0, 398); + this.toolStrip2.Name = "toolStrip2"; + this.toolStrip2.Size = new System.Drawing.Size(578, 25); + this.toolStrip2.TabIndex = 142; + this.toolStrip2.Text = "toolStrip2"; + // + // toolStripButton9 + // + this.toolStripButton9.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton9.Image"))); + this.toolStripButton9.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton9.Name = "toolStripButton9"; + this.toolStripButton9.Size = new System.Drawing.Size(51, 22); + this.toolStripButton9.Tag = "L"; + this.toolStripButton9.Text = "Save"; + this.toolStripButton9.Click += new System.EventHandler(this.toolStripButton9_Click_2); + // + // toolStripButton11 + // + this.toolStripButton11.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton11.Image"))); + this.toolStripButton11.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton11.Name = "toolStripButton11"; + this.toolStripButton11.Size = new System.Drawing.Size(53, 22); + this.toolStripButton11.Tag = "L"; + this.toolStripButton11.Text = "Load"; + this.toolStripButton11.Click += new System.EventHandler(this.toolStripButton11_Click_1); + // + // toolStripButton12 + // + this.toolStripButton12.BackColor = System.Drawing.Color.Red; + this.toolStripButton12.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton12.Image"))); + this.toolStripButton12.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton12.Name = "toolStripButton12"; + this.toolStripButton12.Size = new System.Drawing.Size(40, 22); + this.toolStripButton12.Tag = "L"; + this.toolStripButton12.Text = "Fit"; + this.toolStripButton12.Visible = false; + this.toolStripButton12.Click += new System.EventHandler(this.toolStripButton12_Click_1); + // + // toolStripButton2 + // + this.toolStripButton2.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton2.BackColor = System.Drawing.Color.Red; + this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image"))); + this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton2.Name = "toolStripButton2"; + this.toolStripButton2.Size = new System.Drawing.Size(43, 22); + this.toolStripButton2.Tag = "L"; + this.toolStripButton2.Text = "ZO"; + this.toolStripButton2.Visible = false; + this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click_1); + // + // toolStripButton3 + // + this.toolStripButton3.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton3.BackColor = System.Drawing.Color.Red; + this.toolStripButton3.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton3.Image"))); + this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton3.Name = "toolStripButton3"; + this.toolStripButton3.Size = new System.Drawing.Size(37, 22); + this.toolStripButton3.Tag = "L"; + this.toolStripButton3.Text = "ZI"; + this.toolStripButton3.Visible = false; + this.toolStripButton3.Click += new System.EventHandler(this.toolStripButton3_Click_1); + // + // toolStripButton13 + // + this.toolStripButton13.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton13.Image"))); + this.toolStripButton13.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton13.Name = "toolStripButton13"; + this.toolStripButton13.Size = new System.Drawing.Size(61, 22); + this.toolStripButton13.Tag = "L"; + this.toolStripButton13.Text = "debug"; + this.toolStripButton13.Click += new System.EventHandler(this.toolStripButton13_Click); + // + // toolStrip4 + // + this.toolStrip4.ImageScalingSize = new System.Drawing.Size(24, 24); + this.toolStrip4.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btTeachL, + this.toolStripSeparator2, + this.toolStripDropDownButton1, + this.toolStripSeparator4, + this.btLiveL, + this.btProcessL, + this.btTrigL}); + this.toolStrip4.Location = new System.Drawing.Point(0, 0); + this.toolStrip4.Name = "toolStrip4"; + this.toolStrip4.Size = new System.Drawing.Size(578, 31); + this.toolStrip4.TabIndex = 144; + this.toolStrip4.Text = "toolStrip4"; + // + // btTeachL + // + this.btTeachL.Image = ((System.Drawing.Image)(resources.GetObject("btTeachL.Image"))); + this.btTeachL.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btTeachL.Name = "btTeachL"; + this.btTeachL.Size = new System.Drawing.Size(66, 28); + this.btTeachL.Tag = "L"; + this.btTeachL.Text = "Teach"; + this.btTeachL.Click += new System.EventHandler(this.toolStripButton6_Click_1); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(6, 31); + // + // toolStripDropDownButton1 + // + this.toolStripDropDownButton1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem7, + this.toolStripMenuItem19, + this.toolStripMenuItem20}); + this.toolStripDropDownButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripDropDownButton1.Image"))); + this.toolStripDropDownButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripDropDownButton1.Name = "toolStripDropDownButton1"; + this.toolStripDropDownButton1.Size = new System.Drawing.Size(115, 28); + this.toolStripDropDownButton1.Text = "Test Function"; + // + // toolStripMenuItem7 + // + this.toolStripMenuItem7.Name = "toolStripMenuItem7"; + this.toolStripMenuItem7.Size = new System.Drawing.Size(135, 22); + this.toolStripMenuItem7.Tag = "L"; + this.toolStripMenuItem7.Text = "Test"; + this.toolStripMenuItem7.Click += new System.EventHandler(this.toolStripMenuItem7_Click); + // + // toolStripMenuItem19 + // + this.toolStripMenuItem19.Name = "toolStripMenuItem19"; + this.toolStripMenuItem19.Size = new System.Drawing.Size(135, 22); + this.toolStripMenuItem19.Tag = "L"; + this.toolStripMenuItem19.Text = "Send"; + this.toolStripMenuItem19.Click += new System.EventHandler(this.toolStripMenuItem19_Click); + // + // toolStripMenuItem20 + // + this.toolStripMenuItem20.Name = "toolStripMenuItem20"; + this.toolStripMenuItem20.Size = new System.Drawing.Size(135, 22); + this.toolStripMenuItem20.Tag = "L"; + this.toolStripMenuItem20.Text = "Send Status"; + this.toolStripMenuItem20.Click += new System.EventHandler(this.toolStripMenuItem20_Click); + // + // toolStripSeparator4 + // + this.toolStripSeparator4.Name = "toolStripSeparator4"; + this.toolStripSeparator4.Size = new System.Drawing.Size(6, 31); + // + // btLiveL + // + this.btLiveL.Image = ((System.Drawing.Image)(resources.GetObject("btLiveL.Image"))); + this.btLiveL.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btLiveL.Name = "btLiveL"; + this.btLiveL.Size = new System.Drawing.Size(56, 28); + this.btLiveL.Text = "Live"; + this.btLiveL.Click += new System.EventHandler(this.toolStripButton21_Click); + // + // btProcessL + // + this.btProcessL.Image = ((System.Drawing.Image)(resources.GetObject("btProcessL.Image"))); + this.btProcessL.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btProcessL.Name = "btProcessL"; + this.btProcessL.Size = new System.Drawing.Size(75, 28); + this.btProcessL.Tag = "L"; + this.btProcessL.Text = "Process"; + this.btProcessL.Click += new System.EventHandler(this.btProcessR_Click); + // + // btTrigL + // + this.btTrigL.Image = ((System.Drawing.Image)(resources.GetObject("btTrigL.Image"))); + this.btTrigL.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btTrigL.Name = "btTrigL"; + this.btTrigL.Size = new System.Drawing.Size(72, 28); + this.btTrigL.Tag = "L"; + this.btTrigL.Text = "Trigger"; + this.btTrigL.Click += new System.EventHandler(this.btTrigR_Click); + // + // tabControl2 + // + this.tabControl2.Controls.Add(this.tabPage3); + this.tabControl2.Controls.Add(this.tabPage4); + this.tabControl2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.tabControl2.Location = new System.Drawing.Point(0, 423); + this.tabControl2.Name = "tabControl2"; + this.tabControl2.SelectedIndex = 0; + this.tabControl2.Size = new System.Drawing.Size(578, 198); + this.tabControl2.TabIndex = 147; + // + // tabPage3 + // + this.tabPage3.Controls.Add(this.rtLeft); + this.tabPage3.Controls.Add(this.tableLayoutPanel3); + this.tabPage3.Location = new System.Drawing.Point(4, 27); + this.tabPage3.Name = "tabPage3"; + this.tabPage3.Padding = new System.Windows.Forms.Padding(3); + this.tabPage3.Size = new System.Drawing.Size(570, 167); + this.tabPage3.TabIndex = 0; + this.tabPage3.Text = "Barcode information"; + this.tabPage3.UseVisualStyleBackColor = true; + // + // rtLeft + // + this.rtLeft.Dock = System.Windows.Forms.DockStyle.Fill; + this.rtLeft.Location = new System.Drawing.Point(3, 3); + this.rtLeft.Name = "rtLeft"; + this.rtLeft.Size = new System.Drawing.Size(564, 76); + this.rtLeft.TabIndex = 0; + this.rtLeft.Text = ""; + // + // tableLayoutPanel3 + // + this.tableLayoutPanel3.ColumnCount = 2; + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel3.Controls.Add(this.groupBox1, 0, 0); + this.tableLayoutPanel3.Controls.Add(this.groupBox5, 1, 0); + this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Bottom; + this.tableLayoutPanel3.Location = new System.Drawing.Point(3, 79); + this.tableLayoutPanel3.Name = "tableLayoutPanel3"; + this.tableLayoutPanel3.RowCount = 1; + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel3.Size = new System.Drawing.Size(564, 85); + this.tableLayoutPanel3.TabIndex = 146; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.lbTimeL); + this.groupBox1.Controls.Add(this.lbGuidL); + this.groupBox1.Controls.Add(this.lbDataL); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox1.Location = new System.Drawing.Point(3, 3); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(276, 79); + this.groupBox1.TabIndex = 140; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Handler Request"; + // + // lbTimeL + // + this.lbTimeL.Dock = System.Windows.Forms.DockStyle.Bottom; + this.lbTimeL.Location = new System.Drawing.Point(3, 22); + this.lbTimeL.Name = "lbTimeL"; + this.lbTimeL.Size = new System.Drawing.Size(270, 18); + this.lbTimeL.TabIndex = 0; + this.lbTimeL.Text = "TIME:"; + // + // lbGuidL + // + this.lbGuidL.Dock = System.Windows.Forms.DockStyle.Bottom; + this.lbGuidL.Location = new System.Drawing.Point(3, 40); + this.lbGuidL.Name = "lbGuidL"; + this.lbGuidL.Size = new System.Drawing.Size(270, 18); + this.lbGuidL.TabIndex = 0; + this.lbGuidL.Text = "GUID : "; + // + // lbDataL + // + this.lbDataL.Dock = System.Windows.Forms.DockStyle.Bottom; + this.lbDataL.Location = new System.Drawing.Point(3, 58); + this.lbDataL.Name = "lbDataL"; + this.lbDataL.Size = new System.Drawing.Size(270, 18); + this.lbDataL.TabIndex = 1; + this.lbDataL.Text = "DATA:"; + // + // groupBox5 + // + this.groupBox5.Controls.Add(this.label1); + this.groupBox5.Controls.Add(this.label2); + this.groupBox5.Controls.Add(this.label3); + this.groupBox5.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox5.Location = new System.Drawing.Point(285, 3); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.Size = new System.Drawing.Size(276, 79); + this.groupBox5.TabIndex = 140; + this.groupBox5.TabStop = false; + this.groupBox5.Text = "Vision Response"; + // + // label1 + // + this.label1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.label1.Location = new System.Drawing.Point(3, 22); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(270, 18); + this.label1.TabIndex = 0; + this.label1.Text = "TIME:"; + // + // label2 + // + this.label2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.label2.Location = new System.Drawing.Point(3, 40); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(270, 18); + this.label2.TabIndex = 0; + this.label2.Text = "GUID : "; + // + // label3 + // + this.label3.Dock = System.Windows.Forms.DockStyle.Bottom; + this.label3.Location = new System.Drawing.Point(3, 58); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(270, 18); + this.label3.TabIndex = 1; + this.label3.Text = "--"; + // + // tabPage4 + // + this.tabPage4.Location = new System.Drawing.Point(4, 27); + this.tabPage4.Name = "tabPage4"; + this.tabPage4.Padding = new System.Windows.Forms.Padding(3); + this.tabPage4.Size = new System.Drawing.Size(570, 167); + this.tabPage4.TabIndex = 1; + this.tabPage4.Text = "Send lOg"; + this.tabPage4.UseVisualStyleBackColor = true; + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.sbLicense, + this.toolStripStatusLabel8, + this.sbStream, + this.toolStripStatusLabel7, + this.sbConnState, + this.toolStripStatusLabel6, + this.lbproctimel, + this.lbproctimer}); + this.statusStrip1.Location = new System.Drawing.Point(1, 696); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(1182, 24); + this.statusStrip1.TabIndex = 140; + this.statusStrip1.Text = "statusStrip1"; + // + // sbLicense + // + this.sbLicense.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbLicense.Name = "sbLicense"; + this.sbLicense.Size = new System.Drawing.Size(23, 19); + this.sbLicense.Text = "●"; + // + // toolStripStatusLabel8 + // + this.toolStripStatusLabel8.Name = "toolStripStatusLabel8"; + this.toolStripStatusLabel8.Size = new System.Drawing.Size(46, 19); + this.toolStripStatusLabel8.Text = "License"; + // + // sbStream + // + this.sbStream.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbStream.Name = "sbStream"; + this.sbStream.Size = new System.Drawing.Size(23, 19); + this.sbStream.Text = "●"; + // + // toolStripStatusLabel7 + // + this.toolStripStatusLabel7.Name = "toolStripStatusLabel7"; + this.toolStripStatusLabel7.Size = new System.Drawing.Size(44, 19); + this.toolStripStatusLabel7.Text = "Stream"; + // + // sbConnState + // + this.sbConnState.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbConnState.Name = "sbConnState"; + this.sbConnState.Size = new System.Drawing.Size(23, 19); + this.sbConnState.Text = "●"; + // + // toolStripStatusLabel6 + // + this.toolStripStatusLabel6.Name = "toolStripStatusLabel6"; + this.toolStripStatusLabel6.Size = new System.Drawing.Size(36, 19); + this.toolStripStatusLabel6.Text = "Conn"; + // + // lbproctimel + // + this.lbproctimel.Name = "lbproctimel"; + this.lbproctimel.Size = new System.Drawing.Size(91, 19); + this.lbproctimel.Text = "Processing time"; + // + // lbproctimer + // + this.lbproctimer.Name = "lbproctimer"; + this.lbproctimer.Size = new System.Drawing.Size(91, 19); + this.lbproctimer.Text = "Processing time"; + // + // toolStrip1 + // + this.toolStrip1.ImageScalingSize = new System.Drawing.Size(24, 24); + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripButton7, + this.toolStripButton4, + this.toolStripButton5}); + this.toolStrip1.Location = new System.Drawing.Point(1, 1); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(1182, 31); + this.toolStrip1.TabIndex = 141; + this.toolStrip1.Text = "toolStrip1"; + // + // toolStripButton7 + // + this.toolStripButton7.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton7.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton7.Image"))); + this.toolStripButton7.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton7.Name = "toolStripButton7"; + this.toolStripButton7.Size = new System.Drawing.Size(53, 28); + this.toolStripButton7.Text = "Exit"; + this.toolStripButton7.Click += new System.EventHandler(this.toolStripButton7_Click); + // + // toolStripButton4 + // + this.toolStripButton4.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton4.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton4.Image"))); + this.toolStripButton4.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton4.Name = "toolStripButton4"; + this.toolStripButton4.Size = new System.Drawing.Size(72, 28); + this.toolStripButton4.Text = "Setting"; + this.toolStripButton4.Click += new System.EventHandler(this.toolStripButton4_Click); + // + // toolStripButton5 + // + this.toolStripButton5.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton5.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton5.Image"))); + this.toolStripButton5.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton5.Name = "toolStripButton5"; + this.toolStripButton5.Size = new System.Drawing.Size(100, 28); + this.toolStripButton5.Text = "Open Folder"; + this.toolStripButton5.Click += new System.EventHandler(this.toolStripButton5_Click); + // + // cmMini + // + this.cmMini.Font = new System.Drawing.Font("Cambria", 10F, System.Drawing.FontStyle.Bold); + this.cmMini.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem81, + this.toolStripMenuItem3, + this.exitToolStripMenuItem}); + this.cmMini.Name = "cmVision"; + this.cmMini.Size = new System.Drawing.Size(114, 54); + // + // toolStripMenuItem81 + // + this.toolStripMenuItem81.Name = "toolStripMenuItem81"; + this.toolStripMenuItem81.Size = new System.Drawing.Size(113, 22); + this.toolStripMenuItem81.Text = "Show"; + // + // toolStripMenuItem3 + // + this.toolStripMenuItem3.Name = "toolStripMenuItem3"; + this.toolStripMenuItem3.Size = new System.Drawing.Size(110, 6); + // + // exitToolStripMenuItem + // + this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; + this.exitToolStripMenuItem.Size = new System.Drawing.Size(113, 22); + this.exitToolStripMenuItem.Text = "Exit"; + this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Location = new System.Drawing.Point(1, 32); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(1182, 664); + this.tabControl1.TabIndex = 143; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.tableLayoutPanel1); + this.tabPage1.Location = new System.Drawing.Point(4, 27); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(1174, 633); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Camera"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 2; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Controls.Add(this.pLeft, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.pRight, 1, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 3); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 1; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1168, 627); + this.tableLayoutPanel1.TabIndex = 0; + // + // pRight + // + this.pRight.BackColor = System.Drawing.SystemColors.Control; + this.pRight.Controls.Add(this.pIvRight); + this.pRight.Controls.Add(this.statusStrip2); + this.pRight.Controls.Add(this.toolStrip3); + this.pRight.Controls.Add(this.toolStrip5); + this.pRight.Controls.Add(this.tabControl3); + this.pRight.Dock = System.Windows.Forms.DockStyle.Fill; + this.pRight.Location = new System.Drawing.Point(587, 3); + this.pRight.Name = "pRight"; + this.pRight.Size = new System.Drawing.Size(578, 621); + this.pRight.TabIndex = 139; + // + // pIvRight + // + this.pIvRight.BackColor = System.Drawing.Color.Magenta; + this.pIvRight.Dock = System.Windows.Forms.DockStyle.Fill; + this.pIvRight.Location = new System.Drawing.Point(0, 31); + this.pIvRight.Name = "pIvRight"; + this.pIvRight.Size = new System.Drawing.Size(578, 343); + this.pIvRight.TabIndex = 143; + this.pIvRight.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pIvRight_MouseClick); + // + // statusStrip2 + // + this.statusStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.sbConnCamR, + this.toolStripStatusLabel12, + this.sbConnHostR, + this.toolStripStatusLabel16, + this.sbLiveR, + this.toolStripStatusLabel20, + this.sbTrigR, + this.toolStripStatusLabel24, + this.sbMemMapR, + this.toolStripStatusLabel26, + this.sbDetectReelR, + this.toolStripStatusLabel28, + this.sbDetectCVR, + this.toolStripStatusLabel2, + this.sbListenR, + this.toolStripStatusLabel4}); + this.statusStrip2.Location = new System.Drawing.Point(0, 374); + this.statusStrip2.Name = "statusStrip2"; + this.statusStrip2.Size = new System.Drawing.Size(578, 24); + this.statusStrip2.TabIndex = 145; + this.statusStrip2.Text = "statusStrip2"; + // + // sbConnCamR + // + this.sbConnCamR.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbConnCamR.Name = "sbConnCamR"; + this.sbConnCamR.Size = new System.Drawing.Size(23, 19); + this.sbConnCamR.Text = "●"; + // + // toolStripStatusLabel12 + // + this.toolStripStatusLabel12.Name = "toolStripStatusLabel12"; + this.toolStripStatusLabel12.Size = new System.Drawing.Size(48, 19); + this.toolStripStatusLabel12.Text = "Camera"; + // + // sbConnHostR + // + this.sbConnHostR.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbConnHostR.Name = "sbConnHostR"; + this.sbConnHostR.Size = new System.Drawing.Size(23, 19); + this.sbConnHostR.Text = "●"; + // + // toolStripStatusLabel16 + // + this.toolStripStatusLabel16.Name = "toolStripStatusLabel16"; + this.toolStripStatusLabel16.Size = new System.Drawing.Size(57, 19); + this.toolStripStatusLabel16.Text = "Host(WS)"; + // + // sbLiveR + // + this.sbLiveR.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbLiveR.Name = "sbLiveR"; + this.sbLiveR.Size = new System.Drawing.Size(23, 19); + this.sbLiveR.Text = "●"; + // + // toolStripStatusLabel20 + // + this.toolStripStatusLabel20.Name = "toolStripStatusLabel20"; + this.toolStripStatusLabel20.Size = new System.Drawing.Size(28, 19); + this.toolStripStatusLabel20.Text = "Live"; + // + // sbTrigR + // + this.sbTrigR.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbTrigR.Name = "sbTrigR"; + this.sbTrigR.Size = new System.Drawing.Size(23, 19); + this.sbTrigR.Text = "●"; + // + // toolStripStatusLabel24 + // + this.toolStripStatusLabel24.Name = "toolStripStatusLabel24"; + this.toolStripStatusLabel24.Size = new System.Drawing.Size(44, 19); + this.toolStripStatusLabel24.Text = "Trigger"; + // + // sbMemMapR + // + this.sbMemMapR.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbMemMapR.Name = "sbMemMapR"; + this.sbMemMapR.Size = new System.Drawing.Size(23, 19); + this.sbMemMapR.Text = "●"; + // + // toolStripStatusLabel26 + // + this.toolStripStatusLabel26.Name = "toolStripStatusLabel26"; + this.toolStripStatusLabel26.Size = new System.Drawing.Size(59, 19); + this.toolStripStatusLabel26.Text = "Memmap"; + // + // sbDetectReelR + // + this.sbDetectReelR.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbDetectReelR.Name = "sbDetectReelR"; + this.sbDetectReelR.Size = new System.Drawing.Size(23, 19); + this.sbDetectReelR.Text = "●"; + // + // toolStripStatusLabel28 + // + this.toolStripStatusLabel28.Name = "toolStripStatusLabel28"; + this.toolStripStatusLabel28.Size = new System.Drawing.Size(29, 19); + this.toolStripStatusLabel28.Text = "Reel"; + // + // sbDetectCVR + // + this.sbDetectCVR.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbDetectCVR.Name = "sbDetectCVR"; + this.sbDetectCVR.Size = new System.Drawing.Size(23, 19); + this.sbDetectCVR.Text = "●"; + // + // toolStripStatusLabel2 + // + this.toolStripStatusLabel2.Name = "toolStripStatusLabel2"; + this.toolStripStatusLabel2.Size = new System.Drawing.Size(35, 19); + this.toolStripStatusLabel2.Text = "Conv"; + // + // sbListenR + // + this.sbListenR.Font = new System.Drawing.Font("맑은 고딕", 10F); + this.sbListenR.Name = "sbListenR"; + this.sbListenR.Size = new System.Drawing.Size(23, 19); + this.sbListenR.Text = "●"; + // + // toolStripStatusLabel4 + // + this.toolStripStatusLabel4.Name = "toolStripStatusLabel4"; + this.toolStripStatusLabel4.Size = new System.Drawing.Size(38, 19); + this.toolStripStatusLabel4.Text = "Listen"; + // + // toolStrip3 + // + this.toolStrip3.Dock = System.Windows.Forms.DockStyle.Bottom; + this.toolStrip3.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripButton14, + this.toolStripButton15, + this.toolStripButton16, + this.toolStripButton17, + this.toolStripButton18, + this.toolStripButton19}); + this.toolStrip3.Location = new System.Drawing.Point(0, 398); + this.toolStrip3.Name = "toolStrip3"; + this.toolStrip3.Size = new System.Drawing.Size(578, 25); + this.toolStrip3.TabIndex = 142; + this.toolStrip3.Text = "toolStrip2"; + // + // toolStripButton14 + // + this.toolStripButton14.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton14.Image"))); + this.toolStripButton14.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton14.Name = "toolStripButton14"; + this.toolStripButton14.Size = new System.Drawing.Size(51, 22); + this.toolStripButton14.Tag = "R"; + this.toolStripButton14.Text = "Save"; + this.toolStripButton14.Click += new System.EventHandler(this.toolStripButton9_Click_2); + // + // toolStripButton15 + // + this.toolStripButton15.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton15.Image"))); + this.toolStripButton15.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton15.Name = "toolStripButton15"; + this.toolStripButton15.Size = new System.Drawing.Size(53, 22); + this.toolStripButton15.Tag = "R"; + this.toolStripButton15.Text = "Load"; + this.toolStripButton15.Click += new System.EventHandler(this.toolStripButton11_Click_1); + // + // toolStripButton16 + // + this.toolStripButton16.BackColor = System.Drawing.Color.Red; + this.toolStripButton16.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton16.Image"))); + this.toolStripButton16.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton16.Name = "toolStripButton16"; + this.toolStripButton16.Size = new System.Drawing.Size(40, 22); + this.toolStripButton16.Tag = "R"; + this.toolStripButton16.Text = "Fit"; + this.toolStripButton16.Visible = false; + this.toolStripButton16.Click += new System.EventHandler(this.toolStripButton12_Click_1); + // + // toolStripButton17 + // + this.toolStripButton17.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton17.BackColor = System.Drawing.Color.Red; + this.toolStripButton17.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton17.Image"))); + this.toolStripButton17.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton17.Name = "toolStripButton17"; + this.toolStripButton17.Size = new System.Drawing.Size(43, 22); + this.toolStripButton17.Text = "ZO"; + this.toolStripButton17.Visible = false; + this.toolStripButton17.Click += new System.EventHandler(this.toolStripButton2_Click_1); + // + // toolStripButton18 + // + this.toolStripButton18.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; + this.toolStripButton18.BackColor = System.Drawing.Color.Red; + this.toolStripButton18.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton18.Image"))); + this.toolStripButton18.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton18.Name = "toolStripButton18"; + this.toolStripButton18.Size = new System.Drawing.Size(37, 22); + this.toolStripButton18.Text = "ZI"; + this.toolStripButton18.Visible = false; + this.toolStripButton18.Click += new System.EventHandler(this.toolStripButton3_Click_1); + // + // toolStripButton19 + // + this.toolStripButton19.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton19.Image"))); + this.toolStripButton19.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton19.Name = "toolStripButton19"; + this.toolStripButton19.Size = new System.Drawing.Size(61, 22); + this.toolStripButton19.Tag = "R"; + this.toolStripButton19.Text = "debug"; + this.toolStripButton19.Click += new System.EventHandler(this.toolStripButton13_Click); + // + // toolStrip5 + // + this.toolStrip5.ImageScalingSize = new System.Drawing.Size(24, 24); + this.toolStrip5.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btTeachR, + this.toolStripSeparator5, + this.toolStripDropDownButton2, + this.toolStripSeparator6, + this.btLiveR, + this.btProcessR, + this.btTrigR}); + this.toolStrip5.Location = new System.Drawing.Point(0, 0); + this.toolStrip5.Name = "toolStrip5"; + this.toolStrip5.Size = new System.Drawing.Size(578, 31); + this.toolStrip5.TabIndex = 144; + this.toolStrip5.Tag = "R"; + this.toolStrip5.Text = "toolStrip5"; + // + // btTeachR + // + this.btTeachR.Image = ((System.Drawing.Image)(resources.GetObject("btTeachR.Image"))); + this.btTeachR.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btTeachR.Name = "btTeachR"; + this.btTeachR.Size = new System.Drawing.Size(66, 28); + this.btTeachR.Tag = "R"; + this.btTeachR.Text = "Teach"; + this.btTeachR.Click += new System.EventHandler(this.toolStripButton6_Click_1); + // + // toolStripSeparator5 + // + this.toolStripSeparator5.Name = "toolStripSeparator5"; + this.toolStripSeparator5.Size = new System.Drawing.Size(6, 31); + // + // toolStripDropDownButton2 + // + this.toolStripDropDownButton2.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem21, + this.toolStripMenuItem22, + this.toolStripMenuItem23}); + this.toolStripDropDownButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripDropDownButton2.Image"))); + this.toolStripDropDownButton2.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripDropDownButton2.Name = "toolStripDropDownButton2"; + this.toolStripDropDownButton2.Size = new System.Drawing.Size(115, 28); + this.toolStripDropDownButton2.Text = "Test Function"; + // + // toolStripMenuItem21 + // + this.toolStripMenuItem21.Name = "toolStripMenuItem21"; + this.toolStripMenuItem21.Size = new System.Drawing.Size(135, 22); + this.toolStripMenuItem21.Tag = "R"; + this.toolStripMenuItem21.Text = "Test"; + this.toolStripMenuItem21.Click += new System.EventHandler(this.toolStripMenuItem7_Click); + // + // toolStripMenuItem22 + // + this.toolStripMenuItem22.Name = "toolStripMenuItem22"; + this.toolStripMenuItem22.Size = new System.Drawing.Size(135, 22); + this.toolStripMenuItem22.Tag = "R"; + this.toolStripMenuItem22.Text = "Send"; + this.toolStripMenuItem22.Click += new System.EventHandler(this.toolStripMenuItem19_Click); + // + // toolStripMenuItem23 + // + this.toolStripMenuItem23.Name = "toolStripMenuItem23"; + this.toolStripMenuItem23.Size = new System.Drawing.Size(135, 22); + this.toolStripMenuItem23.Tag = "R"; + this.toolStripMenuItem23.Text = "Send Status"; + this.toolStripMenuItem23.Click += new System.EventHandler(this.toolStripMenuItem20_Click); + // + // toolStripSeparator6 + // + this.toolStripSeparator6.Name = "toolStripSeparator6"; + this.toolStripSeparator6.Size = new System.Drawing.Size(6, 31); + // + // btLiveR + // + this.btLiveR.Image = ((System.Drawing.Image)(resources.GetObject("btLiveR.Image"))); + this.btLiveR.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btLiveR.Name = "btLiveR"; + this.btLiveR.Size = new System.Drawing.Size(56, 28); + this.btLiveR.Text = "Live"; + this.btLiveR.Click += new System.EventHandler(this.btLiveR_Click); + // + // btProcessR + // + this.btProcessR.Image = ((System.Drawing.Image)(resources.GetObject("btProcessR.Image"))); + this.btProcessR.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btProcessR.Name = "btProcessR"; + this.btProcessR.Size = new System.Drawing.Size(75, 28); + this.btProcessR.Tag = "R"; + this.btProcessR.Text = "Process"; + this.btProcessR.Click += new System.EventHandler(this.btProcessR_Click); + // + // btTrigR + // + this.btTrigR.Image = ((System.Drawing.Image)(resources.GetObject("btTrigR.Image"))); + this.btTrigR.ImageTransparentColor = System.Drawing.Color.Magenta; + this.btTrigR.Name = "btTrigR"; + this.btTrigR.Size = new System.Drawing.Size(72, 28); + this.btTrigR.Tag = "R"; + this.btTrigR.Text = "Trigger"; + this.btTrigR.Click += new System.EventHandler(this.btTrigR_Click); + // + // tabControl3 + // + this.tabControl3.Controls.Add(this.tabPage5); + this.tabControl3.Controls.Add(this.tabPage6); + this.tabControl3.Dock = System.Windows.Forms.DockStyle.Bottom; + this.tabControl3.Location = new System.Drawing.Point(0, 423); + this.tabControl3.Name = "tabControl3"; + this.tabControl3.SelectedIndex = 0; + this.tabControl3.Size = new System.Drawing.Size(578, 198); + this.tabControl3.TabIndex = 148; + // + // tabPage5 + // + this.tabPage5.Controls.Add(this.rtRight); + this.tabPage5.Controls.Add(this.tableLayoutPanel4); + this.tabPage5.Location = new System.Drawing.Point(4, 27); + this.tabPage5.Name = "tabPage5"; + this.tabPage5.Padding = new System.Windows.Forms.Padding(3); + this.tabPage5.Size = new System.Drawing.Size(570, 167); + this.tabPage5.TabIndex = 0; + this.tabPage5.Text = "Barcode information"; + this.tabPage5.UseVisualStyleBackColor = true; + // + // rtRight + // + this.rtRight.Dock = System.Windows.Forms.DockStyle.Fill; + this.rtRight.Location = new System.Drawing.Point(3, 3); + this.rtRight.Name = "rtRight"; + this.rtRight.Size = new System.Drawing.Size(564, 76); + this.rtRight.TabIndex = 0; + this.rtRight.Text = ""; + // + // tableLayoutPanel4 + // + this.tableLayoutPanel4.ColumnCount = 2; + this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel4.Controls.Add(this.groupBox7, 1, 0); + this.tableLayoutPanel4.Controls.Add(this.groupBox4, 0, 0); + this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Bottom; + this.tableLayoutPanel4.Location = new System.Drawing.Point(3, 79); + this.tableLayoutPanel4.Name = "tableLayoutPanel4"; + this.tableLayoutPanel4.RowCount = 1; + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel4.Size = new System.Drawing.Size(564, 85); + this.tableLayoutPanel4.TabIndex = 147; + // + // groupBox7 + // + this.groupBox7.Controls.Add(this.label8); + this.groupBox7.Controls.Add(this.label9); + this.groupBox7.Controls.Add(this.label10); + this.groupBox7.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox7.Location = new System.Drawing.Point(285, 3); + this.groupBox7.Name = "groupBox7"; + this.groupBox7.Size = new System.Drawing.Size(276, 79); + this.groupBox7.TabIndex = 140; + this.groupBox7.TabStop = false; + this.groupBox7.Text = "Vision Response"; + // + // label8 + // + this.label8.Dock = System.Windows.Forms.DockStyle.Bottom; + this.label8.Location = new System.Drawing.Point(3, 22); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(270, 18); + this.label8.TabIndex = 0; + this.label8.Text = "TIME:"; + // + // label9 + // + this.label9.Dock = System.Windows.Forms.DockStyle.Bottom; + this.label9.Location = new System.Drawing.Point(3, 40); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(270, 18); + this.label9.TabIndex = 0; + this.label9.Text = "GUID : "; + // + // label10 + // + this.label10.Dock = System.Windows.Forms.DockStyle.Bottom; + this.label10.Location = new System.Drawing.Point(3, 58); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(270, 18); + this.label10.TabIndex = 1; + this.label10.Text = "--"; + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.lbTimeR); + this.groupBox4.Controls.Add(this.lbGuidR); + this.groupBox4.Controls.Add(this.lbDataR); + this.groupBox4.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox4.Location = new System.Drawing.Point(3, 3); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Size = new System.Drawing.Size(276, 79); + this.groupBox4.TabIndex = 140; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "Handler Request"; + // + // lbTimeR + // + this.lbTimeR.Dock = System.Windows.Forms.DockStyle.Bottom; + this.lbTimeR.Location = new System.Drawing.Point(3, 22); + this.lbTimeR.Name = "lbTimeR"; + this.lbTimeR.Size = new System.Drawing.Size(270, 18); + this.lbTimeR.TabIndex = 0; + this.lbTimeR.Text = "TIME:"; + // + // lbGuidR + // + this.lbGuidR.Dock = System.Windows.Forms.DockStyle.Bottom; + this.lbGuidR.Location = new System.Drawing.Point(3, 40); + this.lbGuidR.Name = "lbGuidR"; + this.lbGuidR.Size = new System.Drawing.Size(270, 18); + this.lbGuidR.TabIndex = 0; + this.lbGuidR.Text = "GUID : "; + // + // lbDataR + // + this.lbDataR.Dock = System.Windows.Forms.DockStyle.Bottom; + this.lbDataR.Location = new System.Drawing.Point(3, 58); + this.lbDataR.Name = "lbDataR"; + this.lbDataR.Size = new System.Drawing.Size(270, 18); + this.lbDataR.TabIndex = 1; + this.lbDataR.Text = "DATA:"; + // + // tabPage6 + // + this.tabPage6.Location = new System.Drawing.Point(4, 27); + this.tabPage6.Name = "tabPage6"; + this.tabPage6.Padding = new System.Windows.Forms.Padding(3); + this.tabPage6.Size = new System.Drawing.Size(570, 167); + this.tabPage6.TabIndex = 1; + this.tabPage6.Text = "Send lOg"; + this.tabPage6.UseVisualStyleBackColor = true; + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.tableLayoutPanel2); + this.tabPage2.Location = new System.Drawing.Point(4, 27); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(1174, 633); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Log"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.ColumnCount = 2; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 3); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 1; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(1168, 627); + this.tableLayoutPanel2.TabIndex = 137; + // + // bwLeft + // + this.bwLeft.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bwLeft_DoWork); + // + // bwRight + // + this.bwRight.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bwRight_DoWork); + // + // bwConn + // + this.bwConn.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bwConn_DoWork); + // + // fMain + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.WhiteSmoke; + this.ClientSize = new System.Drawing.Size(1184, 721); + this.Controls.Add(this.tabControl1); + this.Controls.Add(this.toolStrip1); + this.Controls.Add(this.statusStrip1); + this.DoubleBuffered = true; + this.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.KeyPreview = true; + this.Name = "fMain"; + this.Padding = new System.Windows.Forms.Padding(1); + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Form1"; + this.Load += new System.EventHandler(this.@__Load); + this.cmOpenDir.ResumeLayout(false); + this.cmGrid.ResumeLayout(false); + this.cmDebug.ResumeLayout(false); + this.pLeft.ResumeLayout(false); + this.pLeft.PerformLayout(); + this.statusStrip3.ResumeLayout(false); + this.statusStrip3.PerformLayout(); + this.toolStrip2.ResumeLayout(false); + this.toolStrip2.PerformLayout(); + this.toolStrip4.ResumeLayout(false); + this.toolStrip4.PerformLayout(); + this.tabControl2.ResumeLayout(false); + this.tabPage3.ResumeLayout(false); + this.tableLayoutPanel3.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox5.ResumeLayout(false); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.cmMini.ResumeLayout(false); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tableLayoutPanel1.ResumeLayout(false); + this.pRight.ResumeLayout(false); + this.pRight.PerformLayout(); + this.statusStrip2.ResumeLayout(false); + this.statusStrip2.PerformLayout(); + this.toolStrip3.ResumeLayout(false); + this.toolStrip3.PerformLayout(); + this.toolStrip5.ResumeLayout(false); + this.toolStrip5.PerformLayout(); + this.tabControl3.ResumeLayout(false); + this.tabPage5.ResumeLayout(false); + this.tableLayoutPanel4.ResumeLayout(false); + this.groupBox7.ResumeLayout(false); + this.groupBox4.ResumeLayout(false); + this.tabPage2.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Timer tmDisplay; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.ToolStripMenuItem systemParameterToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem4; + private System.Windows.Forms.ToolStripMenuItem demoRunToolStripMenuItem; + private System.Windows.Forms.ContextMenuStrip cmDebug; + private System.Windows.Forms.ContextMenuStrip cmOpenDir; + private System.Windows.Forms.ToolStripMenuItem 맵데이터보기ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 저장폴더열기ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem messageToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem errorToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem informationToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem attentionToolStripMenuItem; + private System.Windows.Forms.DataGridViewTextBoxColumn idxDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn stripIdDataGridViewTextBoxColumn2; + private System.Windows.Forms.DataGridViewTextBoxColumn oKDataGridViewTextBoxColumn2; + private System.Windows.Forms.DataGridViewTextBoxColumn nGDataGridViewTextBoxColumn2; + private System.Windows.Forms.DataGridViewTextBoxColumn mISSDataGridViewTextBoxColumn2; + private System.Windows.Forms.DataGridViewTextBoxColumn fileMapDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn dataPathDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn mapOriginDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn mapArrayDataGridViewTextBoxColumn; + private System.Windows.Forms.ToolStripMenuItem setHomeSetToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem saveDataToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 캡처ToolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem 저장ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 이미지ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 수량ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem testmenuToolStripMenuItem; + private System.Windows.Forms.ContextMenuStrip cmGrid; + private System.Windows.Forms.ToolStripMenuItem sendSPNToolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem sendBinDataToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem sendSPNRejectToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem sendBinDataRejectToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2; + private System.Windows.Forms.ToolStripMenuItem setNewToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem setBlinkToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem setRejectToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem setNormalToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem setErrorToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem displayBinDataToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem5; + private System.Windows.Forms.ToolStripMenuItem sMResetToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem sMHistoryToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem unitHistoryToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem frontToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem rearToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem exceptionTestToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem sendSPN2dAPCToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem sendSPNRejectAPCToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem8; + private System.Windows.Forms.ToolStripMenuItem motionEmulatorToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem dIOEmulatorToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem dIOMonitorToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem refreshControklToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem sceanToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem normalToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem motorHomeToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 작업선택화면ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem unlaoderToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem stateReadyToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem setPortNoToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem6; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem10; + private System.Windows.Forms.ToolStripMenuItem setSizeToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem11; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem12; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem13; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem14; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem15; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem16; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem17; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem18; + private System.Windows.Forms.ToolStripMenuItem clearZoneItemToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem historyToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem testToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem clearToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem addInputZoneToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem addBCDZoneToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem addPLCZoneToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem menusToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem sampleToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem debugModeToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem addJobItemToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem addSidItemToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem addBcdItemToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem detectCountToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem countToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem screenToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem jOBStartToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem motionParameterToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem axis0ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem axis1ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem axis2ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem axis3ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem axis4ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem clearToolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem processListToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem debugWindowToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem errorHandleToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem sAPSID목록보기ToolStripMenuItem; + private System.Windows.Forms.Panel pLeft; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label lbGuidL; + private System.Windows.Forms.Label lbTimeL; + private System.Windows.Forms.ToolStripButton toolStripButton4; + private System.Windows.Forms.ToolStripButton toolStripButton5; + private System.Windows.Forms.ContextMenuStrip cmMini; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem81; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3; + private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; + private System.Windows.Forms.ToolStripButton toolStripButton7; + private System.Windows.Forms.RichTextBox rtLeft; + private System.Windows.Forms.ToolStripStatusLabel sbStream; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel7; + private System.Windows.Forms.ToolStripStatusLabel sbLicense; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel8; + private System.Windows.Forms.ToolStrip toolStrip2; + private System.Windows.Forms.ToolStripButton toolStripButton9; + private System.Windows.Forms.ToolStripButton toolStripButton11; + private System.Windows.Forms.ToolStripButton toolStripButton12; + private System.Windows.Forms.ToolStripButton toolStripButton2; + private System.Windows.Forms.ToolStripButton toolStripButton3; + private System.Windows.Forms.ToolStripButton toolStripButton13; + private System.Windows.Forms.Panel pivLeft; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel pRight; + private System.Windows.Forms.Panel pIvRight; + private System.Windows.Forms.ToolStrip toolStrip3; + private System.Windows.Forms.ToolStripButton toolStripButton14; + private System.Windows.Forms.ToolStripButton toolStripButton15; + private System.Windows.Forms.ToolStripButton toolStripButton16; + private System.Windows.Forms.ToolStripButton toolStripButton17; + private System.Windows.Forms.ToolStripButton toolStripButton18; + private System.Windows.Forms.ToolStripButton toolStripButton19; + private System.Windows.Forms.RichTextBox rtRight; + private System.Windows.Forms.GroupBox groupBox4; + private System.Windows.Forms.Label lbTimeR; + private System.Windows.Forms.Label lbGuidR; + private System.Windows.Forms.ToolStrip toolStrip4; + private System.Windows.Forms.ToolStripButton btTeachL; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton1; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem7; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem19; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem20; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; + private System.Windows.Forms.ToolStripButton btLiveL; + private System.Windows.Forms.ToolStripButton btTrigL; + private System.Windows.Forms.ToolStripButton btProcessL; + private System.Windows.Forms.ToolStrip toolStrip5; + private System.Windows.Forms.ToolStripButton btTeachR; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator5; + private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton2; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem21; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem22; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem23; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; + private System.Windows.Forms.ToolStripButton btLiveR; + private System.Windows.Forms.ToolStripButton btTrigR; + private System.Windows.Forms.ToolStripButton btProcessR; + private System.ComponentModel.BackgroundWorker bwLeft; + private System.ComponentModel.BackgroundWorker bwRight; + private System.Windows.Forms.StatusStrip statusStrip3; + private System.Windows.Forms.ToolStripStatusLabel sbConnCamL; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel30; + private System.Windows.Forms.ToolStripStatusLabel sbConnHostL; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel34; + private System.Windows.Forms.ToolStripStatusLabel sbLiveL; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel38; + private System.Windows.Forms.ToolStripStatusLabel sbTrigL; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel42; + private System.Windows.Forms.ToolStripStatusLabel sbMemMapL; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel44; + private System.Windows.Forms.ToolStripStatusLabel sbDetectReelL; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel46; + private System.Windows.Forms.StatusStrip statusStrip2; + private System.Windows.Forms.ToolStripStatusLabel sbConnCamR; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel12; + private System.Windows.Forms.ToolStripStatusLabel sbConnHostR; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel16; + private System.Windows.Forms.ToolStripStatusLabel sbLiveR; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel20; + private System.Windows.Forms.ToolStripStatusLabel sbTrigR; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel24; + private System.Windows.Forms.ToolStripStatusLabel sbMemMapR; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel26; + private System.Windows.Forms.ToolStripStatusLabel sbDetectReelR; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel28; + private System.Windows.Forms.ToolStripStatusLabel sbDetectCVL; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; + private System.Windows.Forms.ToolStripStatusLabel sbDetectCVR; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel2; + private System.Windows.Forms.ToolStripStatusLabel sbListenL; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel3; + private System.Windows.Forms.ToolStripStatusLabel sbListenR; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel4; + private System.ComponentModel.BackgroundWorker bwConn; + private System.Windows.Forms.ToolStripStatusLabel sbConnState; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel6; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private System.Windows.Forms.Label lbDataL; + private System.Windows.Forms.Label lbDataR; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; + private System.Windows.Forms.GroupBox groupBox5; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4; + private System.Windows.Forms.GroupBox groupBox7; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.TabControl tabControl2; + private System.Windows.Forms.TabPage tabPage3; + private System.Windows.Forms.TabPage tabPage4; + private System.Windows.Forms.TabControl tabControl3; + private System.Windows.Forms.TabPage tabPage5; + private System.Windows.Forms.TabPage tabPage6; + private System.Windows.Forms.ToolStripStatusLabel lbproctimel; + private System.Windows.Forms.ToolStripStatusLabel lbproctimer; + } +} + diff --git a/QRValidation/Project/fMain.cs b/QRValidation/Project/fMain.cs new file mode 100644 index 0000000..224ea1f --- /dev/null +++ b/QRValidation/Project/fMain.cs @@ -0,0 +1,898 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Runtime.InteropServices; +using System.Threading.Tasks; +using System.Diagnostics; +using System.Threading; +using static Project.Util_Vision; +using AR; +using Euresys.Open_eVision_22_12; + +namespace Project +{ + public partial class fMain : Form + { + Boolean exit = false; + Boolean bRunConnection = true; + private arCtl.LogTextBox rtLogR; + private arCtl.LogTextBox rtLogL; + + public fMain() + { + InitializeComponent(); + InitRTLog(); + + PUB.mre[0] = new ManualResetEvent(true); + PUB.mre[1] = new ManualResetEvent(true); + + PUB.mre_send[0] = new ManualResetEvent(true); + PUB.mre_send[1] = new ManualResetEvent(true); + + + this.KeyDown += (s1, e1) => + { + if (e1.KeyCode == Keys.Escape) this.Close(); + if (DateTime.Now > PUB.LastInputTime) PUB.LastInputTime = DateTime.Now; + }; + + //dotList = new List(); + //dotList.AddRange(new arCtl.arLabel[] { lbDot1, lbDot2, lbDot3, lbDot4, lbDot5, lbDot6, lbDot7, lbDot8, lbDot9, lbDot10 }); + + this.MouseMove += (s1, e1) => { if (DateTime.Now > PUB.LastInputTime) PUB.LastInputTime = DateTime.Now; }; + this.FormClosing += __Closing; + + PUB._hDevice[0] = -1; + PUB._hDevice[1] = -1; + + if (System.Diagnostics.Debugger.IsAttached) this.TopMost = false; + //else this.TopMost = true; + PUB.imgque.Push(this.Name); + PUB.RemoteCommand += PUB_RemoteCommand; + } + + void InitRTLog() + { + this.rtLogR = new arCtl.LogTextBox(); + this.rtLogL = new arCtl.LogTextBox(); + + arCtl.sLogMessageColor sLogMessageColor1 = new arCtl.sLogMessageColor(); + arCtl.sLogMessageColor sLogMessageColor2 = new arCtl.sLogMessageColor(); + arCtl.sLogMessageColor sLogMessageColor3 = new arCtl.sLogMessageColor(); + arCtl.sLogMessageColor sLogMessageColor4 = new arCtl.sLogMessageColor(); + arCtl.sLogMessageColor sLogMessageColor5 = new arCtl.sLogMessageColor(); + arCtl.sLogMessageColor sLogMessageColor6 = new arCtl.sLogMessageColor(); + arCtl.sLogMessageColor sLogMessageColor7 = new arCtl.sLogMessageColor(); + arCtl.sLogMessageColor sLogMessageColor8 = new arCtl.sLogMessageColor(); + + // + // rtLogR + // + this.rtLogR.BackColor = System.Drawing.SystemColors.Control; + this.rtLogR.BorderStyle = System.Windows.Forms.BorderStyle.None; + sLogMessageColor1.color = System.Drawing.Color.Black; + sLogMessageColor1.gubun = "NOR"; + sLogMessageColor2.color = System.Drawing.Color.Red; + sLogMessageColor2.gubun = "ERR"; + sLogMessageColor3.color = System.Drawing.Color.Tomato; + sLogMessageColor3.gubun = "WARN"; + sLogMessageColor4.color = System.Drawing.Color.DeepSkyBlue; + sLogMessageColor4.gubun = "MSG"; + this.rtLogR.ColorList = new arCtl.sLogMessageColor[] { + sLogMessageColor1, + sLogMessageColor2, + sLogMessageColor3, + sLogMessageColor4}; + this.rtLogR.DateFormat = "mm:ss.fff"; + this.rtLogR.DefaultColor = System.Drawing.Color.LightGray; + this.rtLogR.Dock = System.Windows.Forms.DockStyle.Fill; + this.rtLogR.EnableDisplayTimer = false; + this.rtLogR.EnableGubunColor = true; + this.rtLogR.Font = new System.Drawing.Font("Consolas", 9F); + this.rtLogR.ListFormat = "[{0}] {1}"; + this.rtLogR.Location = new System.Drawing.Point(587, 3); + this.rtLogR.MaxListCount = ((ushort)(200)); + this.rtLogR.MaxTextLength = ((uint)(4000u)); + this.rtLogR.MessageInterval = 50; + this.rtLogR.Name = "rtLogR"; + this.rtLogR.Size = new System.Drawing.Size(578, 626); + this.rtLogR.TabIndex = 136; + this.rtLogR.Text = ""; + // + // rtLogL + // + this.rtLogL.BackColor = System.Drawing.SystemColors.Control; + this.rtLogL.BorderStyle = System.Windows.Forms.BorderStyle.None; + sLogMessageColor5.color = System.Drawing.Color.Black; + sLogMessageColor5.gubun = "NOR"; + sLogMessageColor6.color = System.Drawing.Color.Red; + sLogMessageColor6.gubun = "ERR"; + sLogMessageColor7.color = System.Drawing.Color.Tomato; + sLogMessageColor7.gubun = "WARN"; + sLogMessageColor8.color = System.Drawing.Color.DeepSkyBlue; + sLogMessageColor8.gubun = "MSG"; + this.rtLogL.ColorList = new arCtl.sLogMessageColor[] { + sLogMessageColor5, + sLogMessageColor6, + sLogMessageColor7, + sLogMessageColor8}; + this.rtLogL.DateFormat = "mm:ss.fff"; + this.rtLogL.DefaultColor = System.Drawing.Color.LightGray; + this.rtLogL.Dock = System.Windows.Forms.DockStyle.Fill; + this.rtLogL.EnableDisplayTimer = false; + this.rtLogL.EnableGubunColor = true; + this.rtLogL.Font = new System.Drawing.Font("Consolas", 9F); + this.rtLogL.ListFormat = "[{0}] {1}"; + this.rtLogL.Location = new System.Drawing.Point(3, 3); + this.rtLogL.MaxListCount = ((ushort)(200)); + this.rtLogL.MaxTextLength = ((uint)(4000u)); + this.rtLogL.MessageInterval = 50; + this.rtLogL.Name = "rtLogL"; + this.rtLogL.Size = new System.Drawing.Size(578, 626); + this.rtLogL.TabIndex = 136; + this.rtLogL.Text = ""; + + this.tableLayoutPanel2.Controls.Add(this.rtLogR, 1, 0); + this.tableLayoutPanel2.Controls.Add(this.rtLogL, 0, 0); + } + private void PUB_RemoteCommand(object sender, remoteargs e) + { + switch (e.Command) + { + case remotelist.barcodeupdate: + this.BeginInvoke(new Action(() => + { + if (e.CamIdx == PUB.setting.CameraIndexL) + { + rtLeft.Text = e.strdata; + } + else + { + rtRight.Text = e.strdata; + } + })); + break; + } + } + + void addsendlogmsg(RichTextBox rt, string msg) + { + if (rt.InvokeRequired) + { + rt.BeginInvoke(new Action(addsendlogmsg), new object[] { rt, msg }); + } + else + { + string pretext = ""; + if (rt.TextLength > 500) + { + pretext = rt.Text.Substring(400); + rt.Clear(); + } + rt.AppendText(pretext + "\n" + msg); + } + + } + + private void __Closing(object sender, FormClosingEventArgs e) + { + if (exit == false) + { + // viewmode(true); + e.Cancel = true; + return; + } + else + { + if (UTIL.MsgQ("Do you really want to exit?") != DialogResult.Yes) + { + e.Cancel = true; + return; + } + else + { + _Close_Start(); + } + } + } + + void UpdateControl() + { + this.Text = Application.ProductName + " ver " + Application.ProductVersion + $"({PUB.setting.cameraname})"; + + if (PUB.wsock_[0] != null) + { + PUB.wsock_[0].TargetIdx = PUB.setting.CameraIndexL; + PUB.wsock_[0].Target = eTarget.Left; + } + + if (PUB.wsock_[1] != null) + { + PUB.wsock_[1].TargetIdx = PUB.setting.CameraIndexR; + PUB.wsock_[1].Target = eTarget.Right; + } + + } + private void __Load(object sender, EventArgs e) + { + + PUB.log_[0].RaiseMsg += Log_RaiseMsgL; + PUB.log_[1].RaiseMsg += Log_RaiseMsgR; + + // if (System.Diagnostics.Debugger.IsAttached) viewmode(false); + // else viewmode(true); + this.Show(); + Application.DoEvents(); + + + //Shared memory setup 230811 + //if (PUB.setting.CameraIndexL >= 0) + //{ + // swplc[0] = new AR.MemoryMap.Server("crevisv22L", 1024); + // swplc[0].Idx = (int)PUB.setting.CameraIndexL; + // swplc[0].ValueChanged += Plc_ValueChanged; + // swplc[0].Start(); + //} + + //if (PUB.setting.CameraIndexR >= 0) + //{ + // swplc[1] = new AR.MemoryMap.Server("crevisv22R", 1024); + // swplc[1].Idx = (int)PUB.setting.CameraIndexR; + // swplc[1].ValueChanged += Plc_ValueChanged; + // swplc[1].Start(); + //} + + //Socket initialization + //Pub.log.Add("Socket event assignment"); + //Pub.wsListen.ConnectionRequest += WsListen_ConnectionRequest; + //Application.DoEvents(); + + PUB.log_[0].Add($"Server listening port:{PUB.setting.listenPortL}"); + try + { + PUB.wsock_[0] = new Class.WebSocket("127.0.0.1", PUB.setting.listenPortL); + PUB.wsock_[0].TargetIdx = PUB.setting.CameraIndexL; + PUB.wsock_[0].Target = eTarget.Left; + PUB.wsock_[0].Start(); + PUB.wsock_[0].MessageReceived += Ws_DataArrival; + PUB.wsock_[0].ClientConnected += Ws_Connected; + PUB.wsock_[0].ClientDisconnected += Ws_Disconnected; + PUB.log_[0].Add("Camera initialization"); + } + catch (Exception ex) + { + PUB.wsock_[0].MessageReceived -= Ws_DataArrival; + PUB.wsock_[0].ClientConnected -= Ws_Connected; + PUB.wsock_[0].ClientDisconnected -= Ws_Disconnected; + PUB.log_[0].AddE("Server listen failed:" + ex.Message); + } + + PUB.log_[1].Add($"Server listening port:{PUB.setting.listenPortR}"); + try + { + PUB.wsock_[1] = new Class.WebSocket("127.0.0.1", PUB.setting.listenPortR); + PUB.wsock_[1].TargetIdx = PUB.setting.CameraIndexR; + PUB.wsock_[1].Target = eTarget.Right; + PUB.wsock_[1].Start(); + PUB.wsock_[1].MessageReceived += Ws_DataArrival; + PUB.wsock_[1].ClientConnected += Ws_Connected; + PUB.wsock_[1].ClientDisconnected += Ws_Disconnected; + PUB.log_[1].Add("Camera initialization"); + } + catch (Exception ex) + { + PUB.wsock_[1].MessageReceived -= Ws_DataArrival; + PUB.wsock_[1].ClientConnected -= Ws_Connected; + PUB.wsock_[1].ClientDisconnected -= Ws_Disconnected; + PUB.log_[1].AddE("Server listen failed:" + ex.Message); + } + + Application.DoEvents(); + + _SM_RUN_INIT_CAMERA(); + + tmDisplay.Start(); //start Display + + PUB.flag.set(eFlag.CHECKLICENSE, true, "LOAD"); + PUB.flag.set(eFlag.CHECKCAMERAL, true, "LOAD"); + PUB.flag.set(eFlag.CHECKCAMERAR, true, "LOAD"); + Task.Run(new Action(() => + { + //license chedk + try + { + + using (var img = new EImageBW8()) + { + PUB.log_[0].Add("evision check OK"); + PUB.log_[1].Add("evision check OK"); + } + PUB.VisionLicense = true; + } + catch (Exception ex) + { + PUB.VisionLicense = false; + PUB.log_[0].AddE($"evision check Error:{ex.Message}"); + PUB.log_[1].AddE($"evision check Error:{ex.Message}"); + + } + PUB.flag.set(eFlag.CHECKLICENSE, false, "LOAD"); + // panMiniDisplay.Invalidate(); + })); + UpdateControl(); + PUB.log_[0].Add($"Program start(left:{PUB.setting.CameraIndexL})"); + PUB.log_[1].Add($"Program start(right:{PUB.setting.CameraIndexR})"); + //PUB.CheckNRegister3(Application.ProductName, "chi", Application.ProductVersion); + + //Image collection thread start - 231003 + bwLeft.RunWorkerAsync(); + bwRight.RunWorkerAsync(); + bwConn.RunWorkerAsync(); + + //set live mode + if (PUB.setting.CameraIndexL >= 0) PUB.IsLive[PUB.setting.CameraIndexL] = true; + if (PUB.setting.CameraIndexR >= 0) PUB.IsLive[PUB.setting.CameraIndexR] = true; + if (PUB.setting.CameraIndexL >= 0) PUB.IsProcess[PUB.setting.CameraIndexL] = true; + if (PUB.setting.CameraIndexR >= 0) PUB.IsProcess[PUB.setting.CameraIndexR] = true; + } + //private void Plc_ValueChanged(object sender, AR.MemoryMap.Core.monitorvalueargs e) + //{ + // var ws = sender as AR.MemoryMap.Server; + //} + + #region "Mouse Drag" + + Boolean mousecap = false; + Point mousepos; + private void Panel1_MouseDown(object sender, MouseEventArgs e) + { + mousepos = e.Location; + mousecap = true; + // panMiniDisplay.Invalidate(); + } + private void Panel1_DoubleClick(object sender, EventArgs e) + { + // viewmode(false); + this.Invalidate(); + } + + private void Panel1_MouseMove(object sender, MouseEventArgs e) + { + if (mousecap) + { + var offx = e.Location.X - mousepos.X; + var offy = e.Location.Y - mousepos.Y; + this.Location = new Point(this.Location.X + offx, this.Location.Y + offy); + //mousepos = e.Location; + } + } + + private void Panel1_MouseUp(object sender, MouseEventArgs e) + { + mousecap = false; + } + + #endregion + + private void Log_RaiseMsgL(DateTime LogTime, string TypeStr, string Message) + { + if (this.rtLogL != null) + this.rtLogL.AddMsg(LogTime, TypeStr, Message); + } + + private void Log_RaiseMsgR(DateTime LogTime, string TypeStr, string Message) + { + if (this.rtLogR != null) + this.rtLogR.AddMsg(LogTime, TypeStr, Message); + } + + + #region "Mouse Form Move" + + private Boolean fMove = false; + private Point MDownPos; + + private void LbTitle_DoubleClick(object sender, EventArgs e) + { + if (this.WindowState == FormWindowState.Maximized) this.WindowState = FormWindowState.Normal; + else this.WindowState = FormWindowState.Maximized; + //this.loader1.RemakeRect(); + } + private void LbTitle_MouseMove(object sender, MouseEventArgs e) + { + if (fMove) + { + Point offset = new Point(e.X - MDownPos.X, e.Y - MDownPos.Y); + this.Left += offset.X; + this.Top += offset.Y; + offset = new Point(0, 0); + } + } + private void LbTitle_MouseUp(object sender, MouseEventArgs e) + { + fMove = false; + } + private void LbTitle_MouseDown(object sender, MouseEventArgs e) + { + MDownPos = new Point(e.X, e.Y); + fMove = true; + } + + #endregion + + + private void 맵데이터보기ToolStripMenuItem_Click(object sender, EventArgs e) + { + Util.RunExplorer(Util.CurrentPath); + } + + private void 저장폴더열기ToolStripMenuItem_Click(object sender, EventArgs e) + { + PUB.LogFlush(); + + + var fi = new System.IO.FileInfo(PUB.log_[0].FileName); + Util.RunExplorer(fi.Directory.FullName); + } + + private void 캡처ToolStripMenuItem1_Click(object sender, EventArgs e) + { + string savefile = System.IO.Path.Combine(Util.CurrentPath, "ScreenShot", DateTime.Now.ToString("yyyyMMddHHmmss") + ".png"); + var grpath = new System.IO.FileInfo(savefile); + Util.RunExplorer(grpath.Directory.FullName); + } + + private void 저장ToolStripMenuItem_Click(object sender, EventArgs e) + { + var path = System.IO.Path.Combine( + PUB.setting.Path_Data, "History", + DateTime.Now.Year.ToString("0000"), + DateTime.Now.Month.ToString("00"), + DateTime.Now.Day.ToString("00")); + if (System.IO.Directory.Exists(path)) + Util.RunExplorer(path); + else + Util.RunExplorer(System.IO.Path.Combine(PUB.setting.Path_Data, "History")); + } + + private void 이미지ToolStripMenuItem_Click(object sender, EventArgs e) + { + var path = System.IO.Path.Combine( + PUB.setting.Path_Data, "Images", + DateTime.Now.Year.ToString("0000"), + DateTime.Now.Month.ToString("00"), + DateTime.Now.Day.ToString("00")); + if (System.IO.Directory.Exists(path)) + Util.RunExplorer(path); + else + Util.RunExplorer(System.IO.Path.Combine(PUB.setting.Path_Data, "History")); + } + + private void 수량ToolStripMenuItem_Click(object sender, EventArgs e) + { + var path = System.IO.Path.Combine( + PUB.setting.Path_Data, "Count", + DateTime.Now.Year.ToString("0000"), + DateTime.Now.Month.ToString("00"), + DateTime.Now.Day.ToString("00")); + if (System.IO.Directory.Exists(path)) + Util.RunExplorer(path); + else + Util.RunExplorer(System.IO.Path.Combine(PUB.setting.Path_Data, "History")); + } + + private void exceptionTestToolStripMenuItem_Click(object sender, EventArgs e) + { + int a = 0; + int b = 1; + var c = b / a; + } + + private void processListToolStripMenuItem_Click(object sender, EventArgs e) + { + PUB.log_[0].Add("process list"); + PUB.log_[1].Add("process list"); + foreach (var prc in System.Diagnostics.Process.GetProcesses()) + { + if (prc.ProcessName.StartsWith("svchost")) continue; + if (prc.ProcessName.Contains(".host")) continue; + PUB.log_[0].Add(prc.ProcessName); + PUB.log_[1].Add(prc.ProcessName); + } + } + + + private void errorHandleToolStripMenuItem_Click(object sender, EventArgs e) + { + int a = 3; + int b = 0; + var c = a / b; + } + + private void toolStripButton4_Click(object sender, EventArgs e) + { + + //라이브, 프로세스, 트리거상태 보존 + var l0 = PUB.IsLive[0]; + var t0 = PUB.IsTrigger[0]; + var p0 = PUB.IsProcess[0]; + + for (int i = 0; i < 2; i++) + { + PUB.IsLive[i] = false; + PUB.IsTrigger[i] = false; + PUB.IsProcess[i] = false; + } + + using (var f = new fSetting()) + { + f.TopMost = true; + f.ShowDialog(); + } + + UpdateControl(); + + if (PUB.setting.CameraIndexL >= 0) + { + PUB.IsLive[PUB.setting.CameraIndexL] = l0; + PUB.IsTrigger[PUB.setting.CameraIndexL] = t0; + PUB.IsProcess[PUB.setting.CameraIndexL] = p0; + } + + if (PUB.setting.CameraIndexR >= 0) + { + PUB.IsLive[PUB.setting.CameraIndexR] = l0; + PUB.IsTrigger[PUB.setting.CameraIndexR] = t0; + PUB.IsProcess[PUB.setting.CameraIndexR] = p0; + } + + } + + private void toolStripButton5_Click(object sender, EventArgs e) + { + Util.RunExplorer(PUB.setting.ImageSavePath); + } + + + + private void exitToolStripMenuItem_Click(object sender, EventArgs e) + { + exit = true; + this.Close(); + } + + private void toolStripButton7_Click(object sender, EventArgs e) + { + exit = true; + this.Close(); + } + + + private void toolStripButton9_Click_2(object sender, EventArgs e) + { + //camera image save + var bt = sender as ToolStripButton; + var camidx = bt.Name.Equals("toolStripButton9") ? PUB.setting.CameraIndexL : PUB.setting.CameraIndexR; + var logIdx = camidx == PUB.setting.CameraIndexL ? 0 : 1; + var sd = new SaveFileDialog(); + sd.Filter = "bitmap|*.bmp"; + if (sd.ShowDialog() != DialogResult.OK) return; + + //이미지가 없다면 한장 찍는다 + //if (this.iv[camidx].Image == null) CrevisGrab(camidx, true); + if (PUB.mre[camidx].WaitOne(100)) + { + PUB.mre[camidx].Reset(); + if (PUB.OrgImage[camidx] != null && PUB.OrgImage[camidx].IsVoid == false) + { + PUB.OrgImage[camidx].Save(sd.FileName); + PUB.log_[logIdx].Add($"File save completed {sd.FileName}"); + } + else UTIL.MsgE("No image"); + PUB.mre[camidx].Set(); + } + else PUB.log_[logIdx].AddE($"Image is locked"); + + + } + + private void toolStripButton11_Click_1(object sender, EventArgs e) + { + var bt = sender as ToolStripButton; + var tagstr = bt.Tag.ToString(); + + OpenFileDialog od = new OpenFileDialog(); + od.Filter = "image file|*.jpg;*.bmp"; + od.FilterIndex = 0; + if (od.ShowDialog() != DialogResult.OK) return; + + //Turn off live mode + var camIdx = tagstr == "L" ? PUB.setting.CameraIndexL : PUB.setting.CameraIndexR; + var logIdx = camIdx == PUB.setting.CameraIndexL ? 0 : 1; + PUB.IsLive[camIdx] = false; + //iv[camidx].Image = null; + + //Remove existing image + if (PUB.mre[camIdx].WaitOne(100)) + { + PUB.mre[camIdx].Reset(); + if (PUB.OrgImage[camIdx] != null) PUB.OrgImage[camIdx].Dispose(); + PUB.OrgImage[camIdx] = new EImageBW8(); + PUB.OrgImage[camIdx].Load(od.FileName); + + var target = tagstr == "L" ? eTarget.Left : eTarget.Right; + var pan = target == eTarget.Left ? pivLeft : pIvRight; + + //draw image + PUB.DrawImage(target, pan, PUB.OrgImage[camIdx]); + PUB.mre[camIdx].Set(); + } + else + { + PUB.log_[logIdx].AddE($"Cannot execute because image is locked"); + return; + } + + + } + + private void toolStripButton12_Click_1(object sender, EventArgs e) + { + //ivL.ZoomFit(); + } + + private void toolStripButton3_Click_1(object sender, EventArgs e) + { + // ivL.ZoomIn(); + } + + private void toolStripButton2_Click_1(object sender, EventArgs e) + { + //ivL.ZoomOut(); + } + + private void toolStripButton13_Click(object sender, EventArgs e) + { + // this.ivL.DebugMode = !this.ivL.DebugMode; + // this.ivL.Invalidate(); + } + + + + List[] coderesult = new List[] { + new List(), + new List() + }; + + private void toolStripMenuItem7_Click(object sender, EventArgs e) + { + var bt = sender as ToolStripMenuItem; + var tagstr = bt.Tag.ToString(); + var camIdx = tagstr == "L" ? PUB.setting.CameraIndexL : PUB.setting.CameraIndexR; + var target = PUB.GetTarget(camIdx);// tagstr == "L" ? eTarget.Left : eTarget.Right; + var logIdx = target == eTarget.Left ? 0 : 1; + if (target == eTarget.None) + { + UTIL.MsgE("Target not specified"); + return; + } + + PUB.log_[logIdx].Add("Image Test run"); + + System.Diagnostics.Stopwatch wat = new Stopwatch(); + wat.Restart(); + + if (PUB.mre[camIdx].WaitOne(100)) + { + PUB.mre[camIdx].Reset(); + var rlt = Util_Vision.DetectQR(PUB.OrgImage[camIdx], null, 0, + out string resultMessage, + PUB.setting.erodevaluestr, + PUB.setting.GainOffsetListStr, + PUB.setting.blob_area_min, + PUB.setting.blob_area_max, + PUB.setting.blob_sigmaxy, + PUB.setting.blob_sigmayy, + PUB.setting.blob_sigmaxx, + PUB.setting.blob_minw, + PUB.setting.blob_maxw, + PUB.setting.blob_minh, + PUB.setting.blob_maxh); + coderesult[camIdx] = rlt.Item1; + + PUB.ProcessTime[camIdx] = rlt.Item4; + var pan = target == eTarget.Left ? pivLeft : pIvRight; + + PUB.DrawImage(target, pan, PUB.OrgImage[camIdx], rlt.Item1, rlt.Item2, rlt.Item3); + PUB.mre[camIdx].Set(); + } + else PUB.log_[logIdx].AddE($"Image is locked"); + + wat.Stop(); + PUB.log_[logIdx].Add($"{wat.ElapsedMilliseconds}ms"); + } + + private void toolStripMenuItem19_Click(object sender, EventArgs e) + { + var bt = sender as ToolStripMenuItem; + var camIdx = bt.Tag.ToString().Equals("L") ? PUB.setting.CameraIndexL : PUB.setting.CameraIndexR; + var logIdx = camIdx == PUB.setting.CameraIndexL ? 0 : 1; + PUB.log_[logIdx].Add("Image Test run"); + + if (PUB.mre[camIdx].WaitOne(100) == false) + { + PUB.log_[logIdx].AddE($"Image is locked"); + return; + } + PUB.mre[camIdx].Reset(); + + System.Diagnostics.Stopwatch wat = new Stopwatch(); + wat.Restart(); + + var rlt = Util_Vision.DetectQR(PUB.OrgImage[camIdx], null, 0, + out string resultMessage, + PUB.setting.erodevaluestr, + PUB.setting.GainOffsetListStr, + PUB.setting.blob_area_min, + PUB.setting.blob_area_max, + PUB.setting.blob_sigmaxy, + PUB.setting.blob_sigmayy, + PUB.setting.blob_sigmaxx, PUB.setting.blob_minw, + PUB.setting.blob_maxw, + PUB.setting.blob_minh, + PUB.setting.blob_maxh); + coderesult[camIdx] = rlt.Item1; + + PUB.mre[camIdx].Set(); + PUB.ProcessTime[camIdx] = rlt.Item4; + + + Util_Vision.SCodeData codedata; + List data = new List(); + Boolean FindAmkorQR = false; + if (coderesult[camIdx].Count > 0) + { + foreach (var item in coderesult[camIdx].OrderByDescending(t => t.sid)) + { + //datalist.Add(item.data); + // ptlist.Add(item.corner); + if (FindAmkorQR == false) + { + var bcd = new Class.CAmkorSTDBarcode(item.data); + if (bcd.isValid) + { + codedata = item; + FindAmkorQR = true; + data.Add(item.data);// = item.data; + break; + } + } + } + } + + + + PUB.IsTrigger[camIdx] = true; + if (PUB.setting.SendRawData) //211210 + { + if (PUB.BarcodeParsing(camIdx, coderesult[camIdx], "CREVIS")) + PUB.parsetime = DateTime.Now; + else + PUB.parsetime = DateTime.Now.AddMilliseconds(50); + } + else + { + if (PUB.BarcodeParsing(camIdx, data, "CREVIS")) + PUB.parsetime = DateTime.Now; + else + PUB.parsetime = DateTime.Now.AddMilliseconds(50); + } + + wat.Stop(); ; + PUB.log_[logIdx].Add($"{wat.ElapsedMilliseconds}ms"); + } + + private void toolStripMenuItem20_Click(object sender, EventArgs e) + { + if (PUB.setting.CameraIndexL >= 0) + SendStatus(eTarget.Left); + + if (PUB.setting.CameraIndexR >= 0) + SendStatus(eTarget.Right); + } + + private void toolStripButton21_Click(object sender, EventArgs e) + { + if (PUB.setting.CameraIndexL >= 0) + PUB.IsLive[PUB.setting.CameraIndexL] = !PUB.IsLive[PUB.setting.CameraIndexL]; + } + + + private void btTrigR_Click(object sender, EventArgs e) + { + var but = sender as ToolStripButton; + if (but == null) return; + var camIdx = but.Tag.ToString().Equals("L") ? PUB.setting.CameraIndexL : PUB.setting.CameraIndexR; + var logIdx = camIdx == PUB.setting.CameraIndexL ? 0 : 1; + PUB.triggerTime[camIdx] = DateTime.Now; + PUB.IsTrigger[camIdx] = !PUB.IsTrigger[camIdx]; + PUB.lastdata[camIdx] = string.Empty; + PUB.log_[logIdx].Add("User trigger setting value:" + PUB.IsTrigger[camIdx].ToString()); + } + + private void toolStripButton25_Click(object sender, EventArgs e) + { + var camIdx = PUB.setting.CameraIndexL; + var camTarget = PUB.GetTarget(camIdx); + if (camTarget == eTarget.None) return; + var logIdx = camIdx == PUB.setting.CameraIndexL ? 0 : 1; + PUB.IsProcess[camIdx] = !PUB.IsProcess[camIdx]; + PUB.log_[logIdx].Add("Process setting value:" + PUB.IsProcess.ToString()); + } + + private void btProcessR_Click(object sender, EventArgs e) + { + var bt = sender as ToolStripButton; + var camIdx = bt.Tag.ToString().Equals("L") ? PUB.setting.CameraIndexL : PUB.setting.CameraIndexR; + var logIdx = camIdx == PUB.setting.CameraIndexL ? 0 : 1; + var camTarget = PUB.GetTarget(camIdx); + + if (camTarget == eTarget.None) + { + UTIL.MsgE("Target camera not found"); + return; + } + PUB.IsProcess[camIdx] = !PUB.IsProcess[camIdx]; + PUB.log_[logIdx].Add("Process setting value:" + PUB.IsProcess.ToString()); + } + + + + private void btLiveR_Click(object sender, EventArgs e) + { + if (PUB.setting.CameraIndexR >= 0 && PUB.setting.CameraIndexR != PUB.setting.CameraIndexL) + PUB.IsLive[PUB.setting.CameraIndexR] = !PUB.IsLive[PUB.setting.CameraIndexR]; + } + private void toolStripButton6_Click_1(object sender, EventArgs e) + { + //Use dummy image + var bt = sender as ToolStripButton; + var camIdx = bt.Tag.ToString().Equals("L") ? PUB.setting.CameraIndexL : PUB.setting.CameraIndexR; + var logIdx = camIdx == PUB.setting.CameraIndexL ? 0 : 1; + if (PUB.mre[camIdx].WaitOne(100)) + { + PUB.mre[camIdx].Reset(); + var OrgEImage = new EImageBW8(PUB.OrgImage[camIdx].Width, PUB.OrgImage[camIdx].Height); + PUB.OrgImage[camIdx].CopyTo(OrgEImage); + PUB.mre[camIdx].Set(); + + var f = new fTeach(OrgEImage); + f.TopMost = true; + f.ShowDialog(); + OrgEImage.Dispose(); + } + else PUB.log_[logIdx].AddE($"Image is locked"); + } + + + + private void pIvRight_MouseClick(object sender, MouseEventArgs e) + { + var f = new fviewer(PUB.setting.CameraIndexR); + f.ShowDialog(); + } + + + private void pivLeft_MouseClick(object sender, MouseEventArgs e) + { + var f = new fviewer(PUB.setting.CameraIndexL); + f.ShowDialog(); + } + + } +} \ No newline at end of file diff --git a/QRValidation/Project/fMain.resx b/QRValidation/Project/fMain.resx new file mode 100644 index 0000000..762de15 --- /dev/null +++ b/QRValidation/Project/fMain.resx @@ -0,0 +1,1241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + + 124, 17 + + + 327, 17 + + + 442, 17 + + + 221, 17 + + + 320, 56 + + + 956, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE1SURBVDhPY/hPIQAbcOn57//T915BwW1rjoFx/oJz//N6 + VqHgsNxeMA03YN3lp/9vv4YYhAtsuQ6h55/9A8aBidVgPtiADZcegzWDFN1/9///qy8IDOKDcPfu1/9/ + /vn/v3rt/f9TD38BuwJuwIrT9wka0L79BdiAkuW3MA0A+fnog///V12GKAZ5BxcGGQByDYoXYAbA/Aey + AYRBCkE2N256AnY6SDMoUEF8FANAoQ0zAFkzCCNrhhkAor3CczENwGYzuu1JM8+BaQwDQAGITzOyASDs + 4huPMAAkATIA3c/YNIdNPAHGKAaAUhUoBghphhng0rTnv71bGKoBoADE5mR0zVgNACUK9BgAGYbudJBG + GNY0dEYYAMsgMAyKYxAGhTQIg/wLwiBbQRikGSUdkA/+/wcAgXJEf04PwQkAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEfSURBVDhPYwCB/0QCsGJsACTZt3I3Bq6asAiM08o7iTPg + 0dsvcPzi4zcwBrFhBsAAVBsCgARhBvy/wfB/3s3//xfe+v9/ye3/cAOQXQIDcM2vL88GGwCycQFQ87I7 + //+vvf///8YH/8FiocmlKC55fcoCTKMYALIBpDhpuh4K3n75AYoBfz8fxWLAxR6wASDFMI2vjwRD8C4X + BN5sCcHrjdAMgClGwrgA2AXYDEAHv9+u/f/z5dL/35/N+//14RQ4/vXuEHYD/n69+P/3h80QDNSMbsCn + W61g/OPVTgIG4ND4/nIhGH97shqLAcAAAvkNl80wzQQNALkCjIFskF9BzgVhkCYYxu4F5KgCYVh0oWOg + RhhGMYBcADaAMsDAAAA9c9ORjmwOmQAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE1SURBVDhPpZK9S8NQFEf9cxyFgmtAilNFcBDs0snByUGo + o7sUvwahg7hUWujQTRw7tJOLH4tkEAchEAhkyWiunGtu47MvWbxw8iD3/g4vL29F/lkqeI1Smbx8KqPH + d7mdvcnVw5NyMpgqx/175fBsIjsHp9LtDUsBwSzLJE1TJUkShziOF0RRpCsSR0CwcS4O++Mv2bvLldZN + Ls1+LsG1LAvYtgnWL3/4KzMQsAtHwDcjIMgA+MJgglb7qBRwWAho2lZ9YaC3JOCUEdCsC4MJmludUsDv + 8R1iFbUC6mM70PVi3tY1fu7pyh0wQbC5q+9UQMME/Lo6KgVhGC4uk10eyi6PQZ/Z1bUN7TsCVsL8Y07Z + 4HuBsM16BWAXxFeEbM4REDL0ZUXRI2jorD5/VTFbWcVYUSLfOSkOFdjUoOMAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + 1062, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACWSURBVDhPY6AK+P+58D+UCQf/7yzDEMMJQAbAMJx/rIBE + A5ZIg/HdiQr/V+5c8///Tn+IYcS6BKTx7mSV/zBwZG0D8a6AOR9kyO3bt6FG/P+/csMawgaAnAiyCeTk + /xus/q8tVwMbApIC4cmrdxPnChCAGQbVRJoh6IFFliHoYJgaAgNkG4KcTig2hCwDQACkEYJ3/wcAFYfc + vQg8mLAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFNSURBVDhPhZKvSwRRFIXnn7BYLBsE2aZB2GAQDcqCBkVw + MYhJLK7BokWTLJiMFi3aBIuIGPwRloXVRVE2rKhBEEQE/4Cr3+Xdx5sZxzlwYOfO/c68d9goS5KQG+fL + 7cv4QdF7eKfXTXOCWDDo6fvRu/11qyEW5NbjMtigs7dD2X6uyFZnRo5eduXusy7Nj0spbRTSISHMEqDB + eLM9Jautshy/7sn1+4n0V3viIWGAwRaAgPFSYzQdwA9g7smx7av2ZdNifURdu6/qXt9ct841gHIIAAih + pOavhqRyUfo7gJLWHybVWQKePh/ULmIBNEt5+52aLN+MeXNnk8ErjVkNKJS7dO57IISCgOy+HBkZPHE6 + kIYRDzRLAKewuxpoMAXyn0gFIAuhILzWXFAIc2zATNjEC8rBHBWH4L+wSTd+ZUAIIreWL7fv5cYJRdEP + Fas4M5JsXd4AAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + 534, 17 + + + 651, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEPSURBVDhPrZI9CsJAFIRzDi9gaStYCCm8gCgIYgoRISA2 + gj+9lXYieAJP4CXSC6YSbEQQCxsrk6fzcGI02dg4MMVu3vdlw8b6jmTkNWIOhiaViqzm86iLXk+L/UwJ + Hs6aTQl9X8TztOF6LfflMuq0UEiXxOHLcKg9DwbaU7+vPbquyGiUlGDRte2fMHpot1XSyOXeEgpum00E + IoT9UknXgClwi0XdSwgIoQhhQBSEz5MYBTwqmgbvWy0VGD+B3xmHEYBspoBv0jxhQshPAe55V6sZ69fr + sq1WkwIEC6dc1ivkYFoBj/P5T5iJS4JOR66O81HsEQ6CIClA8BBXhL8NwyzWPLYRZnTKkNfIP2NZD+oj + J+O97B4lAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKGSURBVDhPfVNNS2phED74A9z7E/oVbly41IIIXJkGCpkt + 1QglDSRq0yIQS4rQRLNQKPGjjpX5VSfxo0isFpkcFHLlVufOvJ1udLk1IMfzvjPP88wzc7if4ubmxnB9 + fc3n83n+/PzcIB3/Ho1GY6JUKskBQFYsFvvdbhfe3t7g8PCw73Q6Zaenp/Kjo6MJKf17VKtVP8/zo0ql + Il5cXCguLy/Fl5cXeH5+huPjYzEWiykQSDw4OBjt7e35pbKPwOKlp6cneH9/h3a7DVg8RMbxw8MDNJtN + oP9YPMS2QBRFSCaTsLa2tiSVc1y5XF6mJAKhglarxYA+Aei9Xq8DAWCLYLfbx4uLi8tS+UegYauUfHt7 + CwgI6XQatre3AeWSIigUCoCtMXav17sqlXEcIgpXV1edTCYzeHx8BEEQIJvNwsrKSsFms6lQmWp9fb2A + OQyI7vF94PF4OpgjcGRcr9djcon57u4OgsEguN1ulcTB+Xw+FXoAOFKmjNSQuUqlcsQAXl9fWY90QQzx + eBw2Nzf/AmxtbanC4TBTQC3kcjmWzwB2d3eFjY2Nzs7OzgCnwUDIh0AgUCBmAqIWqH9qLZVKgV6vH0xP + T3empqYEiYPjUOIqGsmMoicuEkQiEcC5szPcRjg5OWFnZrP5y0SKaDTKxnh/f8+KaVy1Wo15QkCkiM7P + zs7Y3cLCwnhubu5rjPv7+0skjzYvFArR4rBFItOob4vFMjaZTEO6o95dLhdMTk5+LRIFHvrJFKPRKDoc + DgVOQSQ2UjA7OyvqdDrFzMyMSDlqtfr7Kn+G1WqdQDY5ssvw1yfJiUQCsJh9TPiUazSa/39M/8b8/LwB + GXmtVsuj3B8+Z477A5ykGua7KkF4AAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADxSURBVDhPzZE9C4JQFIb9S7U0tbb3M/oDQXNjNdfaGhER + 5FRTH1tKSFNLUEQpCXFDE62T52h+dVGopRceEK/vc8/1Cv8T4MRfyg5+rCkdD7kB2qpGZCVWpphShAVc + pApoy7KHnIuByRREeTKRwOdPwboJYDN3MSzTrpNSiFj0GBVAG+QTgveYERzzFGDrM+KujuHB5nwBTeBD + Rb1PWOcumIc2YexaJOILDCU4Z7KMRbatEzgFV+Dc5KDIK183VcI4DjkC9yfh2dLKeKWIse+lCHAKF3zG + s1rqlEbGXbGI4DuuILimKHhlPJKCb0OC3yIIL23FiCaG84ANAAAAAElFTkSuQmCC + + + + 757, 17 + + + 203, 56 + + + 850, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE1SURBVDhPY/hPIQAbcOn57//T915BwW1rjoFx/oJz//N6 + VqHgsNxeMA03YN3lp/9vv4YYhAtsuQ6h55/9A8aBidVgPtiADZcegzWDFN1/9///qy8IDOKDcPfu1/9/ + /vn/v3rt/f9TD38BuwJuwIrT9wka0L79BdiAkuW3MA0A+fnog///V12GKAZ5BxcGGQByDYoXYAbA/Aey + AYRBCkE2N256AnY6SDMoUEF8FANAoQ0zAFkzCCNrhhkAor3CczENwGYzuu1JM8+BaQwDQAGITzOyASDs + 4huPMAAkATIA3c/YNIdNPAHGKAaAUhUoBghphhng0rTnv71bGKoBoADE5mR0zVgNACUK9BgAGYbudJBG + GNY0dEYYAMsgMAyKYxAGhTQIg/wLwiBbQRikGSUdkA/+/wcAgXJEf04PwQkAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEfSURBVDhPYwCB/0QCsGJsACTZt3I3Bq6asAiM08o7iTPg + 0dsvcPzi4zcwBrFhBsAAVBsCgARhBvy/wfB/3s3//xfe+v9/ye3/cAOQXQIDcM2vL88GGwCycQFQ87I7 + //+vvf///8YH/8FiocmlKC55fcoCTKMYALIBpDhpuh4K3n75AYoBfz8fxWLAxR6wASDFMI2vjwRD8C4X + BN5sCcHrjdAMgClGwrgA2AXYDEAHv9+u/f/z5dL/35/N+//14RQ4/vXuEHYD/n69+P/3h80QDNSMbsCn + W61g/OPVTgIG4ND4/nIhGH97shqLAcAAAvkNl80wzQQNALkCjIFskF9BzgVhkCYYxu4F5KgCYVh0oWOg + RhhGMYBcADaAMsDAAAA9c9ORjmwOmQAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE1SURBVDhPpZK9S8NQFEf9cxyFgmtAilNFcBDs0snByUGo + o7sUvwahg7hUWujQTRw7tJOLH4tkEAchEAhkyWiunGtu47MvWbxw8iD3/g4vL29F/lkqeI1Smbx8KqPH + d7mdvcnVw5NyMpgqx/175fBsIjsHp9LtDUsBwSzLJE1TJUkShziOF0RRpCsSR0CwcS4O++Mv2bvLldZN + Ls1+LsG1LAvYtgnWL3/4KzMQsAtHwDcjIMgA+MJgglb7qBRwWAho2lZ9YaC3JOCUEdCsC4MJmludUsDv + 8R1iFbUC6mM70PVi3tY1fu7pyh0wQbC5q+9UQMME/Lo6KgVhGC4uk10eyi6PQZ/Z1bUN7TsCVsL8Y07Z + 4HuBsM16BWAXxFeEbM4REDL0ZUXRI2jorD5/VTFbWcVYUSLfOSkOFdjUoOMAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + 1168, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACWSURBVDhPY6AK+P+58D+UCQf/7yzDEMMJQAbAMJx/rIBE + A5ZIg/HdiQr/V+5c8///Tn+IYcS6BKTx7mSV/zBwZG0D8a6AOR9kyO3bt6FG/P+/csMawgaAnAiyCeTk + /xus/q8tVwMbApIC4cmrdxPnChCAGQbVRJoh6IFFliHoYJgaAgNkG4KcTig2hCwDQACkEYJ3/wcAFYfc + vQg8mLAAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFNSURBVDhPhZKvSwRRFIXnn7BYLBsE2aZB2GAQDcqCBkVw + MYhJLK7BokWTLJiMFi3aBIuIGPwRloXVRVE2rKhBEEQE/4Cr3+Xdx5sZxzlwYOfO/c68d9goS5KQG+fL + 7cv4QdF7eKfXTXOCWDDo6fvRu/11qyEW5NbjMtigs7dD2X6uyFZnRo5eduXusy7Nj0spbRTSISHMEqDB + eLM9Jautshy/7sn1+4n0V3viIWGAwRaAgPFSYzQdwA9g7smx7av2ZdNifURdu6/qXt9ct841gHIIAAih + pOavhqRyUfo7gJLWHybVWQKePh/ULmIBNEt5+52aLN+MeXNnk8ErjVkNKJS7dO57IISCgOy+HBkZPHE6 + kIYRDzRLAKewuxpoMAXyn0gFIAuhILzWXFAIc2zATNjEC8rBHBWH4L+wSTd+ZUAIIreWL7fv5cYJRdEP + Fas4M5JsXd4AAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + 17, 56 + + + 106, 56 + + + 437, 56 + + + 142 + + + + AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA + IACoJQAA7h4AAFBQAAABACAA6GcAAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAACvGwAArxsAAAAA + AAAAAAAAnIt4FJyLeD2ci3g7nIt4D5yLeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACci3gAnIt4D5yL + eDuci3g9nIt4FJyLeD2ci3hcnIt4MpyLeA2ei3cAykAFAOuneQrvs4Ya77OGGuuneQrJOgAAnot2AJyL + eA2ci3gynIt4XJyLeD2ci3g8nIt4NJyLeAD2y6EA77WJGPXGnHH40ai9+tev2/rXr9v40ai99cabcO+1 + iBj2y6EAnIt4AJyLeDSci3g8nIt4D5yLeA3Ws5AA8bqPLPjQp7/94br9/+fB///owv//6ML//+fB//3h + uv340Ke+8bqPLNaykACci3gNnIt4DwAAAADxuY0A77SIF/jQp73+5b///+nD///pw//+5sD//ubA///p + w///6cP//uW+//jQpr3vtIcX8bmNAAAAAADwsIMA/eO9APTFm3D94br+/+nD//3mwP/pyqX/1a6L/9au + i//pyqX//ebA///pw//94br99MWbcP3juwDuroMA/+rED/zfuTr41KzF/uW////nwf/u0q7/z6iG/8uj + gf/Lo4H/z6iG/+/Srv//58H//uW///jUrMX84Lk6/+rED//1zw7ox59K5bSK5PTEmf/wwZf/moFp/3Vl + Vf93Z1b/d2dW/3VlVP+agWn/8MGX//TEmf/ltIrk6cefSv/1zw60eEwAr3NHGtuhdNvwt4v/7bSJ/35j + T/9HOzL/Sz40/0o9NP9LPzb/gGVR/+20iP/wt4v/26B02q9zRxq0eEwAtXpOAKBkOAvUm2+977aK//K4 + jP+1jGz/U0U5/0k9M/9cUUn/ure0/9rBrv/wt4z/77aK/9SabrygZDcKtXpOALV6TwDss4YAx41hcueu + gv7xuIz/7LSJ/7WMbP9/ZE//mYJw//n18P/75tX/8bmN/+eugv7HjGBy6rGFALV7TgAAAAAAuH1RALJ3 + SxjTmW2/7bOH//G4jP/yuIz/7bWJ/+22i//yw5//8r+X/+yzh//TmW2/sndKGLh9UQAAAAAAnIt4D5yL + eA26jmsAun9TLtOZbcDnroL977aK//G4jP/xt4v/77WJ/+eugf3TmW3Aun9TLrqOagCci3gNnIt4D5yL + eDyci3g0nIt4AM6TaACzeEwYx41hcdWbb73boXXa26F12tWbb7zHjWFxs3hLGM2TaACci3gAnIt4NJyL + eDyci3g9nIt4XJyLeDKci3gNm4h0ADYAAAChZjoKsHRIGq90SBqhZjoKMwAAAJuIdQCci3gNnIt4MpyL + eFyci3g9nIt4FJyLeD2ci3g7nIt4D5yLeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACci3gAnIt4D5yL + eDuci3g9nIt4FA/wAAAMMAAAMAwAACAEAADAAwAAwAMAAAAAAAAAAAAAgAEAAIABAADAAwAAwAMAACAE + AAAwDAAADDAAAA/wAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAACvGwAArxsAAAAAAAAAAAAAnIt4AJyL + eAici3gOnIt4DpyLeAqci3gAnIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACci3gAnIt4AJyLeAqci3gOnIt4DpyLeAici3gAnIt4CJyLeICci3iGnIt4g5yLeGGci3gEnIt4AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACci3gAnIt4BJyLeGGci3iDnIt4hpyL + eICci3gInIt4DpyLeISci3gYnIt4DJyLeAmci3gAnIt4AAAAAADspHQA5pxsAu2sfhDtr4Ib7a+CG+2s + fxDmm20C6qJ1AAAAAACci3gAnIt4AJyLeAmci3gMnIt4GJyLeISci3gOnIt4DpyLeIGci3gMnIt4AAAA + AADpoHEA8buPAO6vgg/xuY1Q88KXm/bJn8n3zaTc982k3PbJn8nzwpeb8biNT+6ugQ/xuo8A6aBvAAAA + AACci3gAnIt4DJyLeIGci3gOnIt4CpyLeGGci3gJnIt4AO6wgwDffk4A8LaKOfTEmrX51a32/eG6//7m + wP//6ML//+jC//7mwP/94br/+dWs9vTEmbTwtoo5435FAO+wggCci3gAnIt4CZyLeGGci3gKnIt4AJyL + eASci3gA5K2FAP//2QDwuI1N9syi3/3hu///6cP//+jC///owv//6ML//+jC///owv//6ML//+jD//3h + uv/2y6Le8LiMTP/zygDjrYUAnIt4AJyLeASci3gAAAAAAAAAAADxt4kA8bmOAPC2ijj2y6Ld/uS+///p + w///6ML//+jC///owv//6cP//+nD///owv//6ML//+jC///pw//+5L7/9suh3fC2ijjwuY4A8bmIAAAA + AAAAAAAAAAAAAAAAAADwt4oA7q6BDvTEmrL94br//+nD///owv//6ML//+nC//rhu//y1rH/8tax//rh + u///6cL//+jC///owv//6cP//eG6//TEmbHtroAN8LeKAAAAAAAAAAAAAAAAAPG2iwDxu5AA8biNT/nV + rfb/6cP//+jC///owv/+5sD/6cmk/8+mg//Hmnj/x5p4/9Cmg//pyaX//ubB///owv//6ML//+jD//nV + rPXwuIxP8buPAO+ziwAAAAAA/+jCAP/owgn+4boN9cWbnP3iu///6cP//+nD///qxP/tzqn/y598/8ia + eP/Im3j/yJt4/8iaeP/Ln3z/7c6p///qxP//6cP//+nD//3iu//1xZuc/uG6Df/owgn/6MIA/+jCBf/o + w2H74ryL8s6l4/vbs//73LX//Ny1//TXsf/NtJX/xKqM/8WrjP/Fq4z/xauM/8WrjP/Eqoz/zrSV//TX + sf/83LX/+9y1//vbs//yzqXj++K8i//ow2H/6MIF/+jCAP//3AfGlmwn0Zlt3/C4jP/xuY3/87qO/86g + e/9cTUD/U0Y7/1RHPP9URzz/VEc8/1RHPP9TRjv/XE1A/8+ge//zuo7/8bmN//C4jP/RmW3fxpZsJv// + 3Af/6MIAAAAAALV6TgCrcEMbz5Vp3fC2iv/wt4v/8riM/82eef9WRzv/TD81/01ANv9NQDb/TUA2/0w/ + Nf9KPTP/VUU5/86eef/yuIz/8LeL/++2iv/PlWncq29EG7V6TgAAAAAAAAAAALV6TgCnbEARy5Flye61 + if/wt4v/8biL/+KthP9tWEf/Sz41/01ANv9NQDb/TD81/1RIPv9wZl//gW1d/+Ksg//xuIv/8LeL/+60 + iP/LkWXIqGxAELZ6TgAAAAAAAAAAALR5TgBmKQACwodbnOiugv/wuIz/8LeL//G4i/+yimv/VEU6/0s+ + Nf9MPzb/TUA2/6SdmP/09PT/8OXd//G+l//wt4r/8biM/+iugv/Ch1ubXx8AAbZ5TAAAAAAAAAAAALZ6 + TwC6gFQAt3xQUtmgdPfxuIz/8LeL//C3i//ttYn/sopr/25YR/9XRzv/XExA/9HLxv///////vr3//PG + o//wtor/8biM/9mgdPa3fFBRun9TALV8TgAAAAAAAAAAAAAAAAC1eU0Aq29DD8WLX7Xor4P/8biM//C3 + i//wt4v/8biM/+KthP/Onnn/z595/+zFp//76tz/99rE//G6kP/xt4v/6K+D/8WLXrSrb0MPtXpNAAAA + AAAAAAAAAAAAAAAAAACydkwAuX9SALR5TTvOlGjg7LOH//G4jP/wt4v/8LeL//G4i//yuYz/8riM//C3 + i//wuI3/8LeL//G3i//ss4f/zpRo37R5TTq5flIAtHdLAAAAAAAAAAAAnIt4AJyLeASci3gAsHlOAP// + /wC3fFBRzpRo4Oivg//xuIz/8LiM//C3i//wt4v/8LeL//C3i//wt4v/8biM/+ivg//OlGjgt3xQUP// + /wCveE8AnIt4AJyLeASci3gAnIt4CpyLeGGci3gJnIt4AK5yRACISxcBtHlNO8WLX7baoHT26K+D/+60 + iP/vtor/77aK/+60iP/or4P/2qB09sWLX7W0eU06gUETAa1wRACci3gAnIt4CZyLeGGci3gKnIt4DpyL + eIGci3gMnIt4AAAAAACYXDAAun9TAKpwRA+3fFBRwohcm8uRZcjPlWnbz5Vp28uRZcjCiFybt3xQUKtv + Qw+6flMAl1stAAAAAACci3gAnIt4DJyLeIGci3gOnIt4DpyLeISci3gYnIt4DJyLeAmci3gAnIt4AAAA + AACbYDMAkFYpAqdrPxCrcEQaq3BEGqZrPxCRUygCml0xAAAAAACci3gAnIt4AJyLeAmci3gMnIt4GJyL + eISci3gOnIt4CJyLeICci3iGnIt4g5yLeGGci3gEnIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3gAnIt4BJyLeGGci3iDnIt4hpyLeICci3gInIt4AJyLeAici3gOnIt4DpyL + eAqci3gAnIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACci3gAnIt4AJyL + eAqci3gOnIt4DpyLeAici3gAh//hAAP/wAAHgeAAHgB4ABwAOAC4AB0A8AAPAOAABwDgAAcAgAABAAAA + AACAAAEAwAADAMAAAwDAAAMA4AAHAOAABwDwAA8AuAAdABgAGAAeAHgAB4HgAAP/wACH/+EAKAAAACAA + AABAAAAAAQAgAAAAAAAAEAAArxsAAK8bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyLeCqci3hqnIt4apyL + eGqci3hrnIt4LJyLeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyLeCyci3hrnIt4apyLeGqci3hqnIt4KpyLeACci3gAnIt4aZyL + eKqci3honIt4a5yLeGyci3gsnIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACci3gAnIt4LJyLeGyci3hrnIt4aJyLeKqci3hpnIt4AJyL + eACci3hqnIt4a5yLeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7bCCAP+2zgDvsIQI7rCDFO6w + hBvusIQb7rCDFO+whAj/xnMA7a+FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACci3gAnIt4a5yL + eGqci3gAnIt4AJyLeGqci3hrnIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAA8LOGAO+xgwbvtIgy8LiMdvK9 + kq7zwpfN9MSa3fTEmt3zwpfN8r2SrvC4i3bvtIcx7q+DBu+xhgAAAAAAAAAAAAAAAAAAAAAAAAAAAJyL + eACci3hrnIt4apyLeACci3gAnIt4apyLeGuci3gAAAAAAAAAAAAAAAAA8bWJAPG0hwHvtYky8bqPnPXH + nej51Kz+/N63//3jvP/+5sD//ua///3jvf/83rf/+dSs/vXGnOjxuo+c77WIMfCzhQHwtYgAAAAAAAAA + AAAAAAAAnIt4AJyLeGuci3hqnIt4AJyLeACci3gsnIt4LJyLeAAAAAAAAAAAAO+1igDvtIgG8LaKYvTD + md7617D//uW////pw///6cP//+jC///owv//6ML//+jC///pw///6cP//uW///rXr//0w5je8LaKYe+z + hgbvtYgAAAAAAAAAAACci3gAnIt4LJyLeCyci3gAAAAAAAAAAAAAAAAAAAAAAAAAAADvtYoA7rGGBfC4 + jHX1yZ/y/eK7///pw///6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+nD//3h + u//1yZ/y8LeLdO6yhgXvtooAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8beMAPWO + bwDwtoph9cif8f7kvf//6cP//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+nD//7kvf/1yJ7w8LaKYN6mZgDwuIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPO3 + iwDwt4oA77SIMPTDmNz94br//+nD///owv//6ML//+jC///owv//6cP//+nD///pw///6cP//+nD///p + w///6ML//+jC///owv//6ML//+nD//3huv/zwpjc77WIL/C3iwDxuYcAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA8beLAO+vggXxuo+a+tew///pw///6ML//+jC///owv//6ML//+jC//fdt//oyKP/3ruX/967 + l//oyKP/9923///owv//6ML//+jC///owv//6ML//+nD//rXr//xuo+Z7a+BBfC3iwAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADwt4sA77SIMvXGnOf+5b///+jC///owv//6ML//+jC//7mwf/pyaT/zaOA/8SX + df/DlXP/w5Vz/8SXdf/No4D/6cmk//7nwf//6ML//+jC///owv//6ML//uW///XGnOfvs4cx8LeLAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPG5jgDwt4t0+dSs///pw///6ML//+jC///owv//6ML/6Mij/8aZ + d//Ck3L/w5Ry/8OUcv/DlHL/w5Ry/8KTcv/GmXf/6Mik///owv//6ML//+jC///owv//6cP/+dSr//C2 + i3Pxuo0AAAAAAAAAAAAAAAAA/+jCAP/owiz/6MJs/+fBbPnUq8j94bv//+nD///ow///6MP//+nD//3m + wP/mxKD/3biV/965lf/euZX/3rmV/965lf/euZX/3rmV/924lf/mxKD//ebA///pw///6MP//+jD///p + w//94bv/+dSrx//owWz/6MJs/+jCLP/owgD/6MIA/+jCLP/pw2v22rR537SL5/PIn//2y6L/9sui//bL + ov/3zKL/yquK/5aFcP+XhnD/l4Zw/5eGcP+XhnD/l4Zw/5eGcP+XhnD/l4Zw/5aFcP/Kq4v/98yi//bL + ov/2y6L/9sui//PIn//ftIvn9tu0ef/pw2v/6MIs/+jCAAAAAAAAAAAAs3hLAKxvQxvDiFvd7LOG//C2 + iv/wtor/8LaK//G3i/+VdFr/Rzsy/0k9M/9JPTP/ST0z/0k9M/9JPTP/ST0z/0k9M/9JPTP/Rzsy/5V0 + W//xt4v/8LaK//C2iv/wtor/7LKG/8OIXNyrb0Mbs3hMAAAAAAAAAAAAAAAAAAAAAAC1ek4ArXJGG8WK + Xt3ttIj/8LeL//C3i//wt4v/8riM/5d2XP9LPjX/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9LPjX/l3Zd//K4jP/wt4v/8LeL//C3i//ttIj/xIpe3a1yRhu1ek4AAAAAAAAAAAAAAAAAAAAAALV6 + TgCtckUVwohczuqxhf/wt4v/8LeL//C3i//yuYz/sYlq/05BN/9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9LPjT/Sz40/00/Nf+xiWr/8rmM//C3i//wt4v/8LeL/+qxhf/CiFzNrXJGFLZ6TgAAAAAAAAAAAAAA + AAAAAAAAtXlOAKtvRAi8glau5Kt///G4jP/wt4v/8LeL//G4jP/ap3//ZlJD/0s/Nf9NQDb/TUA2/01A + Nv9NQDb/T0I4/4B3cP+vqqb/oZOJ/9uqhP/xuIv/8LeL//C3i//xuIz/5Kt//7yCVa2scEIHtnpNAAAA + AAAAAAAAAAAAAAAAAACwd08Aun9SALZ7T3nZn3P/8biM//C3i//wt4v/8LeL//G3i/+yiWr/VUY6/0s/ + Nf9NQDb/TUA2/0s+NP92bGT/7evq///////+/Pr/9dG1//C2iv/wt4v/8LeL//G4jP/Yn3P/tntPd7h/ + UwC7dUYAAAAAAAAAAAAAAAAAAAAAAAAAAAC1e04AsXZKNciOYunttIj/8LeL//C3i//wt4v/8LeL/+21 + if+xiWr/ZlJD/05BN/9LPzX/SDsx/5CIgv/+/v7////////////43sv/8LaK//C3i//wt4v/7bSI/8iO + Yumxdko0tXpOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALV6TgCscUUGun9Tn92kd//xuIz/8LeL//C3 + i//wt4v/8LeL//G3i//ap4D/sopq/5l3Xf+Ydlz/w6GG//vx6v///////vj0//TMrP/wtor/8LeL//G4 + jP/do3f/un9Tna1xQwa2ek0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuHpLALR5TgCyd0szxIld3+mv + g//xuIz/8LeL//C3i//wt4v/8LeL//G4jP/yuYz/8riM//K4jP/xuIz/88Of//bSt//zyKb/8LiM//C3 + i//xuIz/6K+D/8SJXd6yd0sytHlNALV8TgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtntPAKpu + QAG1ek5ly5Fl8+uyhv/xuIz/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wtor/8LaJ//C2 + iv/wt4v/8biM/+uyhv/LkWXytXlNZKBrNAC1e00AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAtXpOALJ3Sge2e096y5Fl8+mwhP/xuIz/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//G4jP/psIT/y5Fl87Z7T3mydUkGtXlNAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyL + eCyci3gsnIt4AAAAAAAAAAAAs3dKALF1SAe1ek1lxIpe4N2jd//ttIj/8biM//G4jP/wt4v/8LeL//C3 + i//wt4v/8biM//G4jP/ttIj/3aN3/8SKXt+1ek1ksHZIB7J4SwAAAAAAAAAAAJyLeACci3gsnIt4LJyL + eACci3gAnIt4apyLeGuci3gAAAAAAAAAAAAAAAAAsXdLAK50SQKyd0szuX9TncmOYunZn3P+5Kt//+qx + hf/ttIf/7bSH/+qxhf/kq3//2Z9z/siOYum6f1OdsndKM692RwKyeEoAAAAAAAAAAAAAAAAAnIt4AJyL + eGuci3hqnIt4AJyLeACci3hqnIt4a5yLeAAAAAAAAAAAAAAAAAAAAAAAAAAAAK90SQCscEUGsXZKM7Z7 + T3e9glaswohbzMSKXtvEil7bwohbzL2CVqy2e092sXZKM61wRAawdEgAAAAAAAAAAAAAAAAAAAAAAAAA + AACci3gAnIt4a5yLeGqci3gAnIt4AJyLeGqci3hrnIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACmcEQA/2kzAKpwRAetcUUUrXJGGq1yRhqscUUUq29CB7mkeACqbEAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAJyLeACci3hrnIt4apyLeACci3gAnIt4aZyLeKqci3honIt4a5yLeGyci3gsnIt4AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACci3gAnIt4LJyLeGyci3hrnIt4aJyLeKqci3hpnIt4AJyLeACci3gqnIt4apyLeGqci3hqnIt4a5yL + eCyci3gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAJyLeACci3gsnIt4a5yLeGqci3hqnIt4apyLeCqci3gAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////gf//gYH/ + /4Gf+B/5n8AD+Z8AAPmeAAB5/AAAP/wAAD/4AAAf8AAAD/AAAA/wAAAPgAAAAYAAAAHgAAAH4AAAB+AA + AAfgAAAH8AAAD/AAAA/wAAAP+AAAH/gAAD/8AAA/ngAAeZ8AAPmfwAP5n/gf+YH//4GB//+B/////ygA + AAAwAAAAYAAAAAEAIAAAAAAAACQAAK8bAACvGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAnIt4AJyLeFqci3idnIt4npyLeJ2ci3idnIt4nZyLeKGci3henIt4AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyLeF6ci3ihnIt4nZyLeJ2ci3idnIt4npyL + eJ2ci3hanIt4AAAAAAAAAAAAnIt4AJyLeJqci3jdnIt4nJyLeJ2ci3idnIt4nZyLeKGci3henIt4AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyLeF6ci3ihnIt4nZyL + eJ2ci3idnIt4nJyLeN2ci3ianIt4AAAAAAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAAAAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwuosA8LuLAfG3 + jAjxt4sQ8LaLFfC3ixnwt4sZ8LaLFfG3ixDxto0H8LeTAfC3kQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAAAAAAAAAAnIt4AJyL + eJ2ci3idnIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwu48A8JBpAPG1 + iwrvtYk277WJavC2i5vwt4u88LeM0vC4jOHwuIzh8LeM0vC3i7zwtoub77WJau+1iDbxuIgK8LGUAPC3 + hgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAA + AAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8bWNAPaw + mADwt4sX8LaKXfC3i7PyvJHk88OY/PbLov/506r/+tmx//vctP/73LT/+tmx//nTq//2y6L/88KX/PK8 + keTwt4qz8LaKXPC3ihb3v4EA8biIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyL + eJ2ci3idnIt4AAAAAAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADxuY0A8rmNCvC2ilTwt4u+8r6T+PfOpf/73LX//uW////owv//6ML//+nD///pw///6cP//+nD///o + wv//6ML//uW///vctf/3zqX/8r+T+PC3i73wtopT8biLCfG4jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAAAAAAAAAAnIt4AJyLeF6ci3henIt4AAAAAAAAAAAAAAAAAAAA + AAAAAAAA97uIAOuzjADwtoob8LaKkfG8ke/3zaT//eC5///owv//6cP//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///pw///6MH//eC5//fNpP/xvJDv8LaKj/G2iRrus4wA97uEAAAA + AAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyLeF6ci3henIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADrjKAA8b2IAPC3jCrwt4u088KX+/vas///58H//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///nwf/72rL/88KX+/C3 + irPvtoop8reFAMmq7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxt4sA77aLKfC3i8D1xpz//eG6///pw///6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6cP//eG6//XGnP/wt4u+77aKKPG3igDut4sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC3jADwtosb8LeLsfXFm//94rv//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC//3iu//0xZv/8LaLr++2jBrvt40AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8beLAPK4jAjwtoqM88GX/P3g + uf//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///ow//94Lj/88GW/PC2iovxuooH8LiLAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD1t4sA7reKAPC2 + ilDxu5Du+9qy///pw///6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6cP//+nD///q + xP//6sT//+nD///pw///6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6cP/+9mx//G7 + j+3wt4pP7raMAPS5hgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADxt4sA8LaKFvC3i7z3zaT//+fB///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+nD//7n + wf/23Lf/7c+q/+jJpP/oyaT/7c+q//bct//+58H//+nD///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+fB//fNo//wt4u677eKFvC3igAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADvt4sA8LaKXfK/lPj94Lr//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML/89iy/9y4lP/NooD/x5p4/8SWdP/ElnT/x5p4/82jgP/duJT/9Niy///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC//3guf/yvpP38LaKW++3iwDwt4sAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPG3jQDxt4wK8LeLs/fOpf//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC//7mwP/pyaX/zKF//8OVc//DlXP/xJZ0/8SWdP/ElnT/xJZ0/8OVc//ElXP/zKF//+nK + pf/+5sD//+jC///owv//6ML//+jC///owv//6ML//+jC///owv/3zqX/8LaKsfC0jAnws40AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC3iwDwtYo28byQ4/vctP//6cP//+jC///o + wv//6ML//+jC///owv//6ML//+jC/+rKpv/JnHr/w5Vz/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SW + dP/ElnT/w5Vz/8mdev/qy6b//+jC///owv//6ML//+jC///owv//6ML//+jC///pw//727T/8byQ4u+1 + ijXvtowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA76uAAPC9kQDvtIdn88KX/f7l + v///6ML//+jC///owv//6ML//+jC///owv//6cP/89ey/8ygfv/DlHL/w5Vz/8OVc//DlXP/w5Vz/8OV + c//DlXP/w5Vz/8OVc//DlXP/w5Vz/8OUcv/MoX7/89ey///pw///6ML//+jC///owv//6ML//+jC///o + wv/+5b7/88KX/e+zh2XxvpQA7al6AAAAAAAAAAAAAAAAAAAAAAAAAAAA/+jCAP/owl7/6MKh/+jCnf/o + wp783bbP/Ny1///pw///6cP//+nD///pw///6cP//+nD///pw///6sT/+N23/+vKpf/ryqb/68qm/+vK + pv/ryqb/68qm/+vKpv/ryqb/68qm/+vKpv/ryqb/68qm/+vKpv/ryqX/+N24///qxP//6cP//+nD///p + w///6cP//+nD///pw///6cP//Ny1//zdts//6MKe/+jCnf/owqH/6MJe/+jCAAAAAAAAAAAA/+jCAP/o + wl7/6MKh/+jCnfvjvaXmw5vs8Myj//nUrP/51Kz/+dSs//nUrP/51Kz/+dSs//rVrP/qyqT/vqqO/7il + i/+4pov/uKaL/7imi/+4pov/uKaL/7imi/+4pov/uKaL/7imi/+4pov/uKaL/7imi/+4pYv/v6qO/+vK + pP/61az/+dSs//nUrP/51Kz/+dSs//nUrP/51Kz/8Myj/+bDm+z8472l/+jCnf/owqH/6MJe/+jCAAAA + AAAAAAAAAAAAAAAAAAAAAAAAtHhMALR4TBa1eU3U3KJ1//C3i//wtor/8LaK//C2iv/wtor/8LaK//K4 + jP+/knD/U0Q5/0o9NP9KPjT/Sj40/0o+NP9KPjT/Sj40/0o+NP9KPjT/Sj40/0o+NP9KPjT/Sj40/0o+ + NP9KPTT/VEQ5/7+Tcf/yuIz/8LaK//C2iv/wtor/8LaK//C2iv/wt4v/3KF1/7V5TdO0eEwWtHhMAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtXpOALV6Thm2e0/g4Kd6//G4jP/wt4v/8LeL//C3 + i//wt4v/8LeL//O5jf+yimr/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/7KKa//zuY3/8LeL//C3i//wt4v/8LeL//C3i//xuIz/4KZ7/7Z7 + T9+1ek4ZtXpOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtXpOALV6Thm2e0/g4Kd7//G4 + jP/wt4v/8LeL//C3i//wt4v/8LeL//O5jf+zi2v/TkE2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TkE3/7SLa//zuY3/8LeL//C3i//wt4v/8LeL//C3 + i//xuIz/4Kd7/7Z7T9+1ek4ZtXpOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtXpOALV6 + Tha2e0/V3qR4//G4jP/wt4v/8LeL//C3i//wt4v/8LeL//O5jP/AlHL/VkY6/0w/Nv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9MPzb/Vkc7/8CUcv/zuYz/8LeL//C3 + i//wt4v/8LeL//C3i//xuIz/3aR4/7Z7T9O1ek4WtXpOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAtXpOALV6TRC1ek6+155y//C3i//wt4v/8LeL//C3i//wt4v/8LeL//G4jP/Zpn//Z1ND/0s/ + Nf9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9MPzX/Sj0z/0k8Mv9JPDL/Z1NE/9qn + gP/xuIz/8LeL//C3i//wt4v/8LeL//C3i//wt4v/151x/7Z7T7y2e08QtnpOAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAtXlOALZ5Tge1eU2azpRo//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//utor/kHFZ/0w/Nf9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/0w/Nf9XS0L/gXhx/5KK + hP94b2f/l3df/+61if/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/zpRo/7R6TZm1ekwHtXpNAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs3lPALd7TQCzeExtw4ld/+20iP/wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//yuIz/0J96/2NQQf9MPzX/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TD81/1pO + Rf+4sq7/9vX0///////w7+7/69C8//C5jv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//ts4j/w4ld/rN4 + TGuyfFIAuHhKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALV6TgCzeEw7u4BU5uKo + fP/xuIz/8LeL//C3i//wt4v/8LeL//C3i//wt4v/77aL/7OKbP9ZSTz/TD81/01ANv9NQDb/TUA2/01A + Nv9NQDb/Sz40/5OLhf/6+fn//////////////////vj1//TIp//wtor/8LeL//C3i//wt4v/8LeL//G4 + jP/hqHz/u4BU5bN4TDm1e04AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALd6 + UAC2eU8MtXpOuNGYbP/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+20if+yimr/YlBB/0w/ + Nf9LPzX/TD82/01ANv9NQDb/Sj0z/7GsqP////////////////////////////bSt//wton/8LeL//C3 + i//wt4v/8LeL//C3i//Rl2v/tXpOt7V8Tgu2fk8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC2eU0AtHlNY7+FWfnor4L/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//vt4v/z596/5BxWf9oVET/V0c7/09CN/9PQjf/VUU5/6+jmv/+/v3//////////////////vv4//TM + rP/wton/8LeL//C3i//wt4v/8LeL/+eugv+/hFj5tHlMYrN6TwC2ek0AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2ek4AtnlNGbZ7T8HRl2v/77aK//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8riM/+62iv/bp4D/wZVz/7WMbP+1jGz/wZRy/+Czkf/66+D///7+//// + /////fz/+ePR//G7kv/wt4v/8LeL//C3i//wt4v/77aK/9CWav+2e0+/tHlNGLV6TgAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ekkAsnlRALR4TFa7gFTw4Kd6//G4 + jP/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//xuIz/8rmM//O5jf/zuY3/8rmM//G3 + i//ywJr/99e///jfzP/207n/8b2U//C3iv/wt4v/8LeL//C3i//xuIz/4KZ6/7uAVO+0eU1UtXhNALV8 + TgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtXpOALR5 + Twm0eU2Sw4hc/eivg//wuIv/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4r/8LaK//C2if/wtor/8LeL//C3i//wt4v/8LeL//C3jP/or4P/w4hc/LR5 + TZC1eUwJtXpNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAALZ7TQC2ek0etXpOuMiOYv/psIT/8LeM//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LiM/+mw + hP/IjWH/tXpOtrR5TB21eU0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0eE0AtXpOMLZ6T8bIjmL/6K+D//G4jP/wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//xuIz/6K+D/8iOYv+1e07FtXlOLrN4TAC3e08AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8elcAr3hFALV5TS+1ek66xIld/OGn + e//vtor/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL/++2iv/hp3v/xIld+7V6Tbm0ek0utINTALVvRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyLeF6ci3henIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAu31GAK94 + VQC1ek0dtHlNlLuAVfHRl2v/6K6C//C3i//xuIz/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//G4jP/wt4v/6K6C/9GXav+7gVTxtHlNkrR5TBy0f08AtnNKAAAAAAAAAAAAAAAAAAAA + AAAAAAAAnIt4AJyLeF6ci3henIt4AAAAAAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC1eFAAtHlPC7R5TVa1e0/Av4RY+NKYbP/iqX3/7bSI//C3i//wt4v/8biM//G4 + jP/xuIz/8biM//C3i//wt4v/7bSI/+Kpff/SmG3/v4RY+LZ6Tr+0eUxVtXtNCrR6TgAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAAAAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsnxQAK+CVgGzek4YtHlNX7V6Tra7gVXlxIld/M6U + aP/XnXH/3aN3/9+mev/fpnr/3aN3/9edcf/OlGj/w4ld/LuBVeW1ek61tHlNXrV4TReweVUAs3hPAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAAAAAAAAAAnIt4AJyL + eJ2ci3idnIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5ek4A////ALR5 + SwuzeEs4s3hMabR5TZe1ek66tntP07Z7T9u2e0/btntP0rV6Trq0eU2Xs3hMaLN4TDe0fEwK/1P/ALV6 + TgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAA + AAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACugVUArINXALN6TQe1ek0PtXpOFrV6Thi1ek4YtXpOFrR6TQ+0eEwHunZKALh3 + SwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyL + eJ2ci3idnIt4AAAAAAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAnIt4AJyLeJ2ci3idnIt4AAAAAAAAAAAAnIt4AJyLeJqci3jdnIt4nJyLeJ2ci3idnIt4nZyL + eKGci3henIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4AJyL + eF6ci3ihnIt4nZyLeJ2ci3idnIt4nJyLeN2ci3ianIt4AAAAAAAAAAAAnIt4AJyLeFqci3idnIt4npyL + eJ2ci3idnIt4nZyLeKGci3henIt4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAnIt4AJyLeF6ci3ihnIt4nZyLeJ2ci3idnIt4npyLeJ2ci3hanIt4AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD///////8AAP///////wAAwD////wDAADAP////AMAAM//////8wAAz//gB//z + AADP/4AB//MAAM/+AAB/8wAAz/gAAB/zAADP8AAAD/MAAP/gAAAH/wAA/8AAAAP/AAD/gAAAAf8AAP8A + AAAA/wAA/wAAAAD/AAD+AAAAAH8AAP4AAAAAfwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAAwAAAAAAD + AADAAAAAAAMAAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPwA + AAAAPwAA/AAAAAA/AAD8AAAAAD8AAP4AAAAAfwAA/gAAAAB/AAD/AAAAAP8AAP8AAAAA/wAA/4AAAAH/ + AAD/wAAAA/8AAP/gAAAH/wAAz/AAAA/zAADP+AAAH/MAAM/8AAB/8wAAz/+AAf/zAADP//AP//MAAM// + ////8wAAwD////wDAADAP////AMAAP///////wAA////////AAAoAAAAUAAAAKAAAAABACAAAAAAAABk + AACvGwAArxsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4/5yL + eP+ci3j/nIt4/5yLeP+ci3j/nIt4/5yLeP+ci3j/nIt4/5yLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4/5yL + eP+ci3j/nIt4/5yLeP+ci3j/nIt4/5yLeP+ci3j/nIt4/5yLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/5yLeP+ci3j/nIt4/5yLeP+ci3j/nIt4/5yLeP+ci3j/nIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/5yLeP+ci3j/nIt4/5yLeP+ci3j/nIt4/5yLeP+ci3j/nIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOazgArwuItE8baMfvG4 + i6Hwt4vA8LaL2vC3i+zwt4v+8LeL/vC3i+zwtova8LeLwPG4i6Hxtox+8LeNQ+azgAoAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8rOMFPC3 + i2fwt4u98LeL+fC3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL+fC3irzwtotl8ryGEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA8reLOfC4jKjwt4v68LeL//C3i//wuIv/88GW//bLov/51az/+9y0//3ivP/+5b///+jC///o + wv/+5b///eO8//vctP/51a3/9sui//PAlf/wuIv/8LeL//C3i//wt4v68LeKpvG1izcAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA8baNOPC4i8Hwt4v/8LeL//C3jP/1x53/+tev//7lvv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC//7lvv/61q//9ced//C3 + jP/wt4v/8LeL//C3i7/xuIk2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9LyQF/C3i6nwt4v+8LeL//G5jv/3z6b//eO8///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//eO8//fOpf/xuo7/8LeL//C3i/7wt4qm87mLFgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPG3i1jwt4vs8LeL//C4 + jf/3zqX//uW+///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC//7lvv/3zaX/8LiM//C3 + i//wt4vq8LeKVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+/ + gATvtouT8LeL//C3i//0xZv//eG7///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv/94br/9MSZ//C3i//wt4v/8baKkP+/gAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADttpIO8LeMvvC3i//wuIz/+dOq///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML/+NKq//C4jP/wt4v/8LeKvOux + iQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA76+PEPC4i8jwt4v/8buP//zdtv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//N22//G7kP/wt4v/8LeLxu22kg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOuxiQ3wt4vK8LeL//K/ + k//94bv//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//eG7//K+kv/wt4v/8LeKx+i5iwsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD/qqoD8LeLrvC3i//yu5H//eK7///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//eG5//G7 + kP/wt4v/8LaLrP+qqgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC3i5jwt4v/8bqP//3huv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//eG6//G6jv/wt4v/77eMlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxt4xH8LeL/vC4i//72rL//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML/+9qx//C4i//wt4v+8LmMRQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA87mLFvC3 + i+vwt4v/+NKq///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML/+NGo//C3i//wt4vp8ryGEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADwt4qZ8LeL//PCl///58L//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//58H/88CW//C3i//wt4uVAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8reLOfC3i/7wuI3//eG6///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv/94br/8LiM//C3 + i/3xuIk2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwt4u48LeL//fN + pf//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML/8dSw/9+7mP/Tq4f/yp98/8WYdv/FmHb/yp98/9OriP/fvJj/8dSv///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv/3zaP/8LeL/++3i7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA8reLOfC3i//xuo7//ubA///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6MH/6sun/82igP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SW + dP/ElnT/xJZ0/8SWdP/ElnT/zqOB/+vMp///6MH//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC//7lv//xuo7/8LeL//G3jDUAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwt4ur8LeL//fOpf//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML/99y3/9Gohf/ElnT/xJZ0/8SW + dP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/9Gohf/33bf//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC//fN + pf/wt4v/8LeKpgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8biOEvC3i/jwt4z//eO8///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC/+7R + q//Hmnj/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SW + dP/ElnT/xJZ0/8ebef/v0a3//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//eO8//C3i//wt4v376+PEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADxt4xq8LeL//TFm///6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv/v0q3/xph2/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SW + dP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8aZd//w067//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML/9MWa//C3i//wt4xmAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC3i7fwt4v/+tev///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML/+N+5/8mcev/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SW + dP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8md + ev/537r//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv/61q7/8LeL/++2jLMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/tpIH8LeL8/C3i//+5L3//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owf/RqIb/xJZ0/8SW + dP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SW + dP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/9Kphv//6MH//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC//7jvf/wt4v/8LeL8v+qgAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO+3 + i0Dwt4v/88CW///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML/6cml/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SW + dP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/8SWdP/ElnT/xJZ0/+rKpv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC//PBlf/wt4v/7riKPQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD/6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///owv//6ML//+jC///o + wv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALV6 + Tsi1ek7/4ql8//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i/+beV7/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv+ceV//8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+KofP+1ek7/tXpOxQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAtXpP4LV6Tv/mrYD/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL/3ZeS/9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/3deTP/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/5qyA/7V6Tv+1ek7eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1ek3ttXpO/+qxhP/wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/X00//01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/YE5A//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsIX/tXpO/7V6TusAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALV6 + Tvq1ek7/7rWJ//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i/9TRDj/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9TRDn/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+61if+1ek7/tXpO+AAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAtXpO+bV6Tv/utor/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL/1RGOv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/1VGOv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/7raK/7V6Tv+1ek74AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1ek3ttXpO/+yzh//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/ZVJC/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/ZlJD//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//rsof/tXpO/7V6TusAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALV6 + T+C1ek7/6bCD//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i/92Xkv/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv93Xkz/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/+ivg/+1ek7/tXpO3QAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAtXpNybV6Tv/iqX3/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL/5t5Xv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/517YP/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/4ql8/7V6Tv+2ek/GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC1ek6jtXpO/9qgdP/wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/zp55/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/0KB7//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//Zn3P/tXpO/7Z7TqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALZ5 + TXq1ek7/z5Vp//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//vtor/Z1NE/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/2hTRP/wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/86Uaf+1ek7/tHpNdwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAtHpPR7V6Tv/Ch1r/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i/+3jW3/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/h353/9TRz//5+fn/+fn5/9TR + zv+GfXb/uY9u//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/wYda/7V6Tv+3ekxDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxdk4NtXpO+7Z7T//ttIj/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/++2iv9wWUj/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/6eh + nP/////////////////////////////////32sT/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL/+2ziP+2e0//tXpO+bl0RgsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC0ek7DtXpO/92jd//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL/9Wjff9WRjv/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv+DenP////////////////////////////////////////////0zK3/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/26J2/7V6Tv+1ek6+AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAALV6TnW1ek7/yI5i//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/8eYdv9QQzj/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/9TRz/////////////////////////////// + //////////////vt4v/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//HjWH/tXpO/7R7TXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuHpSGbV6Tvy2e0//67KH//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/7+T + cf9URjr/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/9/f2//// + /////////////////////////////////////////vv5//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/67KG/7Z7T/+1ek77uYBRFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAtXtOt7V6Tv/Tmm7/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL/9emfv9tV0b/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/01A + Nv9NQDb/TUA2/01ANv/39/b////////////////////////////////////////////++/n/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//SmW3/tXpO/7V6TrQAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0ek9HtXpO/7qAVP/utYn/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL/++2iv+4jm7/ZlFD/01A + Nv9NQDb/TUA2/01ANv9NQDb/TUA2/01ANv9NQDb/TUA2/9TRz/////////////////////////////// + //////////////vt4v/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/7rWJ/7p/ + U/+1ek7/t3pMQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2ek/GtXpO/9Sb + bv/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/0aB6/599Yf95YU3/aVVF/1tKPf9bSj3/aVVF/3lhTf+gfGH/4MCm//// + ////////////////////////////////////////9c6v//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//TmW3/tXpO/7V6TsIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAALd6TEO1ek7/t31R/+mwg//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/+N/M//////////////////////////////////jeyv/wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6K+D/7d8UP+1ek7+tXtOPgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALV5Tai1ek7/x41g//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/9c6x//vu4//++vf//vr3//vt + 4//1zrD/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C2iv/GjF//tXpO/7V6 + TqMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsXZOGrV6 + TvC1ek7/155x//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/1p1x/7V6Tv+1ek7vtXVKGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAtntPV7V6Tv+2e1D/5at///C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL/+Wrf/+2fFD/tXpO/7V7TVMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtntOoLV6Tv+9gVb/6rGE//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//qsIX/vIJV/7V6Tv+1ek2bAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAC/gEAItXpOwrV6Tv+9g1f/6rGF//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6rCF/72C + Vv+1ek7/tnlNv7ZtSQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5gFEWtXpO2rV6Tv+/hFn/6rGF//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL/+qxhf+/hVn/tXpO/7V6TtW4gFUSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4elIZtXlO0rV6 + Tv+7gVT/5q2A//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//lq3//u4FU/7V6Tv+1e07QtXVKGAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAC2eUkVtXpOyrV6Tv+4fFD+2qF1//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/26F1/7h8UP61ek7/tXpNybOA + TRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/gEAItXtOnLV6Tv+1ek7/yI1h/+qw + hP/wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/6bCD/8eN + Yf+1ek7/tXpO/7V6TZi2bUkHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAtHpOXLR6TvO1ek7/t3xQ/9Sbbv/utYn/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/7rSI/9SZbf+3fVH/tXpO/7V6TvK1e01ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtnZSHLV6Tqm1ek7/tXpO/7l/U//Vmm//7bOI//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/7bOI/9Sab/+5f1P/tXpO/7V6Tv61ek2ls3tMGwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALN8 + UEC1ek7BtXpO/7V6Tv+3fFD/yY5i/9+lef/utIj/8LeL//C3i//wt4v/8LeL//C3i//wt4v/8LeL//C3 + i//wt4v/8LeL//C3i//wt4v/8LeL//C3i//utIj/3qR4/8mPY/+2e1D/tXpO/7V6Tv+2eU2/tHlPPQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0eU89tnpOsbV6Tvq1ek7/tXpO/7Z7T//DiFz/z5Vp/9if + cv/hqHv/6K6C/+qxhP/ss4f/7LOH/+qxhP/oroL/4ah7/9iec//PlWn/wodc/7Z7T/+1ek7/tXpO/7V6 + Tvq1ek6wtnlOOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtnlJFbR6 + TW21ek6+tXpO97V6Tv+1ek7/tXpO/7V6Tv+1ek7/tXpO/7V6Tv+1ek7/tXpO/7V6Tv+1ek7/tXpO/7V6 + Tv+1ek7/tXpO9rR6T7y2e05ss4BNFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/gEAIs3xQQLR5TXS1ek2btXpOxLV6Tt21ek7mtXpO7rV6 + Tu61ek7mtXpO3bR6TsO1ek2btHlNdLZ5TT+2bUkHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/5yLeP+ci3j/nIt4/5yLeP+ci3j/nIt4/5yLeP+ci3j/nIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACci3j/nIt4/5yLeP+ci3j/nIt4/5yLeP+ci3j/nIt4/5yLeP+ci3j/nIt4/5yL + eP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/nIt4/5yLeP+ci3j/nIt4/5yL + eP+ci3j/nIt4/5yLeP+ci3j/nIt4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyLeP+ci3j/nIt4/5yLeP+ci3j/nIt4/5yL + eP+ci3j/nIt4/5yLeP+ci3j/nIt4/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + //////////8AAP////////////8AAP////////////8AAP////////////8AAPAA////////AA8AAPAA + ////////AA8AAPP//////////88AAPP//////////88AAPP//////////88AAPP//////////88AAPP/ + //8AAP///88AAPP///gAAB///88AAPP//+AAAAf//88AAPP//4AAAAH//88AAPP//gAAAAB//88AAPP/ + /AAAAAA//88AAP//8AAAAAAP//8AAP//4AAAAAAH//8AAP//wAAAAAAD//8AAP//gAAAAAAB//8AAP// + AAAAAAAA//8AAP//AAAAAAAA//8AAP/+AAAAAAAAf/8AAP/8AAAAAAAAP/8AAP/8AAAAAAAAP/8AAP/4 + AAAAAAAAH/8AAP/4AAAAAAAAH/8AAP/wAAAAAAAAD/8AAP/wAAAAAAAAD/8AAP/gAAAAAAAAB/8AAP/g + AAAAAAAAB/8AAP/gAAAAAAAAB/8AAP/AAAAAAAAAA/8AAP/AAAAAAAAAA/8AAPAAAAAAAAAAAA8AAPAA + AAAAAAAAAA8AAP/AAAAAAAAAA/8AAP/AAAAAAAAAA/8AAP/AAAAAAAAAA/8AAP/AAAAAAAAAA/8AAP/A + AAAAAAAAA/8AAP/AAAAAAAAAA/8AAP/AAAAAAAAAA/8AAP/AAAAAAAAAA/8AAP/AAAAAAAAAA/8AAP/A + AAAAAAAAA/8AAP/AAAAAAAAAA/8AAP/AAAAAAAAAA/8AAP/gAAAAAAAAB/8AAP/gAAAAAAAAB/8AAP/g + AAAAAAAAB/8AAP/wAAAAAAAAD/8AAP/wAAAAAAAAD/8AAP/4AAAAAAAAH/8AAP/4AAAAAAAAH/8AAP/8 + AAAAAAAAP/8AAP/8AAAAAAAAP/8AAP/+AAAAAAAAf/8AAP//AAAAAAAA//8AAP//AAAAAAAA//8AAP// + gAAAAAAB//8AAP//wAAAAAAD//8AAP//4AAAAAAH//8AAP//8AAAAAAP//8AAPP//AAAAAA//88AAPP/ + /gAAAAB//88AAPP//4AAAAH//88AAPP//+AAAAf//88AAPP///gAAB///88AAPP///8AAP///88AAPP/ + /////////88AAPP//////////88AAPP//////////88AAPP//////////88AAPAA////////AA8AAPAA + ////////AA8AAP////////////8AAP////////////8AAP////////////8AAP////////////8AAA== + + + \ No newline at end of file diff --git a/QRValidation/Project/icons8_iris_scan_80_XQd_icon.ico b/QRValidation/Project/icons8_iris_scan_80_XQd_icon.ico new file mode 100644 index 0000000..70c3385 Binary files /dev/null and b/QRValidation/Project/icons8_iris_scan_80_XQd_icon.ico differ diff --git a/QRValidation/Project/packages.config b/QRValidation/Project/packages.config new file mode 100644 index 0000000..3b927c9 --- /dev/null +++ b/QRValidation/Project/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/QRValidation/ReadMe.txt b/QRValidation/ReadMe.txt new file mode 100644 index 0000000..78a2cfc --- /dev/null +++ b/QRValidation/ReadMe.txt @@ -0,0 +1,98 @@ + +M1 : Y-PICK (Pitch:20mm) - 0.001 mm +M2 : Z-FRONT (Pitch:10mm) - 0.001 mm +M3 : Z-REAR (Pitch:10mm) - 0.001 mm +M4 : X-FRONT (Pitch:25mm) - 0.001 mm +M5 : X-REAR (Pitch:25mm) - 0.001 mm + + +[δ] + ⱸ ʿ + +[δ] + ۾ϸ ϱ + + ÷ ߻ (draw cv item - ÷ ) + ش X iLock ϵ ϱ - Է ص, ϰ Ѵ + +210112 chi (Ʈ ) +210110 chi * active ͵ δ ۵Ǵ + * Ʈ Ҵ(lot/cms۾) δ Ͱ 켱 ǵ (޸麸ٴ ո 켱) + * ش X iLock ϵ ϱ - Է ص, ϰ Ѵ + * draw cvitem lock ü + + cim ڷ ȸ. ð Ųٷ , crash (ð ȸ ȵǰ ) + +201221 chi ڵ Ʈ / DLL Ʈϴ ׽Ʈ ߰ +201217 chi ڵй ǥ +201207 chi ޴ Ʈ +201130 chi ڵ,mnbr ⺻ Է +201127 chi δƮ Ŭ ȭ鿡 active θ ǥѴ + ۾ ȭ鿡 11,12 ȣ /Ʒ ٲ ִ + ű۾۽ - ̾ Ѵ.<--ڵ忡 ־ + CMS۾ + ۽ SID ؼ + + +201125 chi ڵ忡 LOT Ȯ ʰ ־, ۾Ϸ sid/lot/cms ޼ и, ȭ鿡 ۾ ǥ(sid/lot/cms) + sid ۾ ǰ + LOT۾ÿ sid reference ϰ + +201124 chi cms/cmw ߰ +201120 chi ۾۽ CMS ۾׸߰( ڵ ) , sid ref ױ +201111 chi ڵ尪 ߰ - ڵ ø  +201105 chi resultview Ʈ +201029 chi Ϻȭ , Ϻ⿡ ߰ + sidϿ ° 1° ý óѴ(1ȸ ڿ ˷ش) +201026 chi DoubleItemCheck Ȱ ȭ 0,1 ְԵǸ óϸ, ڵ sps ۾ ,, ڵ带 ϴ ŸӾƿϴ ΰǿ ڵ带 Է޴ +201022 chi Խ. X и ڵ ȭ + Ը + ۾۽ и +201021 chi Ʈ α ߰ - ׿ ߰ +201020 chi δǥñ. ü ǥѴ + δ Ÿ̸ ̰ Ѵ + ȭ鿡 ǥ + ϴ ߰ + +201016 chi űԼ + ҰŴ SPS + ۾۽ ¥ + ȯ漳 SAP SID ǥ + +201015 chi ۾ ģ Ͱ ٽ Ǵ° + ۼҰ۾ sps ϰ +201014 chi ȣ ÿϷ ¶, ٽ ʰѴ (double error check) + ε Ƣ ڷᰡ ̸ 찡 ־ . ش 1 üũϰ( 2 üũ) + ȯ漳 ο +201013 chi üũ. -1 üũϰ + USERSID - δǥø޼ + CONV_DET1B ߰ (Or) + ޼ unloaderfull ׸ ߰ + ִ ĭ ߰ + δ Ŭ Ŭ ʰѴ => װ õǾ, 夿 +201005 chi sid Ÿ (ΰ:߿) + δǥ , ġ ϰ ǥ +200921 chi δ Է , ( Ÿ̹ 2ʿ 3.5ʷ ) + ۾ȭ type , sid Ȯ ϰ + ȭ鿡 üŬ Ͽ ڵ qty ̰ + ִʰ ذ/ִ밪 ޼ ǥ + Ʈ з н ڼ + ۾ҽ ϵ ڷᰡ ֵ ڷḦ ذϵ ؾ + ǥ + chi sid ֵ ɼ ó ʿ(⺻ ) + ŵ Ͽ ǥõ ʰ ־. - ߰ ʿ + +200909 chi ڸ ͺ̽ ҷ + δ δ Ī +200824 chi ڵ qty ǥõǰ +200810 chi ڵ SID Ͽ ó(ɼ) +200806 chi barcode ŸӾƿ 13ġ 7ġ + ε ׽Ʈ, 3ȸ õ +200729 chi jobend ڵ߰ +200728 chi sid ߰ + ߰ + Ȩ üũ ߰ +200720 chi ⱸ 2 ó +200712 chi Y-P ߿ off ǥ +200709 chi (Z Ʒ ¿. ۾ ߸ Ʈ ٴڱ ̵ϴ ߻) + Ʒ Z Detect Ǿ. Ʈ Ǵ° Ǵܵ (ذ) \ No newline at end of file diff --git a/QRValidation/Sub/arImageViewer.EVision b/QRValidation/Sub/arImageViewer.EVision new file mode 160000 index 0000000..7921942 --- /dev/null +++ b/QRValidation/Sub/arImageViewer.EVision @@ -0,0 +1 @@ +Subproject commit 79219428843677c79c19d91698cb2eb25b01635f diff --git a/QRValidation/Sub/arMCFrame b/QRValidation/Sub/arMCFrame new file mode 160000 index 0000000..a398dc0 --- /dev/null +++ b/QRValidation/Sub/arMCFrame @@ -0,0 +1 @@ +Subproject commit a398dc0ae44ab17f278f05274e2cb744736f27be diff --git a/QRValidation/Sub/arRS232 b/QRValidation/Sub/arRS232 new file mode 160000 index 0000000..aa13b53 --- /dev/null +++ b/QRValidation/Sub/arRS232 @@ -0,0 +1 @@ +Subproject commit aa13b53aa559a5daea78169268584cda5d3f2c30 diff --git a/QRValidation/Test/Emulator_PLC/Emulator_PLC.sln b/QRValidation/Test/Emulator_PLC/Emulator_PLC.sln new file mode 100644 index 0000000..d50d3d6 --- /dev/null +++ b/QRValidation/Test/Emulator_PLC/Emulator_PLC.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.902 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emulator_PLC", "Emulator_PLC\Emulator_PLC.csproj", "{C8371A98-310A-4C78-BD07-40BD3878B90A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C8371A98-310A-4C78-BD07-40BD3878B90A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C8371A98-310A-4C78-BD07-40BD3878B90A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C8371A98-310A-4C78-BD07-40BD3878B90A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C8371A98-310A-4C78-BD07-40BD3878B90A}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {60258DA6-5CEE-4C96-9ED0-071FF3B75697} + EndGlobalSection +EndGlobal diff --git a/QRValidation/Test/Emulator_PLC/Emulator_PLC/App.config b/QRValidation/Test/Emulator_PLC/Emulator_PLC/App.config new file mode 100644 index 0000000..8e15646 --- /dev/null +++ b/QRValidation/Test/Emulator_PLC/Emulator_PLC/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/QRValidation/Test/Emulator_PLC/Emulator_PLC/Emulator_PLC.csproj b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Emulator_PLC.csproj new file mode 100644 index 0000000..4e44697 --- /dev/null +++ b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Emulator_PLC.csproj @@ -0,0 +1,95 @@ + + + + + Debug + AnyCPU + {C8371A98-310A-4C78-BD07-40BD3878B90A} + WinExe + Emulator_PLC + Emulator_PLC + v4.5 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\Source\Handler\DLL\arControl.Net4.dll + + + ..\..\Source\Handler\DLL\ArLog.Net4.dll + + + ..\..\Source\Handler\DLL\ArSetting.Net4.dll + + + ..\packages\NModbus4.2.1.0\lib\net40\NModbus4.dll + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + \ No newline at end of file diff --git a/QRValidation/Test/Emulator_PLC/Emulator_PLC/Form1.Designer.cs b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Form1.Designer.cs new file mode 100644 index 0000000..6f24071 --- /dev/null +++ b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Form1.Designer.cs @@ -0,0 +1,48 @@ +namespace Emulator_PLC +{ + partial class Form1 + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Name = "Form1"; + this.Text = "Form1"; + this.Load += new System.EventHandler(this.Form1_Load); + this.ResumeLayout(false); + + } + + #endregion + } +} + diff --git a/QRValidation/Test/Emulator_PLC/Emulator_PLC/Form1.cs b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Form1.cs new file mode 100644 index 0000000..455e74e --- /dev/null +++ b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Form1.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Net.Sockets; +using System.Net; + +namespace Emulator_PLC +{ + public partial class Form1 : Form + { + Modbus.Device.ModbusTcpSlave slave; + TcpListener listener; + public Form1() + { + InitializeComponent(); + } + + private void Form1_Load(object sender, EventArgs e) + { + listener = new TcpListener(IPAddress.Any, 502); //modebus tcp + listener.Start(); + + byte devid = 0; + slave = Modbus.Device.ModbusTcpSlave.CreateTcp(devid,listener); + slave.Listen(); + slave.ModbusSlaveRequestReceived += Slave_ModbusSlaveRequestReceived; + slave.WriteComplete += Slave_WriteComplete; + + } + + private void Slave_WriteComplete(object sender, Modbus.Device.ModbusSlaveRequestEventArgs e) + { + //throw new NotImplementedException(); + } + + private void Slave_ModbusSlaveRequestReceived(object sender, Modbus.Device.ModbusSlaveRequestEventArgs e) + { + //throw new NotImplementedException(); + } + } +} diff --git a/QRValidation/Test/Emulator_PLC/Emulator_PLC/Form1.resx b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Form1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/QRValidation/Test/Emulator_PLC/Emulator_PLC/Program.cs b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Program.cs new file mode 100644 index 0000000..889c9e2 --- /dev/null +++ b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Emulator_PLC +{ + static class Program + { + /// + /// 해당 응용 프로그램의 주 진입점입니다. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/QRValidation/Test/Emulator_PLC/Emulator_PLC/Properties/AssemblyInfo.cs b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c23f741 --- /dev/null +++ b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 +// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 +// 이러한 특성 값을 변경하세요. +[assembly: AssemblyTitle("Emulator_PLC")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Emulator_PLC")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("c8371a98-310a-4c78-bd07-40bd3878b90a")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로 +// 지정되도록 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/QRValidation/Test/Emulator_PLC/Emulator_PLC/Properties/Resources.Designer.cs b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Properties/Resources.Designer.cs new file mode 100644 index 0000000..02b1de3 --- /dev/null +++ b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace Emulator_PLC.Properties +{ + + + /// + /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. + /// + // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder + // 클래스에서 자동으로 생성되었습니다. + // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 + // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.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 ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Emulator_PLC.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; + } + } + } +} diff --git a/QRValidation/Test/Emulator_PLC/Emulator_PLC/Properties/Resources.resx b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/QRValidation/Test/Emulator_PLC/Emulator_PLC/Properties/Settings.Designer.cs b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Properties/Settings.Designer.cs new file mode 100644 index 0000000..88ff8f3 --- /dev/null +++ b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 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 Emulator_PLC.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/QRValidation/Test/Emulator_PLC/Emulator_PLC/Properties/Settings.settings b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/QRValidation/Test/Emulator_PLC/Emulator_PLC/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/QRValidation/Test/Emulator_PLC/Emulator_PLC/packages.config b/QRValidation/Test/Emulator_PLC/Emulator_PLC/packages.config new file mode 100644 index 0000000..2fab4ac --- /dev/null +++ b/QRValidation/Test/Emulator_PLC/Emulator_PLC/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/QRValidation/Test/Test_AzinMotion/App.config b/QRValidation/Test/Test_AzinMotion/App.config new file mode 100644 index 0000000..8e15646 --- /dev/null +++ b/QRValidation/Test/Test_AzinMotion/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/QRValidation/Test/Test_AzinMotion/Form1.Designer.cs b/QRValidation/Test/Test_AzinMotion/Form1.Designer.cs new file mode 100644 index 0000000..a8050db --- /dev/null +++ b/QRValidation/Test/Test_AzinMotion/Form1.Designer.cs @@ -0,0 +1,314 @@ +namespace Test_AzinMotion +{ + partial class Form1 + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + arDev.AzinAxt.ColorListItem colorListItem1 = new arDev.AzinAxt.ColorListItem(); + arDev.AzinAxt.ColorListItem colorListItem2 = new arDev.AzinAxt.ColorListItem(); + arDev.AzinAxt.ColorListItem colorListItem3 = new arDev.AzinAxt.ColorListItem(); + arDev.AzinAxt.ColorListItem colorListItem4 = new arDev.AzinAxt.ColorListItem(); + arDev.AzinAxt.ColorListItem colorListItem5 = new arDev.AzinAxt.ColorListItem(); + arDev.AzinAxt.ColorListItem colorListItem6 = new arDev.AzinAxt.ColorListItem(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.lbInit = new System.Windows.Forms.ToolStripStatusLabel(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.emulatorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.logTextBox1 = new arCtl.LogTextBox(); + this.tmDisplay = new System.Windows.Forms.Timer(this.components); + this.panel1 = new System.Windows.Forms.Panel(); + this.tblFG = new arDev.AzinAxt.GridView(); + this.jogController1 = new arDev.AzinAxt.JogController(); + this.statusStrip1.SuspendLayout(); + this.menuStrip1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.lbInit}); + this.statusStrip1.Location = new System.Drawing.Point(0, 375); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(927, 22); + this.statusStrip1.TabIndex = 0; + this.statusStrip1.Text = "statusStrip1"; + // + // lbInit + // + this.lbInit.Name = "lbInit"; + this.lbInit.Size = new System.Drawing.Size(75, 17); + this.lbInit.Text = "{motion init}"; + // + // menuStrip1 + // + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.emulatorToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(927, 24); + this.menuStrip1.TabIndex = 1; + this.menuStrip1.Text = "menuStrip1"; + // + // emulatorToolStripMenuItem + // + this.emulatorToolStripMenuItem.Name = "emulatorToolStripMenuItem"; + this.emulatorToolStripMenuItem.Size = new System.Drawing.Size(67, 20); + this.emulatorToolStripMenuItem.Text = "Emulator"; + this.emulatorToolStripMenuItem.Click += new System.EventHandler(this.emulatorToolStripMenuItem_Click); + // + // logTextBox1 + // + this.logTextBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(24)))), ((int)(((byte)(24))))); + this.logTextBox1.ColorList = new arCtl.sLogMessageColor[0]; + this.logTextBox1.DateFormat = ":mm:ss.fff"; + this.logTextBox1.DefaultColor = System.Drawing.Color.LightGray; + this.logTextBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.logTextBox1.EnableDisplayTimer = false; + this.logTextBox1.EnableGubunColor = true; + this.logTextBox1.Font = new System.Drawing.Font("Consolas", 9F); + this.logTextBox1.ListFormat = "[{0}] {1}"; + this.logTextBox1.Location = new System.Drawing.Point(0, 171); + this.logTextBox1.MaxListCount = ((ushort)(200)); + this.logTextBox1.MaxTextLength = ((uint)(4000u)); + this.logTextBox1.MessageInterval = 50; + this.logTextBox1.Name = "logTextBox1"; + this.logTextBox1.Size = new System.Drawing.Size(927, 204); + this.logTextBox1.TabIndex = 2; + this.logTextBox1.Text = ""; + // + // tmDisplay + // + this.tmDisplay.Interval = 200; + this.tmDisplay.Tick += new System.EventHandler(this.tmDisplay_Tick); + // + // panel1 + // + this.panel1.Controls.Add(this.tblFG); + this.panel1.Controls.Add(this.jogController1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(0, 24); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(927, 147); + this.panel1.TabIndex = 37; + // + // tblFG + // + this.tblFG.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120))))); + this.tblFG.BorderSize = 1; + colorListItem1.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(210)))), ((int)(((byte)(210)))), ((int)(((byte)(210))))); + colorListItem1.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(230)))), ((int)(((byte)(230))))); + colorListItem1.Remark = "title"; + colorListItem2.BackColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(160)))), ((int)(((byte)(160)))), ((int)(((byte)(160))))); + colorListItem2.BackColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + colorListItem2.Remark = "gray"; + colorListItem3.BackColor1 = System.Drawing.Color.Orange; + colorListItem3.BackColor2 = System.Drawing.Color.DarkOrange; + colorListItem3.Remark = "orange"; + colorListItem4.BackColor1 = System.Drawing.Color.Green; + colorListItem4.BackColor2 = System.Drawing.Color.ForestGreen; + colorListItem4.Remark = "green"; + colorListItem5.BackColor1 = System.Drawing.Color.Red; + colorListItem5.BackColor2 = System.Drawing.Color.Tomato; + colorListItem5.Remark = "red"; + colorListItem6.BackColor1 = System.Drawing.Color.SkyBlue; + colorListItem6.BackColor2 = System.Drawing.Color.DeepSkyBlue; + colorListItem6.Remark = "blue"; + this.tblFG.ColorList = new arDev.AzinAxt.ColorListItem[] { + colorListItem1, + colorListItem2, + colorListItem3, + colorListItem4, + colorListItem5, + colorListItem6}; + this.tblFG.Cursor = System.Windows.Forms.Cursors.Arrow; + this.tblFG.Dock = System.Windows.Forms.DockStyle.Fill; + this.tblFG.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tblFG.FontPin = new System.Drawing.Font("Consolas", 6.75F); + this.tblFG.ForeColor = System.Drawing.Color.Black; + this.tblFG.ForeColorPin = System.Drawing.Color.WhiteSmoke; + this.tblFG.Location = new System.Drawing.Point(0, 0); + this.tblFG.MatrixSize = new System.Drawing.Point(9, 7); + this.tblFG.MenuBorderSize = 1; + this.tblFG.MenuGap = 5; + this.tblFG.MinimumSize = new System.Drawing.Size(100, 50); + this.tblFG.Name = "tblFG"; + this.tblFG.Names = null; + this.tblFG.ShadowColor = System.Drawing.Color.White; + this.tblFG.showDebugInfo = false; + this.tblFG.ShowIndexString = true; + this.tblFG.Size = new System.Drawing.Size(718, 147); + this.tblFG.TabIndex = 35; + this.tblFG.Tags = null; + this.tblFG.Text = "gridView1"; + this.tblFG.TextAttachToImage = true; + this.tblFG.Titles = new string[] { + "Axis|CMD|ACT|ORG|-|+|INP|ALM|HOME.SET", + "[0] Axis||||||||", + "[1] Axis||||||||", + "[2] Axis||||||||", + "[3] Axis||||||||", + "[4] Axis||||||||", + "[5] Axis||||||||"}; + this.tblFG.Values = new ushort[] { + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(1)), + ((ushort)(2)), + ((ushort)(3)), + ((ushort)(4)), + ((ushort)(5)), + ((ushort)(6)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0)), + ((ushort)(0))}; + this.tblFG.ItemClick += new System.EventHandler(this.tblFG_ItemClick); + // + // jogController1 + // + this.jogController1.arAutoUpdate = false; + this.jogController1.arAxis = 0; + this.jogController1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.jogController1.arBorderColor = System.Drawing.Color.Transparent; + this.jogController1.ardAct = 0D; + this.jogController1.arDebugMode = false; + this.jogController1.Dock = System.Windows.Forms.DockStyle.Right; + this.jogController1.Font = new System.Drawing.Font("Consolas", 10F, System.Drawing.FontStyle.Bold); + this.jogController1.arIsAlm = false; + this.jogController1.arIsHSet = false; + this.jogController1.arIsInit = false; + this.jogController1.arIsInp = false; + this.jogController1.arIsLimN = false; + this.jogController1.arIsLimP = false; + this.jogController1.arIsOrg = false; + this.jogController1.arIsSvON = false; + this.jogController1.Location = new System.Drawing.Point(718, 0); + this.jogController1.arMaxLength = 400; + this.jogController1.arMinLength = -10; + this.jogController1.Name = "jogController1"; + this.jogController1.arBottomSensorFont = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold); + this.jogController1.arBottomSensorHeight = 35; + this.jogController1.arShowJogButton = true; + this.jogController1.arShowPositionBar = true; + this.jogController1.arShowSensor = true; + this.jogController1.arShowTitleBar = true; + this.jogController1.Size = new System.Drawing.Size(209, 147); + this.jogController1.TabIndex = 36; + this.jogController1.Text = "jogController1"; + this.jogController1.arUpdateInterval = ((ushort)(200)); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(927, 397); + this.Controls.Add(this.logTextBox1); + this.Controls.Add(this.panel1); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.menuStrip1); + this.MainMenuStrip = this.menuStrip1; + this.Name = "Form1"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Form1"; + this.Load += new System.EventHandler(this.Form1_Load); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem emulatorToolStripMenuItem; + private arCtl.LogTextBox logTextBox1; + private arDev.AzinAxt.GridView tblFG; + private System.Windows.Forms.Timer tmDisplay; + private System.Windows.Forms.ToolStripStatusLabel lbInit; + private arDev.AzinAxt.JogController jogController1; + private System.Windows.Forms.Panel panel1; + } +} + diff --git a/QRValidation/Test/Test_AzinMotion/Form1.cs b/QRValidation/Test/Test_AzinMotion/Form1.cs new file mode 100644 index 0000000..bc33885 --- /dev/null +++ b/QRValidation/Test/Test_AzinMotion/Form1.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Test_AzinMotion +{ + public partial class Form1 : Form + { + arDev.AzinAxt.MOT mot; + arUtil.Log log; + Setting setting; + public Form1() + { + InitializeComponent(); + mot = new arDev.AzinAxt.MOT(); + mot.Init(); + + log = new arUtil.Log(); + setting = new Setting(); + setting.Load(); + + log.RaiseMsg += Log_RaiseMsg; + this.FormClosed += Form1_FormClosed; + } + + private void Form1_FormClosed(object sender, FormClosedEventArgs e) + { + log.Flush(); + mot.Dispose(); + } + + private void Log_RaiseMsg(DateTime LogTime, string TypeStr, string Message) + { + this.logTextBox1.AddMsg(LogTime, TypeStr, Message); + } + + private void Form1_Load(object sender, EventArgs e) + { + log.Add("프로그램 시작"); + if (mot.IsInit == false) log.AddE("모션 초기화 실패(" + mot.errorMessage + ")"); + else log.Add("모션 초기화 성공"); + this.jogController1.MotionObject = mot; + this.jogController1.arAxis = 0; + tmDisplay.Start(); + tblFG.setItemEnable(true); + } + + private void emulatorToolStripMenuItem_Click(object sender, EventArgs e) + { + var f = new arDev.AzinAxt.Emulator.fEmulatorM(5, this.mot); + mot.Emulator(f.devM); + f.Show(); + } + + private void tmDisplay_Tick(object sender, EventArgs e) + { + lbInit.Text = mot.IsInit ? "Init:OK" : "Init:Error(" + mot.errorMessage + ")"; + lbInit.ForeColor = mot.IsInit ? Color.Black : Color.Red; + jogController1.UpdateInfo(); + jogController1.Invalidate(); + if (mot.IsInit == false) + { + //if (this.tblFG.Enabled == true) tblFG.Enabled = false; + } + else + { + //if (tblFG.Enabled == false) tblFG.Enabled = true; + + //각축별 기본 상태를 표시해준다. + for (int axis = 0; axis < 5; axis++) + { + this.tblFG.setValue(axis + 1, 0, mot.isSERVOON[axis] ? "title" : "orange"); + this.tblFG.setTitle(axis + 1, 1, string.Format("{0}mm", mot.dCMDPOS[axis])); + this.tblFG.setTitle(axis + 1, 2, string.Format("{0}mm", mot.dACTPOS[axis])); + this.tblFG.setValue(axis + 1, 3, mot.isOrg[axis] ? "blue" : "gray"); //MotStatus_Home[axis].BackColor = Pub.mot.isOrg[axis] ? Color.Lime : sbBackColor; + this.tblFG.setValue(axis + 1, 4, mot.isLimitN[axis] ? "red" : "gray"); //MotStatus_NLIM[axis].BackColor = Pub.mot.isLimitN[axis] ? Color.Red : sbBackColor; + this.tblFG.setValue(axis + 1, 5, mot.isLimitP[axis] ? "red" : "gray"); //MotStatus_PLIM[axis].BackColor = Pub.mot.isLimitP[axis] ? Color.Red : sbBackColor; + this.tblFG.setValue(axis + 1, 6, mot.isINP[axis] ? "blue" : "gray"); //MotStatus_INP[axis].BackColor = Pub.mot.isINP[axis] ? Color.Lime : sbBackColor; + this.tblFG.setValue(axis + 1, 7, mot.isSERVOAlarm[axis] ? "red" : "gray"); //MotStatus_ALM[axis].BackColor = Pub.mot.isSERVOAlarm[axis] ? Color.Lime : sbBackColor; + this.tblFG.setValue(axis + 1, 8, mot.isHomeSet[axis] ? "green" : "gray"); //MotStatus_SVON[axis].BackColor = Pub.mot.isHomeSet[axis] ? Color.Lime : Color.Magenta; + } + } + this.tblFG.Invalidate(); + } + + private void tblFG_ItemClick(object sender, arDev.AzinAxt.GridView.ItemClickEventArgs e) + { + if(e.Item.row > 0) + { + jogController1.arAxis = e.Item.row - 1; + jogController1.Invalidate(); + } + } + } +} diff --git a/QRValidation/Test/Test_AzinMotion/Form1.resx b/QRValidation/Test/Test_AzinMotion/Form1.resx new file mode 100644 index 0000000..0d0f7d9 --- /dev/null +++ b/QRValidation/Test/Test_AzinMotion/Form1.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + + 134, 17 + + + 250, 17 + + \ No newline at end of file diff --git a/QRValidation/Test/Test_AzinMotion/Program.cs b/QRValidation/Test/Test_AzinMotion/Program.cs new file mode 100644 index 0000000..988648d --- /dev/null +++ b/QRValidation/Test/Test_AzinMotion/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Test_AzinMotion +{ + static class Program + { + /// + /// 해당 응용 프로그램의 주 진입점입니다. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/QRValidation/Test/Test_AzinMotion/Properties/AssemblyInfo.cs b/QRValidation/Test/Test_AzinMotion/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1cbb98a --- /dev/null +++ b/QRValidation/Test/Test_AzinMotion/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 +// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 +// 이러한 특성 값을 변경하세요. +[assembly: AssemblyTitle("Test_AzinMotion")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Test_AzinMotion")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("5709c3ec-eb33-4fd7-a933-e0ce173de61f")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로 +// 지정되도록 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/QRValidation/Test/Test_AzinMotion/Properties/Resources.Designer.cs b/QRValidation/Test/Test_AzinMotion/Properties/Resources.Designer.cs new file mode 100644 index 0000000..16ebe4d --- /dev/null +++ b/QRValidation/Test/Test_AzinMotion/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace Test_AzinMotion.Properties +{ + + + /// + /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. + /// + // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder + // 클래스에서 자동으로 생성되었습니다. + // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 + // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.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 ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Test_AzinMotion.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; + } + } + } +} diff --git a/QRValidation/Test/Test_AzinMotion/Properties/Resources.resx b/QRValidation/Test/Test_AzinMotion/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/QRValidation/Test/Test_AzinMotion/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/QRValidation/Test/Test_AzinMotion/Properties/Settings.Designer.cs b/QRValidation/Test/Test_AzinMotion/Properties/Settings.Designer.cs new file mode 100644 index 0000000..beba929 --- /dev/null +++ b/QRValidation/Test/Test_AzinMotion/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 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 Test_AzinMotion.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/QRValidation/Test/Test_AzinMotion/Properties/Settings.settings b/QRValidation/Test/Test_AzinMotion/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/QRValidation/Test/Test_AzinMotion/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/QRValidation/Test/Test_AzinMotion/Setting.cs b/QRValidation/Test/Test_AzinMotion/Setting.cs new file mode 100644 index 0000000..922aaea --- /dev/null +++ b/QRValidation/Test/Test_AzinMotion/Setting.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Test_AzinMotion +{ + public class Setting : arUtil.Setting + { + public override void AfterLoad() + { + //throw new NotImplementedException();// + } + public override void AfterSave() + { + //throw new NotImplementedException(); + } + } +} diff --git a/QRValidation/Test/Test_AzinMotion/Test_AzinMotion.csproj b/QRValidation/Test/Test_AzinMotion/Test_AzinMotion.csproj new file mode 100644 index 0000000..cbc7c22 --- /dev/null +++ b/QRValidation/Test/Test_AzinMotion/Test_AzinMotion.csproj @@ -0,0 +1,99 @@ + + + + + Debug + AnyCPU + {5709C3EC-EB33-4FD7-A933-E0CE173DE61F} + WinExe + Test_AzinMotion + Test_AzinMotion + v4.5 + 512 + true + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\DLL\ArLog.Net4.dll + + + ..\DLL\ArSetting.Net4.dll + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + {4f457e76-bf83-4b98-8565-ae87d7d16744} + arAzinAxt + + + {f31c242c-1b15-4518-9733-48558499fe4b} + arControl + + + + \ No newline at end of file diff --git a/QRValidation/Test/Test_IOPanel/Program.cs b/QRValidation/Test/Test_IOPanel/Program.cs new file mode 100644 index 0000000..9e43de8 --- /dev/null +++ b/QRValidation/Test/Test_IOPanel/Program.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace Test_IOPanel +{ + static class Program + { + /// + /// 해당 응용 프로그램의 주 진입점입니다. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new fIOMonitor()); + } + } +} diff --git a/QRValidation/Test/Test_IOPanel/Properties/AssemblyInfo.cs b/QRValidation/Test/Test_IOPanel/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..0c7ba4c --- /dev/null +++ b/QRValidation/Test/Test_IOPanel/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다. +// 어셈블리와 관련된 정보를 수정하려면 +// 이 특성 값을 변경하십시오. +[assembly: AssemblyTitle("Test_IOPanel")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Test_IOPanel")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("8244ffd3-0ef5-4619-9f90-86eb6a84284e")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로 +// 지정되도록 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/QRValidation/Test/Test_IOPanel/Properties/Resources.Designer.cs b/QRValidation/Test/Test_IOPanel/Properties/Resources.Designer.cs new file mode 100644 index 0000000..8c70256 --- /dev/null +++ b/QRValidation/Test/Test_IOPanel/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace Test_IOPanel.Properties +{ + + + /// + /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. + /// + // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder + // 클래스에서 자동으로 생성되었습니다. + // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 + // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.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 ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Test_IOPanel.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; + } + } + } +} diff --git a/QRValidation/Test/Test_IOPanel/Properties/Resources.resx b/QRValidation/Test/Test_IOPanel/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/QRValidation/Test/Test_IOPanel/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/QRValidation/Test/Test_IOPanel/Properties/Settings.Designer.cs b/QRValidation/Test/Test_IOPanel/Properties/Settings.Designer.cs new file mode 100644 index 0000000..f78da3c --- /dev/null +++ b/QRValidation/Test/Test_IOPanel/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 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 Test_IOPanel.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/QRValidation/Test/Test_IOPanel/Properties/Settings.settings b/QRValidation/Test/Test_IOPanel/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/QRValidation/Test/Test_IOPanel/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/QRValidation/Test/Test_IOPanel/Test_IOPanel.csproj b/QRValidation/Test/Test_IOPanel/Test_IOPanel.csproj new file mode 100644 index 0000000..6c03846 --- /dev/null +++ b/QRValidation/Test/Test_IOPanel/Test_IOPanel.csproj @@ -0,0 +1,85 @@ + + + + + Debug + AnyCPU + {0029978E-035A-42D4-8489-CC8600BCB2F6} + WinExe + Properties + Test_IOPanel + Test_IOPanel + v4.0 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + Form + + + fIOMonitor.cs + + + + + fIOMonitor.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + \ No newline at end of file diff --git a/QRValidation/Test/Test_IOPanel/fIOMonitor.Designer.cs b/QRValidation/Test/Test_IOPanel/fIOMonitor.Designer.cs new file mode 100644 index 0000000..8e5027b --- /dev/null +++ b/QRValidation/Test/Test_IOPanel/fIOMonitor.Designer.cs @@ -0,0 +1,180 @@ +namespace Test_IOPanel +{ + partial class fIOMonitor + { + /// + /// 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.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.tblDI = new System.Windows.Forms.TableLayoutPanel(); + this.label1 = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.tblDO = new System.Windows.Forms.TableLayoutPanel(); + this.label4 = new System.Windows.Forms.Label(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 1); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(984, 761); + this.tableLayoutPanel1.TabIndex = 0; + // + // panel2 + // + this.panel2.BackColor = System.Drawing.Color.White; + this.panel2.Controls.Add(this.tblDI); + this.panel2.Controls.Add(this.label1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(3, 3); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(978, 374); + this.panel2.TabIndex = 1; + // + // tblDI + // + this.tblDI.ColumnCount = 6; + this.tblDI.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tblDI.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tblDI.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tblDI.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tblDI.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tblDI.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tblDI.Dock = System.Windows.Forms.DockStyle.Fill; + this.tblDI.Location = new System.Drawing.Point(0, 23); + this.tblDI.Name = "tblDI"; + this.tblDI.RowCount = 8; + this.tblDI.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDI.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDI.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDI.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDI.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDI.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDI.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDI.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDI.Size = new System.Drawing.Size(978, 351); + this.tblDI.TabIndex = 1; + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + this.label1.Dock = System.Windows.Forms.DockStyle.Top; + this.label1.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(978, 23); + this.label1.TabIndex = 0; + this.label1.Text = "Digital Input"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.White; + this.panel1.Controls.Add(this.tblDO); + this.panel1.Controls.Add(this.label4); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(3, 383); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(978, 375); + this.panel1.TabIndex = 0; + // + // tblDO + // + this.tblDO.ColumnCount = 6; + this.tblDO.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tblDO.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tblDO.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tblDO.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tblDO.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tblDO.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66667F)); + this.tblDO.Dock = System.Windows.Forms.DockStyle.Fill; + this.tblDO.Location = new System.Drawing.Point(0, 23); + this.tblDO.Name = "tblDO"; + this.tblDO.RowCount = 8; + this.tblDO.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDO.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDO.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDO.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDO.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDO.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDO.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDO.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.tblDO.Size = new System.Drawing.Size(978, 352); + this.tblDO.TabIndex = 1; + // + // label4 + // + this.label4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + this.label4.Dock = System.Windows.Forms.DockStyle.Top; + this.label4.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.label4.Location = new System.Drawing.Point(0, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(978, 23); + this.label4.TabIndex = 1; + this.label4.Text = "Digital Output"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // fIOMonitor + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(984, 761); + this.Controls.Add(this.tableLayoutPanel1); + this.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.Name = "fIOMonitor"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "fIOMonitor"; + this.Load += new System.EventHandler(this.fIOMonitor_Load); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TableLayoutPanel tblDI; + private System.Windows.Forms.TableLayoutPanel tblDO; + } +} \ No newline at end of file diff --git a/QRValidation/Test/Test_IOPanel/fIOMonitor.cs b/QRValidation/Test/Test_IOPanel/fIOMonitor.cs new file mode 100644 index 0000000..fa25ee0 --- /dev/null +++ b/QRValidation/Test/Test_IOPanel/fIOMonitor.cs @@ -0,0 +1,158 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Test_IOPanel +{ + /// + /// I/O창에 표시되는 핀 이름 + /// + enum eDIName + { + SW_START, STOP, RESET, AIR, DOOR ,EMERGENCY, SPARE06, SPARE07, + MGZ_LOAD_IN, MGZ_LOAD_LIMIT, MGZ_HOLD1, MGZ_HOLD2, MGZ_CLAMP_OPEN, MGZ_CLAMP_CLOSE, SPARE14, SPARE15, + PCB_PICKER_OVERLOAD, PUSHER_LIMIT1, PUSHER_LIMIT2, GRIPER_OPEN, GRIPER_CLOSE, GRIP_DETECT, PCB_DETECT, SPARE23, + PCB_PUSHER_OVERLOAD, PUSH_OPEN, PUSH_CLOSE, MGZ_SAFTY, SPARE28, SPARE29, SPARE30, SPARE31, + SPARE32, SPARE33, SPARE34, SPARE35, SPARE36, SPARE37, SPARE38, SPARE39, + SPARE40, SPARE41, SPARE42, SPARE43, SPARE44, SPARE45, SPARE46, SPARE47, + } + /// + /// 실제 작업시사용하는 이름 + /// + enum eDIPin + { + X00, X01, X02, X03, X04, X05, X06, X07, + X08, X09, X0A, X0B, X0C, X0D, X0E, X0F, + X10, X11, X12, X13, X14, X15, X16, X17, + X18, X19, X1A, X1B, X1C, X1D, X1E, X1F, + X20, X21, X22, X23, X24, X25, X26, X27, + X28, X29, X2A, X2B, X2C, X2D, X2E, X2F + } + + enum eDOName + { + LED_START, LED_STOP, LED_RESET, LED_AIR, LED_INSIDE, SPARE05, SPARE06, SPARE07, + PUSHER, GRIPPER, MGZ_LOADER, MGZ_CLAMP_ON, MGZ_CLAMP_OFF, SPARE13, SPARE14, SPARE15, + TWR_RED, TWR_GRN, TWR_YEL, TWR_BUZZER, SPARE20, SPARE21, SPARE22, SPARE23, + AIR_ON, SPARE25, SPARE26, SPARE27, SPARE28, SPARE29, SPARE30, SPARE31, + SPARE32, SPARE33, SPARE34, SPARE35, SPARE36, SPARE37, SPARE38, SPARE39, + SPARE40, SPARE41, SPARE42, SPARE43, SPARE44, SPARE45, SPARE46, SPARE47, + } + + enum eDOPin + { + Y00, Y01, Y02, Y03, Y04, Y05, Y06, Y07, + Y08, Y09, Y0A, Y0B, Y0C, Y0D, Y0E, Y0F, + Y10, Y11, Y12, Y13, Y14, Y15, Y16, Y17, + Y18, Y19, Y1A, Y1B, Y1C, Y1D, Y1E, Y1F, + Y20, Y21, Y22, Y23, Y24, Y25, Y26, Y27, + Y28, Y29, Y2A, Y2B, Y2C, Y2D, Y2E, Y2F + } + + public partial class fIOMonitor : Form + { + + public fIOMonitor() + { + InitializeComponent(); + //this.WindowState = FormWindowState.Maximized; + + for (int r = 0; r < 8; r++) + { + for (int i = 0; i < 6; i++) + { + var idx = i * 8 + r; + var pinNo = Enum.GetName(typeof(eDIPin), idx); + var pinName = Enum.GetName(typeof(eDIName), idx); + + var but = new Button(); + if (pinName.StartsWith("SPARE")) + { + pinName = "--"; + but.ForeColor = Color.Gray; + } + but.Text = string.Format("[{0}]\n{1}", pinNo, pinName, idx); + but.TextAlign = ContentAlignment.MiddleLeft; + but.Dock = DockStyle.Fill; + but.Font = new System.Drawing.Font("Consolas", 9, FontStyle.Bold); + but.Tag = idx; + but.Click += butI_Click; + this.tblDI.Controls.Add(but); + } + } + + for (int r = 0; r < 8; r++) + { + for (int i = 0; i < 6; i++) + { + var idx = i * 8 + r; + var pinNo = Enum.GetName(typeof(eDOPin), idx); + var pinName = Enum.GetName(typeof(eDOName), idx); + + var but = new Button(); + if (pinName.StartsWith("SPARE")) + { + pinName = "--"; + but.ForeColor = Color.Gray; + } + but.Font = new System.Drawing.Font("Consolas", 9, FontStyle.Bold); + but.Text = string.Format("[{0}]\n{1}", pinNo, pinName, idx); + but.TextAlign = ContentAlignment.MiddleLeft; + but.Dock = DockStyle.Fill; + but.Tag = idx; + but.Click += butO_Click; + this.tblDO.Controls.Add(but); + } + } + } + + private void fIOMonitor_Load(object sender, EventArgs e) + { + + this.Text = "I/O Monitor"; + this.Show(); + Application.DoEvents(); + + for(int i = 0; i < this.tblDI.Controls.Count; i++) + { + var but = tblDI.Controls[i] as Button; + var idx = int.Parse(but.Tag.ToString()); + but.BackColor = Color.Lime; + } + for (int i = 0; i < this.tblDO.Controls.Count; i++) + { + var but = tblDO.Controls[i] as Button; + var idx = int.Parse(but.Tag.ToString()); + but.BackColor = Color.Pink; + } + + + } + + void butI_Click(object sender, EventArgs e) + { + var but = sender as Button; + var idx = int.Parse(but.Tag.ToString()); + //var curvalue = Pub.dio.INPUT(idx); + //Pub.dio.RaiseEvent(arDev.AzinAxt.eIOPINDIR.INPUT, idx, !curvalue); + //Pub.log.AddI("I/O MON : User DI event idx=" + idx.ToString() + ",oldvalue= " + curvalue.ToString()); + } + void butO_Click(object sender, EventArgs e) + { + var but = sender as Button; + var idx = int.Parse(but.Tag.ToString()); + var 몫 = (int)(Math.Floor(idx / 8.0)); + var 나머지 = (idx % 8.0); + var idx2 = 나머지 * 6 + 몫; + Console.WriteLine(string.Format("idx={0}, 몫={1},나머지={2},컨트롤인덱스={3}", idx, 몫, 나머지, idx2)); + //var curvalue = Pub.dio.OUTPUT(idx); + //if (Pub.dio.initOK) Pub.dio.SetOutput(idx, !curvalue); + //else Pub.dio.RaiseEvent(arDev.AzinAxt.eIOPINDIR.OUTPUT, idx, !curvalue); + } + } +} diff --git a/QRValidation/Test/Test_IOPanel/fIOMonitor.resx b/QRValidation/Test/Test_IOPanel/fIOMonitor.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/QRValidation/Test/Test_IOPanel/fIOMonitor.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/QRValidation/Test/Test_Modbus/App.config b/QRValidation/Test/Test_Modbus/App.config new file mode 100644 index 0000000..8e15646 --- /dev/null +++ b/QRValidation/Test/Test_Modbus/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/QRValidation/Test/Test_Modbus/Form1.Designer.cs b/QRValidation/Test/Test_Modbus/Form1.Designer.cs new file mode 100644 index 0000000..f86a1ba --- /dev/null +++ b/QRValidation/Test/Test_Modbus/Form1.Designer.cs @@ -0,0 +1,61 @@ +namespace Test_Modbus +{ + partial class Form1 + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오. + /// + private void InitializeComponent() + { + this.button1 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // button1 + // + this.button1.Location = new System.Drawing.Point(16, 19); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(100, 100); + this.button1.TabIndex = 0; + this.button1.Text = "button1"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(284, 261); + this.Controls.Add(this.button1); + this.Name = "Form1"; + this.Text = "Form1"; + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button button1; + } +} + diff --git a/QRValidation/Test/Test_Modbus/Form1.cs b/QRValidation/Test/Test_Modbus/Form1.cs new file mode 100644 index 0000000..690e968 --- /dev/null +++ b/QRValidation/Test/Test_Modbus/Form1.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Modbus.Device; +using System.Net.Sockets; + +namespace Test_Modbus +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } + + + ModbusIpMaster master; + TcpClient client; + + private void button1_Click(object sender, EventArgs e) + { + client = new TcpClient(); + client.SendTimeout = 2000; + client.ReceiveTimeout = 2000; + client.Connect("192.168.1.90", 502); + + if(client.Connected) + { + master = ModbusIpMaster.CreateIp(client); + master.Transport.ReadTimeout = 2000; + master.Transport.WriteTimeout = 2000; + + var listI = master.ReadInputRegisters(0, 1); + master.WriteSingleRegister(0, 2); + } + + } + } +} diff --git a/QRValidation/Test/Test_Modbus/Form1.resx b/QRValidation/Test/Test_Modbus/Form1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/QRValidation/Test/Test_Modbus/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/QRValidation/Test/Test_Modbus/Program.cs b/QRValidation/Test/Test_Modbus/Program.cs new file mode 100644 index 0000000..08bf574 --- /dev/null +++ b/QRValidation/Test/Test_Modbus/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Test_Modbus +{ + static class Program + { + /// + /// 해당 응용 프로그램의 주 진입점입니다. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/QRValidation/Test/Test_Modbus/Properties/AssemblyInfo.cs b/QRValidation/Test/Test_Modbus/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2a68ce1 --- /dev/null +++ b/QRValidation/Test/Test_Modbus/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 어셈블리의 일반 정보는 다음 특성 집합을 통해 제어됩니다. +// 어셈블리와 관련된 정보를 수정하려면 +// 이 특성 값을 변경하십시오. +[assembly: AssemblyTitle("Test_Modbus")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Test_Modbus")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 +// 해당 형식에 대해 ComVisible 특성을 true로 설정하십시오. +[assembly: ComVisible(false)] + +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. +[assembly: Guid("59f24e25-226b-4802-9dc4-3735da2ad119")] + +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. +// +// 주 버전 +// 부 버전 +// 빌드 번호 +// 수정 버전 +// +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 버전이 자동으로 +// 지정되도록 할 수 있습니다. +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/QRValidation/Test/Test_Modbus/Properties/Resources.Designer.cs b/QRValidation/Test/Test_Modbus/Properties/Resources.Designer.cs new file mode 100644 index 0000000..e29e484 --- /dev/null +++ b/QRValidation/Test/Test_Modbus/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 이 코드는 도구를 사용하여 생성되었습니다. +// 런타임 버전:4.0.30319.42000 +// +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 +// 이러한 변경 내용이 손실됩니다. +// +//------------------------------------------------------------------------------ + +namespace Test_Modbus.Properties +{ + + + /// + /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. + /// + // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder + // 클래스에서 자동으로 생성되었습니다. + // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 + // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.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 ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Test_Modbus.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; + } + } + } +} diff --git a/QRValidation/Test/Test_Modbus/Properties/Resources.resx b/QRValidation/Test/Test_Modbus/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/QRValidation/Test/Test_Modbus/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/QRValidation/Test/Test_Modbus/Properties/Settings.Designer.cs b/QRValidation/Test/Test_Modbus/Properties/Settings.Designer.cs new file mode 100644 index 0000000..0d36581 --- /dev/null +++ b/QRValidation/Test/Test_Modbus/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// 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 Test_Modbus.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/QRValidation/Test/Test_Modbus/Properties/Settings.settings b/QRValidation/Test/Test_Modbus/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/QRValidation/Test/Test_Modbus/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/QRValidation/Test/Test_Modbus/Test_Modbus.csproj b/QRValidation/Test/Test_Modbus/Test_Modbus.csproj new file mode 100644 index 0000000..ec566a8 --- /dev/null +++ b/QRValidation/Test/Test_Modbus/Test_Modbus.csproj @@ -0,0 +1,91 @@ + + + + + Debug + AnyCPU + {A8BB8A5A-A923-430F-9685-8CAD117D2B5A} + WinExe + Properties + Test_Modbus + Test_Modbus + v4.5 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\packages\NModbus4.2.1.0\lib\net40\NModbus4.dll + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + \ No newline at end of file diff --git a/QRValidation/VisionCrevis.sln b/QRValidation/VisionCrevis.sln new file mode 100644 index 0000000..95c77cf --- /dev/null +++ b/QRValidation/VisionCrevis.sln @@ -0,0 +1,71 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Express 15 for Windows Desktop +VisualStudioVersion = 15.0.28307.1000 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisionCrevis_v22", "Project\VisionCrevis_v22.csproj", "{65F3E762-800C-499E-862F-A535642EC500}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sub", "Sub", "{C423C39A-44E7-4F09-B2F7-7943975FF948}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B0C10112-30D8-439E-B951-A41287A343D5}" + ProjectSection(SolutionItems) = preProject + ReadMe.txt = ReadMe.txt + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arImageViewer.EVision_v22", "Sub\arImageViewer.EVision\arImageViewer.EVision_v22.csproj", "{C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {65F3E762-800C-499E-862F-A535642EC500}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {65F3E762-800C-499E-862F-A535642EC500}.Debug|Any CPU.Build.0 = Debug|Any CPU + {65F3E762-800C-499E-862F-A535642EC500}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {65F3E762-800C-499E-862F-A535642EC500}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {65F3E762-800C-499E-862F-A535642EC500}.Debug|x64.ActiveCfg = Debug|Any CPU + {65F3E762-800C-499E-862F-A535642EC500}.Debug|x64.Build.0 = Debug|Any CPU + {65F3E762-800C-499E-862F-A535642EC500}.Debug|x86.ActiveCfg = Debug|x86 + {65F3E762-800C-499E-862F-A535642EC500}.Debug|x86.Build.0 = Debug|x86 + {65F3E762-800C-499E-862F-A535642EC500}.Release|Any CPU.ActiveCfg = Release|Any CPU + {65F3E762-800C-499E-862F-A535642EC500}.Release|Any CPU.Build.0 = Release|Any CPU + {65F3E762-800C-499E-862F-A535642EC500}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {65F3E762-800C-499E-862F-A535642EC500}.Release|Mixed Platforms.Build.0 = Release|x86 + {65F3E762-800C-499E-862F-A535642EC500}.Release|x64.ActiveCfg = Release|Any CPU + {65F3E762-800C-499E-862F-A535642EC500}.Release|x64.Build.0 = Release|Any CPU + {65F3E762-800C-499E-862F-A535642EC500}.Release|x86.ActiveCfg = Release|x86 + {65F3E762-800C-499E-862F-A535642EC500}.Release|x86.Build.0 = Release|x86 + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Debug|x64.ActiveCfg = Debug|Any CPU + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Debug|x64.Build.0 = Debug|Any CPU + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Debug|x86.ActiveCfg = Debug|Any CPU + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Debug|x86.Build.0 = Debug|Any CPU + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Release|Any CPU.Build.0 = Release|Any CPU + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Release|x64.ActiveCfg = Release|Any CPU + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Release|x64.Build.0 = Release|Any CPU + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Release|x86.ActiveCfg = Release|Any CPU + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {C42CD2F4-5ADB-4728-B654-AD9C2E1B22E7} = {C423C39A-44E7-4F09-B2F7-7943975FF948} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B5B1FD72-356F-4840-83E8-B070AC21C8D9} + EndGlobalSection +EndGlobal diff --git a/QRValidation/default_model.csv b/QRValidation/default_model.csv new file mode 100644 index 0000000..b5d9488 --- /dev/null +++ b/QRValidation/default_model.csv @@ -0,0 +1,24 @@ +ver 1 +idx Title pidx MotIndex PosIndex PosTitle Position SpdTitle Speed SpeedAcc Check +1 Default -1 0 -1 0 0 0 False +2 1 0 0 Ready 0 250 400 True +3 1 0 1 FrontPick 45 250 400 True +4 1 0 2 RearPick 487.963 250 400 True +5 1 0 3 FConveyorOff 499.334 250 400 True +6 1 1 0 Ready 0 100 150 True +7 1 1 1 Pick 170 100 150 True +8 1 2 0 Ready 0 100 150 True +9 1 2 1 Pick 166 100 150 True +10 1 3 0 Ready 0 150 400 True +11 1 3 1 LeftIn 0 150 400 True +12 1 3 2 LeftPick 589.029 150 400 True +13 1 3 3 RightIn 577.656 150 400 True +14 1 3 4 RightPick -5.987 150 400 True +15 1 4 0 Ready 0 150 400 True +16 1 4 1 LeftIn 0 150 400 True +17 1 4 2 LeftPick 591.672 150 400 True +18 1 4 3 RightIn 584.861 150 400 True +19 1 4 4 RightPick -12.312 150 400 True +20 1 0 4 RConveyorOff 39.566 250 400 True +21 1 1 2 PickOff 0 100 150 True +22 1 2 2 PickOff 0 100 150 True diff --git a/QRValidation/icons8-iris-scan-80.png b/QRValidation/icons8-iris-scan-80.png new file mode 100644 index 0000000..820ec51 Binary files /dev/null and b/QRValidation/icons8-iris-scan-80.png differ diff --git a/QRValidation/icons8_iris_scan_80_XQd_icon.ico b/QRValidation/icons8_iris_scan_80_XQd_icon.ico new file mode 100644 index 0000000..70c3385 Binary files /dev/null and b/QRValidation/icons8_iris_scan_80_XQd_icon.ico differ